Skip to main content

安装

概述

Sandbox Controller 和 Sandbox Manager 是 OpenKruise 生态中的两个核心组件:

  • Sandbox Controller:负责管理 Sandbox 相关的 CRD 资源,包括 SandboxSet、Sandbox、SandboxClaim 和 SandboxTemplate 的生命周期管理。
  • Sandbox Manager:提供 Sandbox 的 API 服务,包含控制器和 Envoy 代理,支持 E2B 协议访问。

版本兼容性

组件版本Kubernetes 兼容性
Sandbox Controllerv0.1.0>= 1.24
Sandbox Managerv0.1.0>= 1.24

前置条件

  1. Kubernetes 集群版本 >= 1.24
  2. 已安装 Helm v3.5+
  3. 已安装 OpenKruise(Sandbox Controller 依赖 Kruise 的部分功能)
  4. 手动创建namespace

通过 Helm 安装

1. 添加 OpenKruise Charts 仓库

## 添加 openkruise charts 仓库
helm repo add openkruise https://openkruise.github.io/charts/

## 更新仓库(如果已经安装过openkruise charts仓库)
helm repo update

2. 安装 Sandbox Controller

手动创建 Namespace

kubectl create ns <namespace>

安装顺序:Sandbox Controller 必须先于 Sandbox Manager 安装,因为它提供了 Sandbox Manager 所需的 CRD 资源。

helm install agents-sandbox-controller openkruise/kruise-agents-sandbox-controller -n <namespace> --version 0.1.0

3. 安装 Sandbox Manager

$ helm install agents-sandbox-manager openkruise/kruise-agents-sandbox-manager -n <namespace> --version 0.1.0

使用国内镜像源

由于网络原因,国内用户可能无法直接从 Docker Hub 拉取镜像。建议使用阿里云容器镜像服务提供的国内镜像。

国内镜像地址

组件镜像地址版本
Sandbox Controlleropenkruise-registry.cn-shanghai.cr.aliyuncs.com/openkruise/agent-sandbox-controllerv0.1.0
Sandbox Manageropenkruise-registry.cn-shanghai.cr.aliyuncs.com/openkruise/sandbox-managerv0.1.0
Envoy Proxyopenkruise-registry.cn-shanghai.cr.aliyuncs.com/openkruise/envoyv1.33-latest

使用国内镜像安装

安装 Sandbox Controller(使用国内镜像)

helm install agents-sandbox-controller openkruise/kruise-agents-sandbox-controller -n <namespace> --version 0.1.0 \
--set image.repository=openkruise-registry.cn-shanghai.cr.aliyuncs.com/openkruise/agent-sandbox-controller

安装 Sandbox Manager(使用国内镜像)

helm install agents-sandbox-manager openkruise/kruise-agents-sandbox-manager -n <namespace> --version 0.1.0 \
--set controller.repository=openkruise-registry.cn-shanghai.cr.aliyuncs.com/openkruise/sandbox-manager \
--set proxy.repository=registry-cn-hangzhou.ack.aliyuncs.com/acs/envoy \
--set proxy.tag=v1.4.0-gf4e7213-apsara

通过 Helm 升级

升级 Sandbox Controller

helm upgrade agents-sandbox-controller openkruise/kruise-agents-sandbox-controller -n <namespace> --version 0.1.0

升级 Sandbox Manager

helm upgrade agents-sandbox-manager openkruise/kruise-agents-sandbox-manager -n <namespace> --version 0.1.0

注意:

  1. 在升级之前,必须先阅读 Change Log ,确保你已经了解新版本的不兼容变化。
  2. 如果你要重置之前旧版本上用的参数或者配置一些新参数,建议在 helm upgrade 命令里加上 --reset-values

手工下载 Charts 包

如果你在生产环境无法连接到 https://openkruise.github.io/charts/,可以先在 GitHub Releases 手工下载 chart 包,再用它安装或更新到集群中。

helm install/upgrade agents-sandbox-controller /PATH/TO/CONTROLLER/CHART -n <namespace>
helm install/upgrade agents-sandbox-manager /PATH/TO/MANAGER/CHART -n <namespace>

可选项

Sandbox Controller 安装参数

下表展示了 Sandbox Controller chart 所有可配置的参数和它们的默认值:

ParameterDescriptionDefault
replicaCountController 副本数2
image.repositoryController 镜像仓库openkruise/agent-sandbox-controller
image.tagController 镜像版本v0.1.0
image.pullPolicy镜像拉取策略IfNotPresent
webhook.portWebhook 服务端口9443
metrics.portMetrics 服务端口8443
healthProbe.port健康检查端口8081
resources.limits.cpuCPU 资源限制2
resources.limits.memory内存资源限制4Gi
resources.requests.cpuCPU 资源请求2
resources.requests.memory内存资源请求4Gi
namespace.name部署的命名空间sandbox-system
serviceAccount.create是否创建 ServiceAccounttrue
serviceAccount.automount是否自动挂载 ServiceAccount Tokentrue
serviceAccount.annotationsServiceAccount 注解{}
serviceAccount.name使用的 ServiceAccount 名称""
rbac.create是否创建 RBAC 资源true
imagePullSecrets镜像拉取密钥列表[]
nameOverride覆盖 Chart 名称""
fullnameOverride覆盖完整名称""
podAnnotationsPod 注解{}
podLabelsPod 标签{}
podSecurityContextPod 安全上下文{runAsNonRoot: true, seccompProfile: {type: RuntimeDefault}}
securityContext容器安全上下文{allowPrivilegeEscalation: false, capabilities: {drop: [ALL], add: [NET_BIND_SERVICE]}, readOnlyRootFilesystem: true}
nodeSelectorPod 调度的节点选择器{}
tolerationsPod 调度的容忍度[]
affinityPod 调度的亲和性{}

Sandbox Manager 安装参数

下表展示了 Sandbox Manager chart 所有可配置的参数和它们的默认值:

Controller 参数

ParameterDescriptionDefault
replicaCountManager 副本数2
controller.repositoryController 镜像仓库openkruise/sandbox-manager
controller.tagController 镜像版本v0.1.0
controller.pullPolicy镜像拉取策略IfNotPresent
controller.logLevel日志级别3
controller.infraSandbox 基础设施类型sandbox-cr
controller.hostNetwork是否使用 Host Networkfalse
controller.maxClaimWorkers最大 Claim 工作线程数100
controller.maxCreateQPS创建 Sandbox 的最大 QPS200
controller.extProcMaxConcurrency外部处理器最大并发数3000
controller.resources.cpuController CPU 资源限制2
controller.resources.memoryController 内存资源限制4Gi

Proxy (Envoy) 参数

ParameterDescriptionDefault
proxy.repositoryEnvoy 代理镜像仓库envoyproxy/envoy
proxy.tagEnvoy 代理镜像版本v1.33-latest
proxy.pullPolicy镜像拉取策略IfNotPresent
proxy.resources.cpuEnvoy CPU 资源2
proxy.resources.memoryEnvoy 内存资源4Gi

E2B 协议参数

ParameterDescriptionDefault
e2b.domainE2B 协议域名your.domain.com
e2b.enableAuth是否启用 E2B 认证true
e2b.adminApiKeyE2B 管理员 API Keyadmin-987654321
e2b.maxTimeoutE2B 最大超时时间(秒)2592000

服务与 Ingress 参数

ParameterDescriptionDefault
service.typeService 类型ClusterIP
service.portEnvoy 代理服务端口7788
ingress.classNameIngress 类名nginx
ingress.annotationsIngress 注解{}
ingress.certSecretNameIngress TLS 证书 Secret 名称sandbox-manager-tls

其他参数

ParameterDescriptionDefault
imagePullSecrets镜像拉取密钥{}
nameOverride覆盖 Chart 名称""
fullnameOverride覆盖完整名称""
serviceAccount.automount是否自动挂载 ServiceAccount Tokentrue
serviceAccount.annotationsServiceAccount 注解{}
serviceAccount.nameServiceAccount 名称""
podAnnotationsPod 注解{}
podLabelsPod 标签{}
podSecurityContextPod 安全上下文{fsGroup: 2000, seccompProfile: {type: RuntimeDefault}}
podSecurityContextAllowPrivilegeEscalation是否允许特权提升false
securityContext容器安全上下文{capabilities: {drop: [ALL], add: [NET_BIND_SERVICE]}, readOnlyRootFilesystem: true, allowPrivilegeEscalation: false, runAsNonRoot: true, runAsUser: 65532}
nodeSelector节点选择器{}
tolerations容忍度[]
affinity亲和性优先 Pod 反亲和性

这些参数可以通过 --set key=value[,key=value] 参数在 helm installhelm upgrade 命令中生效。


最佳实践

自定义资源配置

根据你的集群规模,建议调整以下资源参数: Sandbox Controller 资源调整

$ helm install agents-sandbox-controller openkruise/kruise-agents-sandbox-controller \
--set resources.limits.cpu=4 \
--set resources.limits.memory=8Gi \
--set resources.requests.cpu=2 \
--set resources.requests.memory=4Gi

Sandbox Manager 资源调整

helm install agents-sandbox-manager openkruise/kruise-agents-sandbox-manager \
--set controller.resources.cpu=4 \
--set controller.resources.memory=8Gi

配置 E2B 域名和认证

helm install agents-sandbox-manager openkruise/kruise-agents-sandbox-manager \
--set e2b.domain=sandbox.example.com \
--set e2b.enableAuth=true \
--set e2b.adminApiKey=your-secure-api-key

使用 Ingress 暴露服务

helm install agents-sandbox-manager openkruise/kruise-agents-sandbox-manager \
--set ingress.className=nginx \
--set ingress.annotations."cert-manager.io/cluster-issuer"=letsencrypt-prod \
--set ingress.certSecretName=sandbox-manager-tls

卸载

注意: 卸载会删除 webhook configurations、services、instances 等 Sandbox 相关资源,但不会删除 Pod。Pod 只有在 CRD 被删除时才会被删除。Namespace 和 CRD 不会被自动删除,如需清理请手动操作。请务必谨慎操作!

卸载 Sandbox Manager

helm uninstall agents-sandbox-manager

卸载 Sandbox Controller

helm uninstall agents-sandbox-controller