ack-agent-sandbox-controller

更新时间:
复制 MD 格式

ack-agent-sandbox-controller 是一个基于 Kubernetes 的扩展组件,旨在提供标准化、产品化的 Sandbox 生命周期管理能力。本文介绍 ack-agent-sandbox-controller 组件的基本信息、使用说明和变更记录。

组件介绍

ack-agent-sandbox-controller 覆盖 Sandbox 从创建到销毁的完整生命周期管理,核心能力包括:Sandbox 的创建、休眠、唤醒与升级;基于 SandboxSet 的批量管理与预热池;通过 SandboxClaim 认领已预热的 Sandbox;以及 SandboxUpdateOps 驱动的原地/重建式版本升级。

使用说明

关于 ACS Agent Sandbox 的使用方式,请参见创建Agent Sandbox

变更记录

202608

版本号

变更时间

变更内容

变更影响

v0.6.4-release.1

20260820

  • 功能特性:

    • 【重要】Sandbox 暂停策略可配置化(PauseStrategy):新增 spec.pauseStrategy 字段,支持 Stop(直接删除 Pod,仅 PVC 数据保留)与 Hibernate(休眠前保存 rootfs/内存等状态,存储介质由 hibernateStrategy.type=Snapshot 指定)两种暂停机制,替代此前固定的休眠实现。

    • 【重要】SandboxUpdateOps 支持升级 Paused 状态的 Sandbox:新增 spec.stateFilter.states 字段(默认 [Running]),可将 Paused 纳入升级候选;升级 Paused Sandbox 时会先唤醒再执行升级(重建 Pod),升级完成后按 spec.paused 语义自动恢复到 Paused 或 Running。

    • 【重要】controller ↔ agent-runtime 全链路 TLS:新增 --runtime-client-cert-dir 参数,配置后 controller 通过 mTLS/HTTPS 访问 agent-runtime,覆盖 SandboxClaim claim、Pod /init、CSI 动态挂载等链路;未配置时保持原有明文访问方式,向后兼容。

    • 【重要】运行时组件拆分及大量优化: 业务容器不再需要root用户运行;业务容器不再透出CSI socket挂载路径;agent-runtime支持mTLS认证;envd升级为native-tag-2026.22(对齐社区版)。

    • Security Token 下发链路优化:Security Token 通过已解析的 runtime 传输通道下发,并在下发成功后清理 Sandbox 内失效的旧 Token 文件,避免陈旧凭证残留。

    • 存储鉴权扩展支持 NAS(AgenticFS)场景:基于 agent-identity(RRSA)的存储鉴权能力从 OSS 扩展到 NAS 挂载,支持 STS 临时凭据刷新。

    • 子目录自主创建NAS(AgenticFS)(挂载NAS远端子目录时,若子目录不存在则自动创建,依赖volume: nas-subpath-dir)。

    • Sandbox Ready Condition 反映 Pod 调度失败:Pod 调度失败时会同步到 Sandbox 的 Ready Condition,便于用户直接从 Sandbox 状态定位调度问题,无需查看 Pod Event。

    • Checkpoint 支持基于标签选择与克隆场景:Checkpoint 新增可选择的标签标记,便于按 checkpoint 克隆 Sandbox 时进行筛选。

    • SandboxClaim 支持 claim 时传播自定义 annotations 到 Pod Template(经黑名单过滤内部保留 key)。

    • Sandbox 生命周期链路 Tracing 支持:controller 与 sandbox-manager 新增分布式 Tracing 埋点,便于端到端排查创建/暂停/唤醒/升级链路耗时。

    • 优化沙箱删除速度:沙箱finalizer不再默认添加, 仅在休眠等需要场景添加。

  • 问题修复:

    • 拒绝接管遗留同名 Pod:Sandbox 删除后若同名 Pod 因异步删除未及时清理,新建流程会拒绝误接管该遗留 Pod(ACS 与通用路径均已修复),避免状态错乱。

    • 资源原地升配保留注入资源:修复原地 CPU/内存升配时,webhook 等组件注入的资源规格被覆盖丢失的问题。

    • 资源变配状态检查适配ACS资源规整逻辑:修复Sandbox 分配后因资源规整导致卡在原地变配状态中的问题。

    • SandboxUpdateOps 升级成功后清理升级策略标记:修复升级完成后 Sandbox 上残留的升级中间状态标记未清理的问题。

    • SandboxUpdateOps 升级 patch 与 checkpoint 恢复选择修复:修复模板 patch 应用顺序及基于 checkpoint 恢复时候选 Pod 选择不准确的问题。

    • Resume 后 ACS Annotation 同步:修复 Sandbox 唤醒后部分 ACS 状态 Annotation 未同步的问题。

基于agent-runtime启动mTLS之后部分管控接口的安全性会提升,接口时延会有所增加,但是不影响链路使用,在可控范围内。业务主容器非root身份运行之后会存在一些使用限制,这些限制将在产品文档上透出。

v0.5.24-release.1

20260813

  • 功能特性:

    • NAS 动态挂载支持自动创建子目录。

  • 问题修复:

    • 修复E2B 链路克隆创建沙箱时因重新签发身份文件导致OSS挂载失败的问题。

此次升级不会对业务造成影响。

202607

版本号

变更时间

变更内容

变更影响

v0.5.22-release.2

20260729

  • 功能特性:

    • 零信任身份认证体系:Claim 时通过 TokenKind 签发 JWT Access Token,用于客户端经网关访问 Sandbox,Traffic access token 仅保存在内存中,不持久化到 CR。Sandbox resume 后重新签发 Security Token,确保 CSI 重新挂载时使用有效凭证。Security Token 刷新推迟到 Sandbox Ready 后,避免 Pod 未就绪时过早刷新,并优化刷新策略。新增 RRSA 存储认证支持,用于按需 CSI 挂载场景,基于 STS 方式实现安全的存储挂载。

    • K8s 生命周期事件:控制器新增 K8s Event 支持,Pod 创建失败时发出 Event 并设置 Condition,便于排查。

    • SecurityProfile MCP 工具访问控制:SecurityProfile 新增 MCP 工具级别的访问控制策略。

    • agent-runtime v0.0.11 版本更新:对齐社区 native-tag-2026.22,优化 MMDS 日志输出,更新 Runtime 存储挂载 binary 插件版本至 acs.v0.4,支持 STS 方式实现存储动态挂载鉴权。

零信任身份认证体系调整,Traffic access token 不再持久化到 CR,建议升级后验证 Sandbox 访问链路正常。新增 RRSA 存储认证支持,使用按需 CSI 挂载的用户可通过 STS 凭据方式进行认证。其余功能特性更新不影响现有业务。

v0.5.19-release.3

20260710

  • 功能特性:

    • 新增 traffic-proxy 资源自定义配置支持,traffic-proxy 默认资源已调整(Request: 0.1C/128Mi → 0.2C/128Mi,Limit: 2C/2Gi → 0.2C/128Mi),请根据业务实际流量判断是否需要调整。

    • 升级失败断点续跑:SandboxUpdateOps 升级中断或失败后,可从上次失败的步骤继续恢复,无需从头重来(覆盖镜像变更场景);该能力默认关闭,可通过 FeatureGate SandboxUpgradeResumeFromFailedStep按需开启。

  • 问题修复:

    • 修复 SandboxClaim 仅变更 labels 时被误判为需要原地升级、导致获取 Sandbox 变慢的问题。

    • 修复 SandboxUpdateOps 可能选中非运行态 Sandbox 的问题,升级仅作用于 Running/Upgrading 状态的 Sandbox。

    • Sandbox 唤醒前校验 Init Container 镜像一致性,避免镜像不一致导致唤醒后运行异常。

    • 修复当预热池击穿时Sandbox镜像替换未使用镜像缓存的问题。

traffic-proxy 默认资源已调整(Request: 0.1C/128Mi → 0.2C/128Mi,Limit: 2C/2Gi → 0.2C/128Mi),需根据业务实际流量评估是否需要手动调整资源配置。其余修复不影响现有业务。

202606

版本号

变更时间

变更内容

变更影响

v0.5.16-release.2

20260616

  • 问题修复:

    • Sandbox 唤醒后增加 Init Container 镜像一致性检查,确认一致后再执行 Runtime 初始化和 CSI 动态卷挂载。

此次升级不会对业务造成影响。

v0.5.16-release.1

20260612

  • 功能特性:

    • Sandbox 休眠或唤醒后保持 Pod Template Spec 不变,避免唤醒后 Pod 规格发生非预期变更。

    • SandboxSet 自动创建关联的 SandboxTemplate,简化配置流程。

    • 优化大规模 SandboxSet(5000+)场景下的 Claim 性能,新增 CountActiveSandboxes 原地计数替代全量列表拷贝,显著降低 Claim 热路径(Hot Path)开销。

    • Sandbox 删除时的指标清理改为异步执行,从 reconcile 热路径移出,提升删除吞吐量。

    • SandboxUpdateOps 支持处理所有非 SandboxSet 管控的 Sandbox,覆盖直接创建 Sandbox 的升级场景。

  • 问题修复:

    • 修复新扩容的 Sandbox 导致 SandboxUpdateOps 持续处于 Updating 状态的问题,自动跳过 Template 已匹配目标版本的 Sandbox。

    • 稳定 Init Container 注入顺序,保证 Runtimes 容器注入顺序一致,确保向后兼容。

    • 修复 Sandbox 原地升级镜像偶发失败的问题,当 SandboxHashImmutablePart Annotation 缺失时跳过 Immutable Part 校验。

此次升级不会对业务造成影响。

v0.5.14-release.1

20260601

  • 功能特性:

    • 支持启用 Sandbox 流量管理能力,注入 traffic-proxy runtime,通过添加 Pod Annotation network.alibabacloud.com/network-policy-mode=enhanced-traffic-policy 启用。

    • 新增 sandbox_runtime_container_abnormal 指标,用于监控 Sandbox Runtime 容器异常状态。

    • Sandbox Controller 组件中心支持通过配置下发 TrafficPolicy,限制 envd 49983 端口的访问(默认不开启)。

    • Sandbox 创建/删除/休眠/唤醒链路增加 Tracing 支持,通过 FeatureGate SandboxTraceLog=true 开启(默认关闭)。

  • 问题修复:

    • deleteSandboxMetrics 改为异步调用,解决高并发删除 Sandbox 场景下 DeletePartialMatch 锁竞争导致的 reconcile 阻塞问题。

    • 修复 Sandbox 处于 Pending 阶段时 Status 未持久化的问题。

此次升级不会对业务造成影响。

202605

版本号

变更时间

变更内容

变更影响

v0.5.13-release.1

20260521

  • 功能特性:

    • 校验 SandboxSet VolumeClaimTemplates 字段的挂载合法性。

    • SandboxClaim 新增 TTLAfterCompletedWaitReadyTimeout 字段校验。

    • 新增门控特性(FeatureGate)SandboxMultiClusterNaming,在 Sandbox generateName中嵌入集群 ID 哈希值,规避多集群 Name 冲突(默认关闭,可在组件中心开启)。

    • 支持 SandboxClaim 或 E2B SDK方式创建Sandbox时,从预热池原地升配 CPU(仅支持升配)。

    • CRD types添加Strategic Merge Patch markers,提升 kubectl apply 性能并降低 API Server 负载。

    • 新增 Sandbox 休眠、唤醒及升级操作的 Prometheus 指标,用于监控大盘展示。

    • Sandbox 休眠及唤醒后的 CSI 动态挂载能力移植到 Sandbox Controller,移除对Sandbox Manager 的依赖。

  • 问题修复:

    • 修复了 SandboxUpdateOps 执行 Lifecycle 脚本失败时,Sandbox Status Condition 的message字段未包含脚本stdoutstderr的问题,以提升故障排查效率。

    • Sandbox 唤醒时增加resumedCondition.Status=True兜底判断,解决底层休眠成功但 Pod Ready 仍为 True 时唤醒流程阻塞的问题。

此次升级不会对业务造成影响。

v0.5.12-release.3

20260511

  • 问题修复:

    • 修复 E2B 链路创建的 Sandbox 在 SandboxUpdateOps 升级时未触发动态挂载的问题。

此次升级不会对业务造成影响。

v0.5.12-release.2

20260508

  • 问题修复:

    • SandboxClaim 在配置SkipInitRuntime=false但未配置 agent-runtime 时跳过 InitRuntime 并记录错误日志。

    • SandboxSet maxUnavailable 百分比计算改为向上取整,确保至少有 1 个 Sandbox 可以被更新。

此次升级不会对业务造成影响。

v0.5.12-release.1

20260506

  • 功能特性:

    • SandboxSet 支持升级预热池中的Sandbox,updateStrategy支持maxUnavailable

    • Sandbox 支持updateStrategy=Recreate以及 Lifecycle preUpgradepostUpgrade(升级之后会执行动态挂载CSI)。

    • 支持使用 SandboxUpdateOps CR 对已分配的 Sandbox 进行升级。

    • 在休眠唤醒场景中,支持使用SandboxClaim控制器方式实现动态挂载。

    • 允许显式配置ops.alibabacloud.com/pause-enabled='false'

    • 支持 Sandbox 监控指标,其生成和暴露方式与 kube-state-metrics 一致。

    • Sandbox 支持 CPU VPA垂直伸缩。默认关闭,可通过特性门控SandboxInPlaceResourceResizeGate=true开启。

    • 通过 Pod Validate Webhook 提供防止误删除 Pod 的能力。

    • 使用SandboxClaim方式获取 Sandbox 时支持修改 Pod Labels。

此次升级不会对业务造成影响。