本文主要介绍 VCI Agent Sandbox 中进行创建、暂停、恢复、删除、变更等沙箱生命周期管理操作。
您可以使用 VCI 资源创建一个沙箱。
说明
- 一个沙箱是一个 Sandbox Custom Resource。
- 当前 VCI 容器使用了 Kata Container 实现强隔离。
- 如需通过 SandboxSnapShotClass 定义沙箱快照的删除/保留策略,请提前创建相关 Custom Resource。示例 YAML 如下所示。详情请参见 数据持久化。
- 使用已有快照创建沙箱时,可从如下两种途径获取快照 ID:
- 使用已有沙箱关机时 VCI 自动创建的快照 ID。
- 用户自行创建的 Snapshot 类型 Custom Resource。
从零开始首次在 VCI Agent Sandbox 环境中创建沙箱时,按如下示例代码创建。
等待 CRD 的status.phase显示为 Running 时,表示沙箱创建成功。示例代码片段如下所示。
VCI Agent Sandbox 环境中使用已有快照创建沙箱时,在 首次创建沙箱 模块下示例代码的基础上,增加 Annotation:vci.volcengine.com/snapshot-id。完整示例代码如下。
通过将沙箱的replicas设置为 0,达到暂停沙箱的目的。默认情况下,暂停沙箱时 VCI Agent Sandbox 将自动生成快照。示例代码片段如下所示。
等待 CRD 的status.phase显示为 Paused 时,表示沙箱暂停成功。示例代码片段如下所示。
如果不希望在沙箱暂停时自动创建快照,可以通过配置 Annotation:agent.sandbox.io/auto-create-snapshot: "false",关闭自动创建快照的功能。
等待 CRD 的status.phase显示为 Paused 时,表示沙箱暂停成功且不会自动产生快照。示例代码片段如下所示。
通过将沙箱的replicas设置为 1,达到恢复沙箱的目的。恢复沙箱时使用上一次关机的快照。示例代码片段如下所示。
恢复沙箱后,确认该 Custom Resource 的status.phase为 Running 时,视为沙箱恢复成功。
更新沙箱的 CPU、内存和 GPU 配置时,需要先暂停沙箱,再更新podTemplate内的resources资源。配置设置完成后,再恢复沙箱。此过程会销毁原来的 Pod 后再重建新的 Pod 来更新沙箱配置。
- 暂停沙箱,即:将replicas设置为 0,且确认status.phase为 Paused。
- 更新podTemplate内的resources字段配置。
- 恢复沙箱,将replicas设置为 1,并确认该 Custom Resource 的status.phase为 Running。
更新沙箱镜像时,支持在不重建 Pod 的情况下,原地更新,即不销毁原来的 Pod,直接在该 Pod 上更新沙箱镜像,缩短配置变更时间。
- 在沙箱 YAML 文件中配置 Annotation:vci.volcengine.com/persistent-container: "true"。
- 后续直接通过 YAML 更新podTemplate中配置的镜像,VCI Agent Sandbox 会原地更新容器镜像。
- 更新完成后查看该 Custom Resource 的status.phase为 Running 且容器镜像已切换为目标版本时,表示原地更新沙箱已完成。
如果不需要沙箱,可以直接删除对应的 Sandbox 资源。删除沙箱时,对应的 VCI Pod、Snapshot、Custom Resource 以及 PVC 资源会自动删除。
数据盘数据保存策略由存储类的保存策略决定:
- Retain:PVC 释放后,PV 保持在 Released 状态,不自动删除或回收。
- Delete:PVC 释放后,自动删除 PV 及其底层存储资源。
如果需要定时删除,可以通过设置shutdownTime来实现。示例代码如下。