Skip to content

01. K8sGPT AI 故障诊断 Agent 落地实战

场景:RKE2 6 节点生产集群(3 CP + 3 Worker),希望集群异常能被自动发现并用中文解释清楚怎么修, 而不是等用户报障后人工翻日志。选型 K8sGPT(CNCF sandbox)+ 阿里百炼 DashScope(qwen-plus)。

1. 方案架构

k8sgpt-operator(Deployment,含 rbac-proxy,指标接入 rancher-monitoring)
   │ 监听 K8sGPT CR,拉起分析服务器,按 interval: 10m 触发全集群扫描

k8sgpt 分析服务器(镜像固定 v0.4.9 内部 Harbor)
   │ Analyzer 逐项扫描(Pod/Service/Deployment/Node/Ingress...)
   │ 发现问题 → 构造 prompt → 调 AI 后端 → 写 Result CR(问题+AI 方案)
   │ 新结果 → sink(cloudevents) → 飞书适配器 → 飞书群卡片

AI 后端:DashScope OpenAI 兼容端点,模型 qwen-plus,按 token 计费

关键决策:

选择理由
AI 后端DashScope 公网 API国内直连稳定、qwen-plus 便宜;内网 vLLM 集群网段不可达被否
数据安全anonymized: true资源名 base64 打码后再送出,明文不出内网
语言language: 简体中文见踩坑 2,填 chinese 没用
自动化autoRemediation: false生产红线:AI 只建议不动手
巡检频率interval: "10m"时效与费用平衡(实测 ¥3/天以内)

2. 三个真实踩坑(都是文档没有、实测撞出来的)

坑 1:飞书通知"收到了但没内容"

现象:群里能收到 K8sGPT 消息,但正文空白。

根因:operator v0.2.x 的 cloudevents sink 真实载荷是 slack 风格 {text, attachments[]}, 不是直觉以为的 Result CR 结构。按 data.spec.kind/error/details 解析字段全空。 (详见本模块 02 篇,附真实报文样例。)

教训:通知链路必须用真实事件端到端验证,mock 报文验证不了生产格式。

坑 2:language: chinese 不生效,报告全英文

K8sGPT 把 language 值原样插入固定提示词 written in --- <值> --- language, 但输出格式模板(Error:/Solution:)本身是英文且权重更高——实测 qwen-plus 遇到 chinese 仍输出英文。改成 简体中文 才稳定输出中文(直连 API 对比验证过)。 仍有个别报告英文(anonymize 打码内容干扰模型),最终靠适配器兜底翻译补全(见 02 篇)。

坑 3:为"安静"关掉适配器日志,排障时抓瞎

初版适配器把 log_message 静默了,出问题时完全无法定位是"没收到"还是"解析失败"还是"飞书拒绝"。 修复后所有关键节点打印 stdout(recv 摘要 / 翻译 / 飞书响应), kubectl logs 即第一现场。通知链路的日志不是噪音,是保险丝。

3. 部署要点速记

  • chart/镜像全部先入内部 Harbor(operator 会再拉一个分析服务器镜像,CR 里必须 spec.repository/version 固定内部地址,否则默认拉 ghcr latest
  • analysis.interval 必须匹配 ^[0-9]+[smh]$600"600" 都被 CRD 拒,用 "10m"
  • Secret 分离:k8sgpt-backend(AI Key)/ k8sgpt-feishu(webhook),均 optional 引用
  • 完整手册见 apps/k8sgpt 部署文档

4. 效果与费用

  • 实测捕获:MySQL 主库 OOM Kill、Service 无端点(标签不匹配)等真实问题, 10 分钟内产出中文诊断卡片推送群里(问题描述 + 分步修复命令)
  • 费用:每次异常项分析 1~2K tokens,qwen-plus ≈ ¥0.0008/千 tokens, 10 个异常项 × 10 分钟一轮 ≈ ¥3/天以内,集群健康时趋近于 0
  • 结果自动消失:问题修复后对应 Result CR 自动清除,无垃圾堆积

5. 边界与后续

  • anonymize 的代价:打码名会让 AI 偶尔误判(把 base64 当故障原因),解读时甄别; 切内网 vLLM 后可关闭
  • 当前只读诊断。自动修复演进见 03-ai值班agent路线图