Agent Sandbox 基于 Sandbox 自定义资源(CRD)描述沙箱的期望状态与运行状态。本文介绍 Sandbox 资源各字段的含义、类型和取值说明。
配置示例
以下示例展示了一个包含内联 Pod 模板、runtime sidecar注入和自定义存储卷模板的 Sandbox。
资源信息
项 | 说明 |
API 组和版本(apiVersion) |
|
资源类型(kind) |
|
资源名(plural) |
|
单数名(singular) |
|
简称(shortName) |
|
存储版本(storageVersion) |
|
status 子资源 | 是, |
Sandbox
Sandbox 顶层字段说明如下。
字段 | 类型 | 是否必须 | 说明 |
apiVersion | String | 是 | API 组和版本,取值为 |
kind | String | 是 | 资源类型,固定取值为 |
metadata | ObjectMeta | 否 | 标准的 Kubernetes 对象元数据,例如 |
spec | SandboxSpec | 是 | 沙箱的期望状态,详细字段请参见下文spec。 |
status | SandboxStatus | 否 | 沙箱的实际运行状态,由系统观测并写入,详细字段请参见下文status。 |
spec
沙箱期望状态 spec(SandboxSpec)的字段说明如下。
字段 | 类型 | 是否必须 | 说明 |
paused | Boolean | 否 | 是否休眠沙箱 Pod。默认值为 |
persistentContents | []String | 否 | 唤醒(resume)Pod 时需要保留的内容。暂时仅支持 |
shutdownTime | String | 否 | 删除沙箱的绝对时间,采用 RFC3339 格式。到达该时间后沙箱被删除;若设置为过去的时间,则立即删除。 时间必须携带时区偏移(RFC3339 要求),推荐使用 UTC,例如:2026-07-01T02:30:00Z。 |
runtimes | []RuntimeConfig | 否 | 为沙箱注入的 runtime sidecar 配置,可配置多个。详细字段请参见下文 RuntimeConfig。 |
pauseTime | String | 否 | 自动休眠沙箱的绝对时间,采用 RFC3339 格式。到达该时间后沙箱自动休眠。 时间必须携带时区偏移(RFC3339 要求),推荐使用 UTC,例如:2026-07-01T02:30:00Z。 |
template | PodTemplateSpec | 否 | 内联的 Pod 模板,描述待创建的 Pod。 |
volumeClaimTemplates | []PersistentVolumeClaim | 否 | 为该沙箱创建的 PersistentVolumeClaim(PVC)模板列表。 |
template、volumeClaimTemplates 来自内嵌结构 EmbeddedSandboxTemplate,在 YAML 中平铺到 spec 下。
RuntimeConfig
字段 | 类型 | 是否必须 | 说明 |
name | String | 是 | runtime 类型名称。可选值:
|
status
沙箱运行状态 status(SandboxStatus)的字段说明如下。
status 由系统观测后自动写入,用户无需手动配置。字段 | 类型 | 说明 |
observedGeneration | Integer | 已观测到的最新 |
phase | String | 沙箱当前所处的阶段,取值请参见下文 SandboxPhase。 |
message | String | 人类可读的状态描述信息。 |
conditions | []Condition | 沙箱资源的状态条件列表。每个条件以 |
podInfo | PodInfo | 底层 Pod 的关键信息,详细字段请参见下文 PodInfo。 |
nodeName | String | 沙箱被调度到的节点名称。 |
sandboxIp | String | 分配给沙箱的 IP 地址。 |
updateRevision | String | 根据 |
PodInfo
字段 | 类型 | 说明 |
annotations | map[string]string | Pod 的关键 annotations。 |
labels | map[string]string | Pod 的关键 labels。 |
nodeName | String | Pod 所在的节点名称。 |
podIP | String | Pod 的 IP 地址。 |
podUID | String | Pod 的 UID。 |
枚举值说明
SandboxPhase
沙箱阶段 status.phase 的取值含义如下。
取值 | 说明 |
Pending | Pod 已被系统接受,但仍有容器未启动(例如正在拉取镜像或绑定节点)。 |
Running | Pod 已绑定到节点,所有容器均已启动;至少一个容器正在运行或处于重启过程中。 |
Paused | 沙箱已触发休眠,休眠成功与否需结合 SandboxPaused Condition判断。 |
Resuming | 沙箱正在唤醒,唤醒成功与否需结合SandboxResumed Condition判断。 |
Upgrading | 沙箱正在通过 SandboxUpdateOps 重建升级,升级成功与否需结合Upgrading Condition判断。 |
Succeeded | Pod 内所有容器均以退出码 0 主动终止,且系统不会再重启这些容器。 |
Failed | Pod 内所有容器均已终止,且至少一个容器以非 0 退出码终止或被系统终止。 |
Terminating | 沙箱删除后正在执行清理。 |
SandboxConditionType
状态条件 status.conditions[].type 的取值含义如下。
各 Condition 的 Status 取 True 为成功,False 为失败。
取值 | 说明 |
Ready | 沙箱已具备正常服务能力,关联容器均已就绪(Ready)。 |
SandboxPaused | 沙箱休眠的执行结果;成功时所有容器均已休眠。 |
SandboxResumed | 沙箱唤醒的执行结果。 |
InplaceUpdate | 原地更新状态。 |
Upgrading | 升级流程状态。 |
RuntimeInitialized | 沙箱内的 agent-runtime 已完成初始化(首次初始化,或在唤醒、重建、升级、动态挂载后重新初始化)。 |
Condition 的取值为上表中的字符串,部分取值与源码常量名不完全一致(例如休眠对应 SandboxPaused、唤醒对应 SandboxResumed),请以取值字符串为准。
PersistentContents 可选值
唤醒时保留内容 spec.persistentContents 的可选值如下。
取值 | 说明 |
filesystem | 唤醒时保留文件系统。 |
Sandbox Label
Key | 说明 |
| 沙箱是否已被业务分配(claim)。 |
| 沙箱所属预热池的名称,SandboxSet 通过该 Label 管理同池沙箱。 |
| 沙箱所引用的 SandboxTemplate 名称,SandboxUpdateOps 通过该 Label 选择目标沙箱。 |
kubectl get命令输出
执行 kubectl get sandbox(或 kubectl get sbx)时,默认显示以下列。
列名 | JSONPath | 说明 |
NAME |
| 沙箱名称。 |
STATUS |
| 沙箱当前阶段。 |
AGE |
| 自沙箱创建以来的时长。 |
CLAIMED |
| 沙箱是否已被业务分配。 |
SHUTDOWN_TIME |
| 删除沙箱的绝对时间。 |
PAUSE_TIME |
| 自动休眠沙箱的绝对时间。 |
MESSAGE |
| 状态描述信息。 |