1.1 背景介绍
AI Agent 落地到企业内部,第一个挡在路上的问题就是接入层。微信、Telegram、Slack、企业微信,每个渠道的协议不一样,消息格式不一样,认证方式不一样。自己写网关代码?写到第三个渠道就想掀桌了。
OpenClaw 就是解决这个问题的。它是一个开源 AI Agent Gateway,用 Node.js 运行时构建,把多渠道消息接入、模型路由、Token 认证这些脏活累活全包了。后端对接任意 OpenAI 兼容 API(包括 vLLM、Ollama 等自托管方案),前端对接各种 IM 渠道,中间做协议转换和流量管理。
官方只提供了 Docker 部署方案,没有 K8s 支持。但生产环境跑 Docker Compose 迟早要出事——单点故障、手动扩容、没有滚动更新,哪个都是定时炸弹。这篇文章把 Docker 方案和 K8s 方案都写清楚,Docker 方案用于开发测试快速验证,K8s 方案用于生产环境长期运行。
1.2 技术特点
- 多渠道网关统一接入:HTTP API、WebSocket 双协议复用同一端口(18789),支持 Telegram Bot、企业微信、Slack 等 IM 渠道接入。消息格式在网关层统一转换,后端模型服务不需要关心渠道差异。
- 插件式模型路由:通过 配置自定义 Provider,支持同时对接多个推理后端。模型标识使用 格式(如 ),路由逻辑在配置文件中声明,不需要写代码。
- 自托管模型原生支持:内置 OpenAI Responses API 兼容层,可以直接对接 vLLM、TGI、Ollama 等主流推理引擎。配置一个 加一个模型列表就能用,不需要额外的适配层。
- 轻量级 Token 认证:Gateway 内置 Token 认证机制(),每个接入方分配独立 Token,在网关层完成鉴权。生产环境可配合 K8s NetworkPolicy 实现网络层隔离。
1.3 适用场景
- 企业内部 AI 助手平台:统一管理多个部门的 AI 助手,每个部门分配独立 Token 和模型配额。通过 K8s 多租户隔离实现部门间的资源和网络隔离,避免互相影响。
- 多平台消息聚合:同一个 AI Agent 同时在 Telegram、企业微信、Slack 上提供服务。OpenClaw 在网关层做消息协议转换,后端只需要维护一套模型服务。
- 私有化大模型部署:数据不出企业网络,用 vLLM 部署 Qwen、LLaMA 等开源模型,OpenClaw 作为 API 网关对外提供标准化接口。GPU 资源通过 K8s 调度,按需分配给不同的推理实例。
1.4 环境要求
2.1 准备工作
2.1.1 系统检查
GPT plus 代充 只需 145
预期输出:Docker 版本 26.0 以上,Docker Compose V2 正常输出版本号。K8s 集群所有节点 Ready 状态。
2.1.2 安装 Docker(如果还没装)
2.1.3 准备 OpenClaw 配置目录
GPT plus 代充 只需 145
OpenClaw 的配置文件是 JSON5 格式,文件路径固定在 。容器内部以 用户(uid 1000)运行,挂载目录时需要注意权限问题。
2.2 Docker Compose 部署(官方方案)
这是官方推荐的部署方式,适合开发测试和小规模生产环境。
2.2.1 使用官方安装脚本
OpenClaw 提供了 一键安装脚本,流程是:拉取镜像 → 初始化配置()→ 启动服务。
GPT plus 代充 只需 145
如果网络环境不方便直接执行远程脚本,也可以手动操作:
2.2.2 环境变量配置
支持通过环境变量定制行为:
GPT plus 代充 只需 145
2.2.3 编写 Docker Compose 文件
生产环境建议用 管理,比裸 更容易维护:
2.2.4 编写 OpenClaw 配置文件
在 目录下创建 (JSON5 格式,支持注释):
GPT plus 代充 只需 145
注意: 这个值必须是强随机字符串,别用示例里的值。生成方法:
2.2.5 启动并验证
GPT plus 代充 只需 145
如果 返回 就说明网关启动成功了。 还会检查后端模型连通性,如果 vLLM 还没部署, 可能返回 ,这是正常的。
2.3 Kubernetes 部署方案
官方没有提供 K8s 部署方案,以下配置是基于 Docker 方案转写的。核心思路:把 Docker 的 bind mount 换成 PVC,把环境变量和配置文件换成 ConfigMap/Secret,把容器换成 Deployment + Service。
2.3.1 创建 Namespace
所有 OpenClaw 相关资源都放在 Namespace 下,方便管理和 RBAC 隔离。
2.3.2 ConfigMap:OpenClaw 配置文件
GPT plus 代充 只需 145
模型服务地址使用 K8s 内部 DNS:,不需要走集群外部网络。
2.3.3 Secret:敏感信息
也可以用 YAML 声明式创建(Token 需要 base64 编码):
GPT plus 代充 只需 145
2.3.4 PersistentVolumeClaim:持久化存储
根据集群实际情况调整。云厂商环境一般用 (AWS)、(GCP)、(Azure)。自建集群用 或 NFS。
如果 Gateway 需要多副本, 要改成 ,存储后端也要支持(NFS、CephFS 等)。单副本用 就够了。
2.3.5 Deployment:OpenClaw Gateway
GPT plus 代充 只需 145
几个关键设计点:
- initContainer 处理配置:ConfigMap 挂载的目录是只读的,但 OpenClaw 运行时需要读写 目录。所以用 initContainer 把配置文件从 ConfigMap 复制到 PVC,同时替换 Token 占位符。
- securityContext uid=1000:OpenClaw 镜像以 用户运行(uid 1000),PVC 目录的 也设为 1000,避免权限问题。
- 三种探针都配了:startupProbe 给容器 60 秒启动时间(5s × 12次),livenessProbe 检测进程存活,readinessProbe 检测服务就绪。
- RollingUpdate maxUnavailable=0:更新时先拉起新 Pod 再下旧 Pod,服务零中断。
2.3.6 Service
ClusterIP Service 供集群内部访问(Ingress 转发用),NodePort Service 供没有 Ingress 的环境直接通过 访问。生产环境推荐走 Ingress + ClusterIP,不暴露 NodePort。
2.3.7 Ingress:HTTPS 暴露
GPT plus 代充 只需 145
重要:Ingress 的 设成 3600 秒,因为大模型推理响应时间可能很长(特别是长文本生成场景)。默认 60 秒超时在生产环境一定会出问题,这个坑踩过的人都知道。
WebSocket 的 必须设为 1.1,否则 WS 连接建不起来。
2.4 vLLM 推理服务部署
OpenClaw 网关本身不做推理,需要后端挂一个推理服务。这里用 vLLM 部署 模型。
2.4.1 vLLM Deployment
几个坑点说明:
- 必须挂载 emptyDir:vLLM 多进程通信依赖共享内存,Docker 默认的 64MB shm 远远不够。这里给了 16Gi,35B 模型 4 卡并行至少需要这个量级。
- :Qwen3.5-35B-A3B-FP8 是 FP8 量化模型,4 张 A100 80GB 可以稳定加载。2 张卡勉强能跑但显存利用率太高,留不出 KV Cache 空间。
- :大模型加载需要时间,35B 模型从磁盘加载到 GPU 至少要 90 秒,设短了 Pod 会被 K8s 反复杀掉重启。
- :给 KV Cache 留 10% 的显存余量。设成 0.95 虽然能多接几个并发,但在突发流量下容易 OOM。
- nodeSelector:确保 Pod 调度到有 GPU 的节点,标签 需要提前给节点打好。
2.4.2 vLLM Service
GPT plus 代充 只需 145
这个 Service 只在集群内部暴露,OpenClaw 网关通过 访问。不需要对外暴露推理服务端口,安全性更好。
2.5 OpenClaw 对接 vLLM
2.5.1 配置 models.providers
OpenClaw 的 中 部分配置 vLLM 作为推理后端:
Provider 名称 可以自定义,客户端请求时通过 格式指定模型,比如 。
如果有多个推理后端,可以配置多个 Provider:
GPT plus 代充 只需 145
2.5.2 验证模型连通性
2.6 启动验证
2.6.1 K8s 部署一键执行
GPT plus 代充 只需 145
2.6.2 健康检查验证
2.6.3 端到端功能测试
GPT plus 代充 只需 145
如果返回了正常的模型响应,说明整条链路跑通了:客户端 → OpenClaw Gateway(认证 + 路由)→ vLLM(推理)→ 返回结果。
3.1 完整 docker-compose.yml(含 vLLM)
Docker 方案的完整 Compose 文件,一个文件跑起整套服务:
使用方法:
GPT plus 代充 只需 145
3.2 完整 K8s YAML(All-in-One Manifest)
把所有 K8s 资源合并到一个文件,方便一键部署:
部署命令:
GPT plus 代充 只需 145
3.3 openclaw.json 生产配置
完整的生产级配置文件,包含 vLLM Provider、Qwen3.5 模型和多 Provider 路由:
3.4 案例一:企业微信 / Telegram 多渠道接入
场景描述:公司同时使用企业微信(内部沟通)和 Telegram(海外团队),需要同一个 AI 助手在两个平台上提供服务。OpenClaw 作为网关统一接入,后端共用同一个 vLLM 推理实例。
架构图:
GPT plus 代充 只需 145
实现步骤:
- 在企业微信管理后台创建应用,获取 CorpID、AgentID、Secret
- 在 Telegram 通过 @BotFather 创建 Bot,获取 BOT_TOKEN
- 配置 OpenClaw 渠道接入
设置 Webhook 回调:
GPT plus 代充 只需 145
验证:
3.5 案例二:K8s 多租户隔离部署
场景描述:公司有三个部门(研发部、市场部、客服部),每个部门需要独立的 AI 助手,使用不同的模型和配置。要求部门之间网络隔离,互不影响。
隔离方案:Namespace 隔离 + NetworkPolicy 网络隔离 + RBAC 权限隔离 + 独立 vLLM 实例。
3.5.1 Namespace 规划
GPT plus 代充 只需 145
3.5.2 NetworkPolicy:部门间网络隔离
3.5.3 RBAC:部门管理员权限
GPT plus 代充 只需 145
3.5.4 各部门独立部署
每个部门在自己的 Namespace 部署独立的 OpenClaw Gateway + vLLM 实例。以研发部为例:
部门间完全隔离:不同 Token、不同网络策略、不同模型配置、不同资源配额。研发部的请求不会路由到市场部的 vLLM,市场部的 Pod 也无法访问研发部的服务。
3.5.5 ResourceQuota:资源配额限制
GPT plus 代充 只需 145
市场部只部署 OpenClaw Gateway,模型对接云端 API(如 OpenAI),不需要 GPU 资源。研发部自带 vLLM + GPU,资源配额更高。这样既满足了不同部门的需求差异,又避免了资源争抢。
4.1 **实践
4.1.1 性能优化
Gateway 并发调优:OpenClaw 基于 Node.js 单线程事件循环,默认并发能力取决于 libuv 线程池大小。生产环境建议设置 ,可将 I/O 密集型操作的并发提升 4 倍(默认值 4)。
限制 V8 堆内存上限,设为容器 memory limit 的 75%。2Gi 内存限制对应 1536MB 堆上限,留出余量给 Node.js 的非堆内存(Buffer、Native 模块等)。
vLLM Continuous Batching 参数:vLLM 的 continuous batching 是吞吐量的关键。 控制同时处理的最大序列数,默认 256。A100 80GB 4 卡跑 35B 模型,实测 是甜点值,QPS 稳定在 40-60。设太高会导致 KV Cache 不够分,反而降低吞吐。
GPT plus 代充 只需 145
开启后,长 prompt 的 prefill 阶段会分块执行,不会阻塞其他请求的 decode 阶段。实测开启后 P99 延迟从 12s 降到 4s。
资源 limits 设置原则:CPU request 设为 limit 的 25-50%,给突发流量留余量。内存 request 和 limit 建议设成一样,避免 OOM Kill 后 Pod 被驱逐到其他节点引发雪崩。GPU 的 request 和 limit 必须相等(NVIDIA device plugin 的硬性要求)。
4.1.2 安全加固
Token 轮换机制:生产环境建议每 90 天轮换一次 Gateway Token。轮换流程:生成新 Token → 更新 Secret → 滚动重启 Gateway Pod → 通知接入方更新 Token。可以通过 CronJob 自动化:
GPT plus 代充 只需 145
NetworkPolicy 最小权限:Gateway Pod 只需要出站访问 vLLM Service(端口 8000)和 DNS。入站只允许 Ingress Controller。别偷懒开 allow-all,网络层隔离是多租户安全的基础。
RBAC 最小权限原则:运维人员使用 ClusterRole,开发人员只给 Namespace 级别 Role。Secret 的 get 权限要谨慎分配,能用 list 就别给 get(list 只返回 Secret 名称,get 会返回内容)。
TLS 全链路加密:Ingress 到 Gateway 走 HTTPS(cert-manager 自动签发),Gateway 到 vLLM 在集群内部走 HTTP(性能考虑)。如果安全要求极高,可以用 Service Mesh(Istio/Linkerd)实现集群内部 mTLS。
4.1.3 高可用配置
Gateway 多副本 + PDB:生产环境至少 2 个副本,配合 PodDisruptionBudget 保证滚动更新和节点维护时至少有 1 个 Pod 可用。
GPT plus 代充 只需 145
HPA 自动扩缩容:基于 CPU 使用率自动扩缩 Gateway 副本数。Gateway 是 I/O 密集型,CPU 通常不高,建议同时监控自定义指标(如请求队列长度)。
很重要,防止流量波动导致频繁缩容。缩容太快会在下一波请求到来时来不及扩容,用户体验骤降。
vLLM 高可用:vLLM 本身是有状态服务(GPU 显存中有模型权重),不支持多副本负载均衡。高可用方案是部署 2 个独立的 vLLM 实例(不同 Deployment),在 OpenClaw 配置多 Provider,主 Provider 故障时手动切换到备用 Provider。未来可以用 OpenClaw 的 Provider 健康检查实现自动故障转移。
4.2 注意事项
4.2.1 配置注意事项
uid 1000 权限问题:这是新手踩得最多的坑。OpenClaw 容器以 用户(uid 1000)运行,如果宿主机目录的 owner 不是 1000,容器内写入会报 。
GPT plus 代充 只需 145
bind 地址配置:容器内必须 bind ,别写 。写 只能容器内部访问,外部请求过来全是 。这个错误在日志里不会报错,排查起来很头疼。
配置热重载:OpenClaw 目前不支持配置文件热重载,修改 后需要重启服务才能生效。K8s 环境下 就行,Docker 环境 。
4.2.2 常见错误
4.2.3 兼容性问题
- Docker Compose V1 vs V2:OpenClaw 的 使用了 语法(GPU 声明),只有 Docker Compose V2 支持。V1 的 命令会报语法错误。用 (没有横杠)确认是 V2。
- K8s 版本兼容:Ingress API 从 K8s 1.19 开始稳定,1.22 移除了 。如果集群版本低于 1.19,需要改用旧 API 版本。
- NVIDIA Device Plugin:K8s 使用 GPU 需要安装 NVIDIA Device Plugin DaemonSet。没装的话 Pod 的 资源请求永远无法满足,Pod 会一直 Pending。
- Container Runtime:containerd 1.7+ 和 Docker 24+ 都支持 GPU 直通。CRI-O 需要额外配置 nvidia-container-runtime。
5.1 故障排查
5.1.1 日志查看
GPT plus 代充 只需 145
5.1.2 常见问题排查
问题一:Gateway Pod 状态 Pending,无法调度
解决方案:
- PVC Pending → 检查 StorageClass 是否存在,是否有可用 PV。云环境检查 CSI Driver 是否正常
- 资源不足 → 降低 resource requests,或扩容节点
- nodeSelector 不匹配 →
问题二:vLLM Pod OOMKilled
GPT plus 代充 只需 145
解决方案:
- 系统内存 OOM → 增加 Pod memory limit,确保节点物理内存充足(建议 4 倍 GPU 显存)
- GPU 显存 OOM → 降低 到 0.85,减小 ,或增加
- 不足 → 确认 emptyDir 的 足够大(建议 16Gi+)
问题三:Token 认证失败,返回 401
解决方案:
- 确认请求头格式:,注意 Bearer 后面有空格
- 确认 initContainer 的 sed 替换逻辑正确执行了(查看 initContainer 日志)
- 如果 Secret 更新了但 Pod 没重启,Token 不会自动生效。执行
5.1.3 调试模式
GPT plus 代充 只需 145
5.2 性能监控
5.2.1 关键指标监控
5.2.2 监控指标说明
5.2.3 Prometheus 监控告警配置
GPT plus 代充 只需 145
Prometheus ServiceMonitor 配置(需要 Prometheus Operator):
5.3 备份与恢复
5.3.1 备份策略
需要备份的数据:
- 配置文件(ConfigMap 已版本化,但建议额外备份)
- Gateway 工作空间数据(PVC)
- K8s 资源定义(YAML 文件)
- Secret(Token、API Key)
GPT plus 代充 只需 145
5.3.2 恢复流程
6.1 技术要点回顾
- Docker 方案快速启动: 一键部署,适合开发测试。 管理服务依赖和健康检查,比裸 更可控。核心配置就一个 (JSON5 格式),改完重启即可。
- K8s 方案生产就绪:Deployment + Service + Ingress 三件套,配合 ConfigMap/Secret 管理配置和敏感信息。initContainer 解决 ConfigMap 只读问题,securityContext 解决 uid 1000 权限问题。三种探针(startup/liveness/readiness)保证服务可靠性。
- vLLM 推理后端: 多卡并行, 共享内存必须挂载, 要给够(120s+)。 是安全值,别贪心设 0.95。
- 多租户隔离:Namespace + NetworkPolicy + RBAC + ResourceQuota 四层隔离。NetworkPolicy 默认拒绝跨 Namespace 流量,RBAC 限制管理权限,ResourceQuota 防止资源争抢。每个部门独立 Token,独立 vLLM 实例。
- 安全加固:Token 定期轮换(建议 90 天),NetworkPolicy 最小权限,TLS 全链路加密。Secret 的 RBAC 权限严格控制,别给 get 权限只给 list。
- 监控告警:Gateway 关注 CPU、内存、连接数;vLLM 关注 GPU Cache 使用率、请求队列长度、生成速率。Prometheus + ServiceMonitor 采集指标,PrometheusRule 配置告警。
6.2 进阶学习方向
- Service Mesh 集成:用 Istio 或 Linkerd 实现集群内部 mTLS、流量镜像、金丝雀发布。OpenClaw Gateway 的多副本可以利用 Istio 的加权路由实现灰度更新,新版本先承接 10% 流量,验证稳定后逐步扩大。
实践建议:先在测试环境部署 Istio,给 openclaw namespace 打上 标签,观察 sidecar 注入后的性能影响。
- GitOps 持续交付:用 ArgoCD 或 Flux 管理 OpenClaw 的 K8s 资源定义,配置变更通过 Git PR 审批,自动同步到集群。ConfigMap 变更自动触发 Deployment 滚动更新,告别手动 。
实践建议:把 拆分成独立文件放进 Git 仓库,ArgoCD Application 指向仓库路径,开启自动同步。
- 多集群联邦部署:使用 KubeFed 或 Karmada 实现跨集群部署,不同区域的用户请求路由到就近的 OpenClaw 实例。GPU 资源池跨集群调度,提升利用率。
实践建议:先实现两个集群的同配置部署,DNS 层做地域路由(AWS Route53 Geolocation / Cloudflare Load Balancing),再考虑联邦管理。
6.3 参考资料
- OpenClaw 官方文档 - 项目源码和官方 Docker 部署指南
- vLLM 官方文档 - vLLM 部署配置和性能调优参考
- Kubernetes 官方文档 - NetworkPolicy - 网络策略配置详解
- NVIDIA GPU Operator - K8s GPU 资源管理和驱动自动化
- Qwen3.5 模型卡 - 模型规格、硬件需求和推理配置
A. 命令速查表
GPT plus 代充 只需 145
B. 配置参数详解
openclaw.json 核心参数
vLLM 关键启动参数
C. 术语表
D. 端口清单


本文档遵循 MIT 许可证,欢迎复制、修改和分发
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/236212.html