manusai需通过helm chart声明式部署,采用statefulset保障调度层状态持久化,service启用clientip会话亲和;deepseek使用daemonset或hpa按gpu负载弹性伸缩,并通过cert-manager实现grpc双向tls认证,配合prometheus多维度监控告警。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Kubernetes集群中编排部署ManusAI,需突破单Pod裸跑限制,实现任务调度层与推理层的解耦、弹性扩缩与故障自愈。这要求严格遵循声明式编排规范,避免直接使用docker run或kubectl run临时命令。
构建ManusAI核心组件的Helm Chart结构
进入项目根目录,执行helm create manus-ai生成骨架;删除templates/tests目录——该目录在生产环境无实际用途且会干扰CI/CD流水线校验;修改Chart.yaml中的version字段为0.8.3,该版本号必须与manus-core官方发布的Helm仓库中tag严格一致,否则helm dependency update将拉取错误依赖。
在values.yaml中定义关键参数:replicaCount: 3用于调度层高可用;inferenceBackend: deepseek-13b-4bit指定后端模型标识;resourceLimits.cpu: "8"和memory: 32Gi需匹配A100 GPU节点的实际Allocatable资源,否则Pod将因资源不足处于Pending状态。
配置Manus调度层的StatefulSet与Service
编辑templates/manus-deployment.yaml,将Deployment改为StatefulSet:因为Manus调度器需持久化DAG执行状态,使用volumeClaimTemplates挂载PVC至/var/lib/manus/state路径;PVC的storageClassName必须与集群中已存在的SSD类StorageClass名称完全一致,例如rook-ceph-block。
Service类型设为ClusterIP,并添加sessionAffinity: ClientIP——这是为了保证同一客户端的任务请求始终路由到同一调度实例,避免跨实例状态不一致引发任务重复提交或丢失。
在Pod模板中注入环境变量:MANUS_BACKEND_URL: http://deepseek-svc.default.svc.cluster.local:8000,该地址必须与后续部署的DeepSeek Service的DNS解析名完全匹配,否则调度层无法发现推理后端。
部署DeepSeek推理服务的DaemonSet+HPA组合
方法一:GPU节点专属部署
编写deepseek-daemonset.yaml,设置nodeSelector为nvidia.com/gpu: "true";容器内必须挂载/dev/nvidiactl、/dev/nvidia-uvm和/dev/nvidia0三个设备文件,缺失任一都将导致CUDA初始化失败,Pod卡在Init:0/1状态。
方法二:按负载自动伸缩
创建deepseek-hpa.yaml,监控指标设为custom.metrics.k8s.io/v1beta1下的gpu_used_memory_bytes;触发阈值设为75%——低于此值易造成资源浪费,高于此值则可能因显存不足导致OOMKilled;最大副本数不得超过GPU节点总数,否则部分Pod将无法调度。
【关键前提】集群必须已安装NVIDIA Device Plugin和Metrics Server,否则HPA无法获取GPU指标,DaemonSet也无法识别GPU设备。
打通Manus与DeepSeek的gRPC双向认证链路
第一步:在cert-manager中签发证书
创建Issuer资源,使用ca类型并引用集群CA密钥;为manus-svc和deepseek-svc分别生成Certificate,Common Name必须与Service DNS名一致(如manus-svc.default.svc.cluster.local)。
第二步:挂载证书至双方Pod
在Manus StatefulSet的volumeMounts中挂载/etc/manus/tls路径,包含ca.crt、client.crt、client.key;在DeepSeek DaemonSet中挂载/etc/deepseek/tls,包含ca.crt、server.crt、server.key。
第三步:启用gRPC TLS参数
Manus启动命令追加--backend-tls-cert=/etc/manus/tls/client.crt --backend-tls-key=/etc/manus/tls/client.key --backend-tls-ca=/etc/manus/tls/ca.crt;DeepSeek服务启动时添加--grpc-tls-cert=/etc/deepseek/tls/server.crt --grpc-tls-key=/etc/deepseek/tls/server.key。
验证链路:进入Manus Pod执行grpcurl -plaintext -cert /etc/manus/tls/client.crt -key /etc/manus/tls/client.key -cacert /etc/manus/tls/ca.crt deepseek-svc:8000 list,成功返回服务列表即表示TLS握手通过。
配置Prometheus监控与告警规则
① 在manus-ai/templates/下创建prometheus-rules.yaml,定义以下三条关键规则:
— ManusTaskQueueLength > 500:持续2分钟触发P1级告警,表明调度器吞吐已达瓶颈;
— DeepSeekGPUUtilization{device="nvidia0"} > 95:持续1分钟触发P2级告警,预示显存即将耗尽;
— absent(manus_scheduler_up{job="manus"}):立即触发P0级告警,表示调度器全量宕机。
② 修改prometheus-operator的ServiceMonitor,将namespaceSelector.matchNames设为["default"],确保能抓取Manus和DeepSeek所在命名空间的指标端点。
③ 在DeepSeek容器中暴露/metrics端点,需在启动参数中加入--metrics-port=9091,且容器端口映射必须与该端口一致,否则Prometheus无法采集GPU利用率等关键指标。







