Kubernetes
aiod 按普通容器设计:一个进程、一个端口。
Kubernetes 使用两个探针:liveness 检查进程是否存活,readiness 检查能力是否就绪。将 aiod 作为 pod 中的一个容器运行即可。
只有当 Pod 中还运行桌面或供 daemon 控制的 Chromium 时,才需要额外的安全上下文。
下面的 {base_url} 表示集群内部的 Service 地址,或集群外部的 ingress 地址。
Deployment + Service
下面的清单将 aiod 配置为监听 8091 端口。
下面的清单包含一个 Deployment 和一个 Service,并配置了两个探针:
如果要开放访问,删除 AIO_API_KEY 的 env 块、对应的 secret,以及 readiness 探针中的 httpHeaders。
仅当 Service 无法从集群外访问时,这样配置才安全。
先创建 secret,再应用清单:
为桌面场景添加 computer-use
如果 pod 要暴露桌面,请在同一个 pod 中再运行一个 computer-use 容器。
aiod 通过 AIO_COMPUTER_USE_URL(默认 http://127.0.0.1:18100)连接该容器,并将 /v2/computer/* 转发给它。
同一个 pod 中的容器共享网络命名空间,因此默认地址可以直接访问。
worker 不存在或未运行时,这些路由返回 503。
Chromium 的 seccomp 与 /dev/shm
aiod 是 CDP 客户端,不是浏览器。它连接已经在 BROWSER_REMOTE_DEBUGGING_HOST:PORT(默认 127.0.0.1:9222)上监听的 Chromium,不会自行启动 Chromium。
运行 Chromium 的容器需要以下配置:
- 通过
securityContext.seccompProfile配置 seccomp:使用节点上安装的Localhostprofile,或使用Unconfined。 - 为
/dev/shm分配约 4 GiB。可以将medium: Memory、sizeLimit: 4Gi的emptyDir卷挂载到/dev/shm。
探针
/v1/capabilities 缓存 5 秒,这对 kubelet 的定期探测已经足够。
只有手动检查时才需要加 ?refresh=true。
重启后的状态
会话、保留的命令输出、文件 watcher 和编辑器撤销历史都保存在 daemon 内存中。
pod 重启会清空这些状态,客户端重连后需要重新开始。 已经写入容器磁盘的文件不受影响。
验证
在集群内通过 Service 地址访问:
完整的运行模式、环境变量与排障见 部署指南。