创建第一个 Sandbox
本指南将创建一个 Python Sandbox,等待其变为 Ready,执行命令,暂停并恢复它,然后删除它。
开始前准备
- 安装并验证 Agent Sandbox
v0.5.4-1。 - 将
kubectl连接到目标业务集群,而不是 global 集群。 - 确保业务集群能够拉取
docker-mirrors.alauda.cn/library/python:3.12-alpine。 - 在本地安装 Python 3,以生成未来的 RFC3339 过期时间戳。
在应用或删除任何资源之前,请验证当前集群:
仅当输出为预期的业务集群时,才继续。
创建 Namespace 和过期时间
设置 Namespace,并创建一个 30 分钟后的过期时间:
shutdownTime 是一个绝对 RFC3339 时间戳。它不是空闲超时时间,也不会因命令执行或网络活动而自动延长。
创建 Sandbox
应用一个带有受限兼容安全上下文的 v1beta1 Sandbox:
控制器会在相同的 Namespace 中管理一个名为 python-sandbox 的 Pod。
等待 Ready
等待 Sandbox 的 Ready condition,并检查资源:
如果等待超时,请在继续之前检查 Sandbox、Pod、事件以及控制器日志。
运行命令
在 Sandbox 容器中执行 Python:
预期输出包括:
暂停和恢复
暂停 Sandbox:
恢复它,并再次等待 Ready:
在 v0.5.4 中,当 Sandbox 运行时,Suspended condition 仍然存在。客户端必须检查其布尔状态,而不是使用 condition 是否存在作为状态检查。
删除 Sandbox
在删除资源之前,请验证当前上下文和 $BUSINESS_NAMESPACE。
在练习完成后删除 Sandbox:
由于此示例使用 shutdownPolicy: Delete,因此当达到 shutdownTime 时,控制器也会删除 Sandbox。请不要将 CRD 作为常规业务清理的一部分进行删除。