主题
K8sGPT 集群 AI 故障分析部署(k8sgpt 命名空间)
架构
k8sgpt-operator(controller-manager,2容器含 rbac-proxy)
│ 监听 K8sGPT CR,拉起分析服务器,按 interval 触发全集群扫描
▼
k8sgpt 分析服务器(Deployment,镜像固定 v0.4.9)
│ 逐项 Analyzer 扫描(Pod/Service/Deployment/Node/Ingress...)
│ 发现问题 → 构造 prompt → 调用 AI 后端 → 写入 Result CR
│ 新结果 → sink(cloudevents) → feishu-adapter 转格式 → 飞书群机器人
▼
AI 后端:阿里百炼 DashScope(OpenAI 兼容模式),模型 qwen-plus
发送前 anonymize 脱敏(资源名 base64 打码),分析数据不留内网之外明文
结果: kubectl get results.core.k8sgpt.ai -A(Result CR,含问题描述+AI 解决方案)
监控: ServiceMonitor 已接入 rancher-monitoring| 组件 | 副本 | 说明 |
|---|---|---|
| k8sgpt-operator | 1(含 kube-rbac-proxy) | 调谐 K8sGPT CR、动态 RBAC、触发分析 |
| k8sgpt 分析服务器 | 1 | 执行 Analyzer + 调用 AI 后端 |
| k8sgpt-feishu-adapter | 1 | cloudevents → 飞书互动卡片转换(python stdlib,无三方依赖) |
| AI 后端 | 外部 SaaS | DashScope qwen-plus,按 token 计费 |
镜像与 Chart(全部来自内部 Harbor 192.168.122.156:30000)
| 内容 | 内部地址 | 来源 |
|---|---|---|
| operator 镜像 | k8sgpt/k8sgpt-operator:v0.2.27 | ghcr.io(经 nju/daocloud 镜像站同步) |
| 分析服务器镜像 | k8sgpt/k8sgpt:v0.4.9 | ghcr.io |
| rbac-proxy 镜像 | k8sgpt/kube-rbac-proxy:v0.19.1 | quay.io(daocloud 镜像站) |
| operator chart | oci://…/charts/k8sgpt-operator:0.2.27 | charts.k8sgpt.ai |
最佳实践配置要点
| 项 | 配置 | 理由 |
|---|---|---|
| AI 后端 | OpenAI 兼容 + baseUrl 指向 DashScope | 国内可达、qwen-plus 性价比高 |
anonymized: true | 送出前资源名打码 | 公有云 API 数据安全(代价:AI 对打码名理解略降,可换内网 vLLM 后关闭) |
language: 简体中文 | 中文报告(不能填 chinese,实测仍回英文) | 团队阅读 |
analysis.interval: 10m | 10 分钟一轮 | 时效与 API 费用的平衡 |
backOff: 3 次重试 | 抗 API 限流/超时 | 稳定性 |
autoRemediation 关闭 | 不允许 AI 自动改集群 | 生产红线 |
| 镜像固定版本 + 内部 Harbor | 不用 ghcr latest | 可重复部署、离线可用 |
integrations.trivy 关闭 | 不引入额外镜像 | 需要时再开 |
| 飞书通知 | sink=cloudevents + 适配器转互动卡片 | K8sGPT 无飞书原生 sink;webhook 存 Secret;详见 飞书适配器详解 |
查看分析结果
bash
kubectl get results.core.k8sgpt.ai -A
kubectl -n k8sgpt get result <NAME> -o jsonpath='{.spec.details}' # AI 给出的解决方案部署命令
bash
export KUBECONFIG=~/.kube/config-122.31
cd k8sgpt/
./deploy.sh # 一键部署 + 验证(sync / check 子命令见脚本头注释)密钥
DashScope API Key 保存在 .secrets.env 与 Secret k8sgpt-backend(勿提交公共仓库)。