新闻详情

新闻详情

首页 / 资讯中心 / 详情

OpenShell Kubernetes 计算驱动深入解析:Sandbox 生命周期、命名空间模式与驱动配置实战

发布时间:2026/9/25 7:16:43来源:尧图网络
OpenShell Kubernetes 计算驱动深入解析:Sandbox 生命周期、命名空间模式与驱动配置实战
【免费下载链接】OpenShellOpenShell is the safe, private runtime for autonomous AI agents.项目地址https://gitcode.com/gh_mirrors/op/OpenShell点击查看免费下载OpenShell 的 Kubernetes 计算驱动openshell-driver-kubernetes负责在集群内创建、删除、查询与监听 Sandbox 自定义资源是 OpenShell 集群部署中网关侧的原生计算后端。本文以 crates/openshell-driver-kubernetes/README.md 为核心骨架结合驱动源码与 网关配置参考 展开读者将掌握三种工作区命名空间模式、Sandbox 资源生命周期、PVC 持久化模型、安全上下文、GPU 支持以及通过driver_config定制 Pod 的完整实操方法。一、驱动定位与默认安全模型Kubernetes 驱动在 OpenShell 架构中扮演平台状态存储 工作负载委托的角色网关保存平台状态驱动通过 Kubernetes API 完成 Sandbox 自定义资源的创建、删除、查询与监听Watch而 Pod 调度与生命周期由 Kubernetes 自身负责。从源码看驱动以kube/kube-runtime/k8s-openapi为客户端栈见 Cargo.toml并实现了统一的 compute-driver protobuf 服务面ComputeDriverService见 lib.rs。该驱动遵循以下默认安全边界调用方驱动配置默认关闭KubernetesComputeConfig.allow_driver_config默认false见 config.rs需要显式开启。外部资源引用必须带有管理员控制的审批标签在每一种工作区模式下都生效包括重启之前以及调度门scheduling-gate释放之前。GPU 设备附件目前暂免于标签审批。镜像拉取 SecretimagePullSecrets是运维选择的网关配置而非调用方附件调用方无法通过驱动 JSON 选择 Secret 或 ConfigMap 卷。Managed 模式下复制的工作区workspace副本携带网关所有权元数据便于追踪归属。外部资源准入的完整策略见 网关配置参考 - External Resource Admission。需要特别强调的是Kubernetes 命名空间本身不构成准入授权——把某个命名空间加入 operator 允许列表等同于授予信任允许列表不是租户隔离边界。二、三种工作区命名空间模式workspace_mode驱动通过workspace_mode配置字段决定工作区与 Kubernetes 命名空间的映射关系支持三种模式枚举定义见 config.rs 的WorkspaceModeShared默认所有 Sandbox 渲染进单个静态命名空间。为避免资源名冲突资源名使用{workspace}--{name}前缀规则。源码中kube_resource_name在 Shared 模式下返回format!({workspace}--{name})而namespace_for_workspace直接返回配置的namespace字段。Managed驱动按工作区自动创建/删除 Kubernetes 命名空间命名约定为openshell-{gateway_id}-{workspace_name}源码managed_namespace函数。每个命名空间内会自动创建 ServiceAccount当网关命名空间存在 OpenShift SCC 注解时将其复制到新命名空间。该模式对gateway_id有严格约束必须是合法的 DNS-1123 label且openshell-{gateway_id}-前缀加上最大 19 字符的工作区名不得超过 Kubernetes 命名空间的 63 字符上限validate_workspace_mode中的长度校验逻辑。gateway_id默认值为openshellDEFAULT_GATEWAY_ID从网关 JWT 的gateway_id传播而来。Operator工作区名与预置命名空间 1:1 映射命名空间发现来源只能二选一operator_namespace_labelKubernetes 标签选择器如openshell.ai/workspacetrue驱动 watch 匹配标签的命名空间并动态构建允许列表operator_namespace_fileJSON/YAML 白名单文件如/etc/openshell/workspace-namespaces.json文件变更时热加载通常通过 ConfigMap 卷挂载实现。关键行为如果工作区命名空间不在当前允许列表中Sandbox 创建失败关闭fail closed删除工作区只删除网关状态绝不删除或访问 operator 管理的 Kubernetes 命名空间驱动在 Operator 模式下不具备命名空间的创建/删除权限命名空间生命周期完全由平台团队管理。配置校验要求 operator 模式必须恰好配置 label 或 file 中的一个validate_workspace_mode中同时为空或同时存在都会被拒绝。源码中的namespace_for_workspace在 Operator 模式下会从OperatorNamespaceAllowlist即openshell_core::DynamicStringAllowlist带锁的共享状态可热更新读取允许列表并做包含性检查。三种模式的信任边界文档明确要求Shared 与 Managed 模式下只有驱动及其信任的 Agent Sandbox 控制器可以管理沙箱命名空间、Sandbox CR、沙箱 Pod 或配置的沙箱 ServiceAccountOperator 模式下平台 operator 拥有命名空间生命周期但必须阻止其他主体创建/篡改 Sandbox CR、以伪造 owner references 的方式创建沙箱 Pod、或使用配置的沙箱 ServiceAccount。将命名空间加入 operator 允许列表即视为授予这份信任。三、运行时模型双 Pod 架构与最小权限网关存储平台状态将沙箱工作负载创建委托给驱动Kubernetes 负责调度与 Pod 生命周期。每个沙箱代际generation由两个独立 Pod 组成组件镜像来源链接方式职责工作负载 Podsandbox静态链接 musl 的openshell-sandbox二进制来自sandbox_runtime_image由 Agent Sandbox 控制器管理拥有 agent 进程、施加 Landlock 与子进程 seccomp 过滤器、识别每个网络系统调用背后的二进制、将受调解的流中继给 supervisor控制 Podsupervisor动态链接 glibc 的openshell-supervisor来自supervisor_image驱动直接管理非控制器用 JWT 向网关认证、加载策略与 provider 状态、执行目的地与 L7 授权、打开上游连接安全分工明确工作负载 Pod 不接收网关凭据、provider 身份 socket 或企业代理凭据。supervisor 的 Pod 对 Sandbox 资源持有直接、非控制器的 owner reference从而将其垃圾回收生命周期与沙箱绑定同时不与 Agent Sandbox 控制器争夺工作负载 Pod 的所有权。两个 Pod 都以命名空间解析出的非 root UID/GID 运行并设置allowPrivilegeEscalation: falsecapabilities.drop: [ALL]运行时默认 seccomp 配置RuntimeDefault。沙箱在 Pod spec 中不请求任何 capability 的情况下安装嵌套 seccomp user-notification 过滤器当运行时阻止所需的 seccomp 或 Landlock 操作时启动失败关闭。从 isolation.rs 可以看出该驱动通过openshell-isolation-interface与openshell-sandbox-backend提供的共享认证边界协议authenticated boundary protocol实现控制面与工作负载面的分离驱动只负责放置运行时、绑定不可变的 Kubernetes 资源身份并供给 TCP 坐标。命名空间级网络策略驱动在释放任何工作负载 Pod 之前会创建一个命名空间级的NetworkPolicy即 workload fence选择所有 OpenShell 工作负载拒绝工作负载的所有出站流量显式空 egress 列表只允许 OpenShell supervisor Pod 访问沙箱的 TLS 端口默认boundary_port: 5500见KubernetesSandboxRuntimeConfig默认值。同时存在第二条选择 supervisor 的NetworkPolicy显式允许其经过策略批准的 DNS 与上游连接。注意 Kubernetes 的 NetworkPolicy 是连接感知的工作负载经控制面发起的边界连接上的回程流量会被允许即便工作负载 Pod 本身没有 egress 规则上游连接的真正打开者是控制 Pod。沙箱协议Sandbox Protocol在认证之后把每个连接绑定到精确的沙箱与 supervisor Pod 身份上。supervisor 拥有访问网关、DNS 与策略批准上游的正常 egress除非 operator 策略另行限制。由于 Kubernetes 策略是叠加additive的且 API 不会证明 CNI 真的执行了这些策略因此只有在确认集群 CNI 对沙箱命名空间执行 ingress/egress NetworkPolicy 之后才应设置sandbox_runtime.network_policy_enforced true。该字段在配置校验中是强制确认项validate()要求其为true源码会直接报错提示 operator 必须先验证 CNI 执行能力。双不可变 bootstrap Secret每个沙箱代际使用两个不可变immutablebootstrap Secret沙箱 bootstrap Secret由受信任的 init 容器分阶段放入沙箱内存沙箱在运行不可信代码之前将其删除supervisor Secret只挂载给 supervisor当配置了proxy_ca_bundle时同时携带企业代理 CA bundle。proxy_ca_bundle是网关自身文件系统上的 PEM CA bundle 路径——网关读取文件后把它写入每代 supervisor 的 bootstrap Secret因此信任锚trust anchor始终停留在网关的信任域而非沙箱命名空间Secret 不可变运行中的沙箱无法被暗中替换锚。驱动在启动时即读取并校验该 bundleread_staged_upstream_proxy_ca_bundle且将暂存体积限制在 256 KiBMAX_STAGED_PROXY_CA_BUNDLE_BYTES以避免超过 apiserver 约 1 MiB 的 Secret 上限而导致每次创建都出现晦涩的data: Too long错误相关注释见 config.rs。生命周期操作顺序Stop删除工作负载与 supervisor 两个 PodStart轮换两个 Secret 并先创建新的 supervisor Pod再释放新的工作负载 Pod。命名空间共享的网络围栏network fence在命名空间整个生命周期内持续存在。TLS 通道把命名空间、Sandbox CR、工作负载 Pod、supervisor Pod 与共享网络策略身份绑定在一起即便网络策略被绕过精确的 supervisor-to-sandbox 授权仍由 TLS、JWT claims、会话代际session generation与记录的 Pod UID 共同强制。四、Sandbox 资源与 API 版本协商驱动操作agents.x-k8s.io组下的Sandbox自定义资源SANDBOX_KIND见 driver.rs。它会在运行时探测集群实际提供served的 Sandbox API 版本并在网关进程内缓存所选版本优先使用v1beta1不可用时回退到v1alpha1。因此对 Agent Sandbox 进行原地升级后需要重启网关让驱动重新探测 served API 版本。驱动把 Kubernetes 对象状态与平台事件映射为网关共享的 compute-driver protobuf 事件面WatchSandboxesEvent/WatchSandboxesPlatformEvent等。可靠性设计所有 Kubernetes API 调用都带显式超时KUBE_API_TIMEOUT 30s防止 gRPC handler 在 API server 缓慢或不可达时无限阻塞资源与事件 Watch 在瞬时 watcher 错误后原地恢复使用对 API 友好的退避避免网关侧重启 Watch 及其带来的 watch 间隙资源版本冲突409 Conflict时使用带重试的合并补丁patch_dynamic_object_with_resource_version_retry。Stop 语义按 API 版本区分v1beta1设置spec.operatingMode: Suspendedv1alpha1设置spec.replicas: 0Start 则分别设置Running或 1 个副本使替换 Pod 挂载既有 PVC。驱动从已发布的Suspended条件和底层 Pod 删除两者共同确认停止完成v1alpha1的旧版控制器没有可用的停止条件因此仅以 Pod 删除来确认停止。只有 Delete 操作会移除 Sandbox 资源及其拥有的存储。五、工作区持久化PVC init 容器播种模型沙箱 Pod 使用 PVC 支撑的/sandbox工作区首次启动时init 容器workspace-init把镜像原始/sandbox内容复制进 PVC并写入哨兵文件.workspace-initialized后续启动检测到哨兵后跳过复制。源码注释driver.rs明确这是一个stopgap过渡性持久化模型它能在 Pod 重调度后保留用户文件但会复制整个基础工作区且不会自动把镜像更新应用到既有 PVC。未来应被快照机制取代。PVC 大小与存储类配置默认大小来自workspace_default_storage_size源码默认2GiDEFAULT_WORKSPACE_STORAGE_SIZEworkspace_storage_class用于固定到指定StorageClass留空则省略storageClassName使用集群默认 StorageClass。没有默认 StorageClass 的集群必须显式设置否则 PVC 一直处于Pending沙箱永远不会启动。两个字段也可在运行时通过环境变量覆盖OPENSHELL_K8S_WORKSPACE_DEFAULT_STORAGE_SIZE与OPENSHELL_K8S_WORKSPACE_STORAGE_CLASS见 main.rs。注意两者只作用于 OpenShell 自动供给的默认工作区 PVC如果driver_config挂载把既有 PVC 挂到/sandbox下则跳过默认 PVC这两个字段不再生效。六、凭据、TLS 与中继两个 Pod 都设置automountServiceAccountToken: false遵循最小化凭据暴露原则supervisor 收到一个显式的 audience 绑定投影令牌projected token仅用于一次性IssueSandboxToken交换驱动通过 KubernetesTokenReviewAPI 验证该令牌authenticate_sandboxaudience 为openshell-gateway并核对 Pod UID、Sandbox 资源的 owner reference 与 UID、命名空间归属等然后返回一个不透明的运行时身份——由命名空间、不可变 Sandbox 资源 UID 与 supervisor Pod UID 派生而来重启要求恰好一个匹配的 Sandbox 资源并在轮换 supervisor Pod UID 的同时保留命名空间与资源 UID网关要求认证身份与持久绑定durable binding匹配之后才返回代际绑定的会话 JWT 供 supervisor 使用沙箱 Pod 两者令牌都不接收。网关通过 supervisor 中继relay执行 connect、exec、logs 与文件同步因此沙箱 Pod不需要为 SSH 开放直接的外部入口。驱动只把规范的主进程规格main-process specification发送给 supervisorsupervisor 在受保护通道上传送被准入的启动状态。Provider 环境更新只影响未来的 exec 会话。七、容器安全上下文细节沙箱、受信任的 bootstrap init 容器与 supervisor 均不请求额外 Linux capability全部以同一个数字非 root 身份运行UID/GID 解析顺序显式sandbox_uid/sandbox_gid→ OpenShift SCC 命名空间注解openshift.io/sa.scc.uid-range与openshift.io/sa.scc.supplemental-groups→ 回退默认10001详见resolve_sandbox_uid与DEFAULT_SANDBOX_UID禁用提权、drop 全部 capabilities、继承RuntimeDefaultseccomp。关键约束沙箱与 agent 必须使用完全相同的 UID、GID 与补充组身份因为无 capability 的沙箱在启动后无法变更凭据却必须检查其同身份的后代进程。配置的sandbox_uid/sandbox_gid必须落在策略允许的范围内openshell_policy::MIN_SANDBOX_UID..MAX_SANDBOX_UIDvalidate_sandbox_identity_config启动时校验。工作负载 Pod 不共享 host network、PID、IPC 或 process 命名空间。驱动使用**调度门scheduling gate**在 kubelet 启动 Pod 前检查被准入的 Pod并把其 UID 绑定进 bootstrap claims。八、GPU 支持当沙箱请求 GPU 支持时驱动检查节点可分配容量allocatable capacity中的nvidia.com/gpuGPU_RESOURCE_NAME在工作负载 spec 中请求配置的 GPU 数量未设置数量时请求 1 个 GPU 资源。对应能力声明见capabilities()GpuResourceCapabilities中default_selection_supported与count_selection_supported均为true。沙箱镜像必须自带 agent 工作负载所需的用户态库。九、Driver Config按 RFC 0006 定制 Pod按照 RFC 0006 的约定驱动接收SandboxTemplate.driver_config.kubernetes块并以DriverSandboxTemplate.driver_config形式使用。Kubernetes 驱动拥有嵌套 schema 的所有权目前接受以下键嵌套键使用snake_case顶层driver_config信封按驱动名分键因此kubernetes不属于嵌套 schema 本身键说明pod.node_selector节点选择器mappod.tolerations污点容忍列表pod.runtime_class_name映射 PodSpecruntimeClassName覆盖驱动配置的default_runtime_class_name类型化的公共SandboxTemplate.runtime_class_name仍优先pod.priority_class_name优先级类containers.agent.resources.requests资源请求Kubernetes 原生资源名与数量字符串containers.agent.resources.limits资源上限containers.agent.volume_mounts[].name挂载引用的卷名containers.agent.volume_mounts[].mount_path挂载路径containers.agent.volume_mounts[].sub_path子路径containers.agent.volume_mounts[].read_only只读标志volumes[].name卷名volumes[].persistent_volume_claim.claim_name引用的 PVC 名称volumes[].persistent_volume_claim.read_onlyPVC 卷只读标志通过 CLI 的公共驱动分键信封设置网关只把kubernetes对象转发给本驱动openshell sandbox create \ --driver-config-json {kubernetes:{pod:{runtime_class_name:kata-containers,node_selector:{pool:gpu}}}} \ -- claude解析器driver.rs 中的KubernetesSandboxDriverConfig会渲染上述键并拒绝未知字段deny_unknown_fields。资源键使用 Kubernetes 原生资源名与数量字符串。使用提示默认 GPU 请求走公共--gpu标志带数量时向--gpu传数量driver_config仅用于附加的驱动自有资源细节。PVC 卷挂载实战把既有 Kubernetes PVC 挂载进 agent 容器openshell sandbox create \ --driver-config-json { kubernetes: { volumes: [{ name: user-data, persistent_volume_claim: { claim_name: pvc-user-data-123, read_only: false } }], containers: { agent: { volume_mounts: [ { name: user-data, mount_path: /sandbox/.openshell/workspace, sub_path: workspace, read_only: false }, { name: user-data, mount_path: /sandbox/.openshell/memory, sub_path: memory, read_only: false } ] } } } } \ -- claude校验规则均有源码实现与单元测试覆盖见 driver.rsPVC 卷与挂载默认只读除非显式设置read_only: false可写访问要求 PVC 卷与每个可写挂载都显式read_only: false拒绝重复卷名、非法 DNS-1123 卷标签、非法 DNS-1123 subdomain 的 PVC claim 名、引用未知卷的挂载、非归一化或受保护的挂载路径、绝对路径或父目录穿越的sub_path卷名不得与驱动保留卷名冲突如workspace、openshell-sa-token、openshell-client-tls、spiffe-workload-api等保留名清单KUBERNETES_DRIVER_RESERVED_VOLUME_NAMES挂载路径不得与受保护路径如/var/run/secrets/openshell冲突。关键行为任何显式的 driver-config 挂载只要落在/sandbox之下has_explicit_sandbox_data_mount就会禁用该沙箱默认的/sandbox工作区 PVC 注入。只有显式挂载路径的数据经外部 PVC 持久化/sandbox的其他路径来自当前沙箱镜像。十、网关侧完整配置示例以下 TOML 来自 网关配置参考 - Kubernetes是自包含可复制的完整示例[openshell] version 2 [openshell.gateway] bind_address 0.0.0.0:8080 health_bind_address 0.0.0.0:8081 metrics_bind_address 0.0.0.0:9090 log_level info compute_driver kubernetes [openshell.gateway.tls] cert_path /etc/openshell-tls/server/tls.crt key_path /etc/openshell-tls/server/tls.key client_ca_path /etc/openshell-tls/client-ca/ca.crt [openshell.drivers.kubernetes] workspace_mode shared namespace agents service_account_name openshell-sandbox default_image nvcr.io/nvidia/base/ubuntu:24.04 image_pull_policy if_not_present image_pull_secrets [regcred] sandbox_runtime_image_pull_policy if_not_present supervisor_image_pull_policy if_not_present grpc_endpoint https://openshell-gateway.openshell.svc:8080 ssh_socket_path /run/openshell/ssh.sock client_tls_secret_name openshell-client-tls host_gateway_ip 10.0.0.1 enable_user_namespaces false workspace_default_storage_size 10Gi sa_token_ttl_secs 3600关键参数说明含默认值与约束workspace_modeshared默认/managed/operatorgateway_idManaged 模式命名空间前缀所用身份必须是 DNS-1123 label默认openshell通常来自网关 JWT 的gateway_idnamespaceShared 模式与默认场景下的沙箱命名空间驱动默认DEFAULT_K8S_NAMESPACE openshellCLI 默认defaultimage_pull_policy/sandbox_runtime_image_pull_policy/supervisor_image_pull_policy接受always/if_not_present/never源码KubernetesImagePullPolicy同时接受 Kubernetes 原生大写拼写sandbox_runtime_image/supervisor_image分别默认对应网关版本default_sandbox_runtime_image()/default_supervisor_image()可显式固定特定构建sa_token_ttl_secs投影令牌 TTL秒kubelet 强制下限 600 秒驱动上限 86400 秒默认 3600sandbox_uid/sandbox_gid显式非 root UID/GID未设置时按 OpenShift SCC 注解自动探测再回退默认10001operator_namespace_label/operator_namespace_fileOperator 模式命名空间发现二选一或二者均可设置但源码校验要求至少一个且文件模式下热加载managed_ssh_ingress子表Managed 模式下的 SSH ingress 隔离enabled时要求gateway_namespace与gateway_pod_selector成对给出驱动据此创建仅允许网关 Pod 访问 TCP 2222 的 NetworkPolicysandbox_runtime子表network_policy_enforced必须显式确认为true与boundary_port默认 5500必须 ≥ 1024。企业代理相关可选配置https_proxy、no_proxy、proxy_auth_secret_name/proxy_auth_secret_key、proxy_auth_allow_insecure、proxy_connect_by_hostname、proxy_ca_bundle的配对校验与详细语义见 网关配置参考其中no_proxy只绕过企业代理、绝不绕过 OpenShell 策略代理凭据 Secret 只挂载进网络 supervisor 容器。外部资源准入标签默认情况下所有计算驱动的template.driver_config都是关闭的。operator 可以开启它而不放弃资源审批[openshell.drivers.kubernetes] allow_driver_config true [openshell.drivers.kubernetes.resource_admission] enabled true [openshell.drivers.kubernetes.resource_admission.required_labels] openshell.ai/sandbox-attachable true openshell.ai/sandbox-attachable-workspace ${workspace}规则要点${workspace}是整个标签值解析为被授权的 OpenShell 工作区名不是Kubernetes 命名空间或调用方标签不支持其他替换与表达式省略准入设置时使用上述默认标签提供了 map 则替换默认值且每个条目都必须匹配显式空 map 在启用强制时非法至少需要一个固定标签使共享资源仍需要显式 operator 批准保留键openshell.ai/managed-by、openshell.ai/gateway-id、openshell.ai/sandbox-workspace不可用于required_labelsoperator 必须在使用前给被引用的资源打标签例如工作区team-a的 PVC 需要openshell.ai/sandbox-attachable: true与openshell.ai/sandbox-attachable-workspace: team-a沙箱上的标签不批准其附件检查对象Kubernetes 检查调用方选择的 PVC、RuntimeClass 与 PriorityClassRuntimeClass/PriorityClass 属于共享 operator 基础设施必须匹配每个固定标签但${workspace}条目不适用于它们Image-pull Secrets 由网关配置选择不参与准入Managed 模式把每个显式配置的 Secret 复制进工作区命名空间并带网关所有权元数据Shared/Operator 模式下 Secret 必须已存在于沙箱命名空间GPU 设备附件暂免标签准入但显式 GPU 设备设置在驱动 JSON 内仍需allow_driver_config true公共 GPU 数量请求不需要准入启用时无受信标签解析器的裸 host bind mount 与补充镜像挂载会被拒绝发布者镜像标签不能授予 operator 批准。显式退出标签授权不启用驱动 JSON也不绕过既有路径/所有权/命名空间/隔离校验[openshell.drivers.kubernetes.resource_admission] enabled false策略变更后需重启网关与驱动。Helm 通过server.drivers.kubernetes.allowDriverConfig、resourceAdmission.enabled与resourceAdmission.requiredLabels暴露这些设置见 Helm 图表 与 部署清单。十一、可观测性与分布式追踪当网关配置了[openshell.gateway.otlp]时Kubernetes 计算驱动的 span 以服务名openshell-driver-kubernetes导出到同一个 OTLP/gRPC collector驱动保留网关的 trace context并在其进程内与独立standalone形态下使用相同的 compute-driver RPC span 名独立部署需设置--gateway-name或OPENSHELL_GATEWAY_NAME使导出的 span 携带与网关 span 相同的openshell.gateway.name资源属性见 main.rs 的--otlp-endpoint/OPENSHELL_OTLP_ENDPOINT等参数创建 Agent Sandbox 资源时驱动把活动的 W3C trace context 序列化进控制器保留的opentelemetry.io/trace-context注解AGENT_SANDBOX_TRACE_CONTEXT_ANNOTATION见 driver.rs。启用 OTLP 的 Agent Sandbox 控制器因此可以把其异步协调reconciliationspan 挂接到发起创建操作的 OpenShell create trace 上。独立运行驱动时也支持--admission-config-json/OPENSHELL_DRIVER_ADMISSION_CONFIG_JSON{}表示安全默认以及OPENSHELL_WORKSPACE_MODE、OPENSHELL_GATEWAY_ID、OPENSHELL_SANDBOX_NAMESPACE、OPENSHELL_K8S_SANDBOX_SERVICE_ACCOUNT、OPENSHELL_SANDBOX_IMAGE_PULL_SECRETS逗号分隔等环境变量。十二、运维注意事项与最佳实践综合文档与源码落地时建议遵守以下约束网络策略确认先行仅在确认 CNI 强制执行 ingress/egress NetworkPolicy 后设置network_policy_enforced true配置校验强制要求。保持沙箱命名空间行政化不可信主体不得创建宽松策略、创建 Pod、读取 bootstrap Secret 或伪造 OpenShell 角色标签精确授权仍由 TLS JWT claims 会话代际 记录 Pod UID 兜底。StorageClass 必配无默认时集群没有默认 StorageClass 时必须设置workspace_storage_class否则 PVCPending、沙箱永不启动。升级 Sandbox 控制器后重启网关让驱动重新探测 served API 版本v1beta1→v1alpha1回退。Stop/Start 与 Delete 语义Stop 保留 Sandbox 资源与工作区 PVCSuspended或replicas: 0Start 轮换 Secret 并复用 PVC只有 Delete 移除资源与存储。升级前盘点外部资源没有可验证准入来源的旧沙箱状态需要重建OpenShell 不会自动批准旧附件删除的工作区名复用前应清理过期标签。Managed 模式命名约束gateway_id必须是 DNS-1123 label 且长度受 63 字符命名空间上限约束最长 33 字符配合 19 字符工作区名。PVC 工作区为过渡方案会复制基础镜像/sandbox且不自动应用镜像更新到既有 PVC应关注未来快照能力替代。参考源码与文档驱动 READMEcrates/openshell-driver-kubernetes/README.md配置结构与校验config.rs驱动核心实现认证、watch、调度门、PVC 注入driver.rs网络围栏与边界协议供给isolation.rs独立部署入口与 CLI 参数main.rs网关配置参考含 Kubernetes 完整 TOML 与外部资源准入gateway-config.mdx赞分享【免费下载链接】OpenShellOpenShell is the safe, private runtime for autonomous AI agents.项目地址https://gitcode.com/gh_mirrors/op/OpenShell点击查看免费下载相关推荐GalTransl让视觉小说翻译变得更简单高效的AI解决方案GalTransl让视觉小说翻译变得更简单高效的AI解决方案 还在为日文游戏的语言障碍而烦恼吗GalTransl是一款革命性的AI驱动翻译工具专门为视觉小突破60帧限制WaveTools鸣潮工具箱的智能游戏优化革命突破60帧限制WaveTools鸣潮工具箱的智能游戏优化革命 当你为《鸣潮》的帧率限制感到困扰时当你发现高性能硬件在游戏中无法完全发挥潜力时WaveToo如何使用wlan-sec-test-tool进行WiFi安全测试完整新手入门指南如何使用wlan sec test tool进行WiFi安全测试完整新手入门指南 wlan sec test tool是一款功能强大的WiFi安全测试工具帮网络安全渗透测试上一篇Godotdec 使用教程下一篇华硕笔记本性能优化终极指南用G-Helper告别Armoury Crate臃肿时代创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

TypeChat 工作原理与实战指南:用 TypeScript 类型构建安全、可靠的自然语言接口 2026/9/25 7:50:25

TypeChat 工作原理与实战指南:用 TypeScript 类型构建安全、可靠的自然语言接口

大模型AI 应用后端 【免费下载链接】TypeChat TypeChat is a library that makes it easy to build natural language interfaces using types. 项目地址: https://gitcode.com/gh_mirrors/ty/TypeChat 点击查看 免费下载 导读 TypeChat 是微软开源的一个 TypeScr…

阅读更多 →
TEN Framework vosk_asr_cpp 扩展深入解析:用 C++ 构建基于 Vosk 的本地实时语音识别 2026/9/25 7:50:06

TEN Framework vosk_asr_cpp 扩展深入解析:用 C++ 构建基于 Vosk 的本地实时语音识别

人工智能AI Agent多模态语音AI 应用 【免费下载链接】ten-framework Open-source framework for conversational voice AI agents 项目地址: https://gitcode.com/TEN-framework/ten-framework 点击查看 免费下载 本文以 TEN Framework 仓库中的 vosk_asr_cpp 示例…

阅读更多 →
PaddleSpeech VITS 单调对齐模块解析:monotonic_align 的 maximum_path 实现与双后端加速机制 2026/9/25 7:50:06

PaddleSpeech VITS 单调对齐模块解析:monotonic_align 的 maximum_path 实现与双后端加速机制

人工智能语音音频NLP媒体生成 【免费下载链接】PaddleSpeech Easy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation …

阅读更多 →
安徽部分地区用户力荐的净菜加工配送服务商挑选全攻略 2026/9/25 7:49:59

安徽部分地区用户力荐的净菜加工配送服务商挑选全攻略

很多安徽连锁餐饮品牌拓展长三角市场,或是跨城布局门店的时候,都在找能做食材溯源的配送公司,也会疑问长三角地区有哪些好的食材配送企业,也会咨询能做食材批量加工配送的公司有哪些靠谱选择。伴随着长三角餐饮连锁化发展不断提速…

阅读更多 →
无人机松材线虫目标检测数据集】 大疆无人机航拍松材线虫检测数据集 2026/9/25 7:49:46

无人机松材线虫目标检测数据集】 大疆无人机航拍松材线虫检测数据集

无人机松材线虫目标检测数据集】 无人机:DJI M300RTK P1相机 数据类型:裁剪后的图片XML标签YOLO标签 总内存大小:19.2G(14211张) 图片分辨率:640*640 采集高度:300m 采集角度:90 采集…

阅读更多 →
迎宾机器人排名怎么评:医院与政务大厅应把问询分流、路线引导和知识边界放在前面 2026/9/25 7:49:27

迎宾机器人排名怎么评:医院与政务大厅应把问询分流、路线引导和知识边界放在前面

医院、政务服务中心和公共办事大厅与企业展厅不同,访客进入空间后的目标通常非常明确:找科室、找窗口、问材料、问办理步骤、确认楼层或路线。现场问题数量多、表达方式不统一,同一事项还可能因为业务变化而调整。如果机器人只能播放欢迎语或…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉