k8sgpt:用 AI 自动诊断 Kubernetes 集群问题
每次 Pod 出问题,你是不是都要 kubectl describe、kubectl logs、查文档、搜 StackOverflow?k8sgpt 把这个流程自动化了。
k8sgpt 是什么
k8sgpt 是 CNCF 沙箱项目,它会:
- 扫描集群中的异常资源
- 提取关键信息(事件、日志、状态)
- 调用 LLM 分析原因并给出修复建议
支持的 AI 后端:OpenAI、Azure OpenAI、Ollama(本地)、Amazon Bedrock 等。
安装
# macOS
brew install k8sgpt
# Linux
curl -LO https://github.com/k8sgpt-ai/k8sgpt/releases/latest/download/k8sgpt_linux_amd64.tar.gz
tar xzf k8sgpt_linux_amd64.tar.gz
mv k8sgpt /usr/local/bin/
# 验证
k8sgpt version
配置本地 Ollama(推荐)
# 先确保 Ollama 运行中,并已下载模型
ollama pull qwen2.5:14b
# 配置 k8sgpt 使用本地 Ollama
k8sgpt auth add \
--backend ollama \
--model qwen2.5:14b \
--baseurl http://localhost:11434
# 设为默认后端
k8sgpt auth default --provider ollama
基本使用
# 分析当前集群所有问题
k8sgpt analyze
# 输出示例:
# 🔍 AI Provider: ollama
#
# 0: Pod default/nginx-xxx
# Error: Back-off restarting failed container
# Solution:
# 容器 nginx 反复重启,退出码 1。
# 可能原因:
# 1. 配置文件 /etc/nginx/nginx.conf 语法错误
# 2. 端口 80 被占用
# 建议执行:
# kubectl logs nginx-xxx --previous
# kubectl exec -it nginx-xxx -- nginx -t
# 只分析特定命名空间
k8sgpt analyze --namespace production
# 详细模式(显示原始数据)
k8sgpt analyze --explain --with-doc
# 输出为 JSON(便于集成)
k8sgpt analyze --output json
支持的分析器
# 查看所有内置分析器
k8sgpt filters list
# 输出:
# Node
# Pod
# Deployment
# ReplicaSet
# PersistentVolumeClaim
# Service
# Ingress
# StatefulSet
# CronJob
# NetworkPolicy
# HorizontalPodAutoScaler
# ...
# 只运行特定分析器
k8sgpt analyze --filter Pod,PersistentVolumeClaim
在 Kubernetes 中部署(Operator 模式)
k8sgpt 支持以 Operator 形式部署,持续监控集群:
# 安装 Operator
helm repo add k8sgpt-operator https://charts.k8sgpt.ai/
helm install k8sgpt-operator k8sgpt-operator/k8sgpt-operator \
--namespace k8sgpt-operator-system \
--create-namespace
# 创建 K8sGPT 资源,配置自动分析
apiVersion: core.k8sgpt.ai/v1alpha1
kind: K8sGPT
metadata:
name: k8sgpt-ollama
namespace: k8sgpt-operator-system
spec:
ai:
enabled: true
model: qwen2.5:14b
backend: ollama
baseUrl: http://ollama.ollama-system:11434
noCache: false
filters:
- Pod
- Deployment
- PersistentVolumeClaim
sink:
type: slack # 分析结果推送到 Slack/飞书
webhook: https://hooks.slack.com/...
schedule: "*/10 * * * *" # 每 10 分钟扫描一次
自定义分析规则
# 添加自定义过滤器(基于 OPA/Rego)
k8sgpt filters add \
--name "HighMemoryUsage" \
--description "检测内存使用率超过 90% 的 Pod"
与告警系统集成
#!/usr/bin/env bash
# 定时运行,将结果推送到飞书
RESULT=$(k8sgpt analyze --output json --namespace production 2>/dev/null)
ISSUES=$(echo "$RESULT" | jq '.results | length')
if [[ "$ISSUES" -gt 0 ]]; then
SUMMARY=$(echo "$RESULT" | jq -r '.results[] | "• \(.name): \(.error[0].text)"' | head -5)
curl -s -X POST "$FEISHU_WEBHOOK" \
-H 'Content-Type: application/json' \
-d "{
\"msg_type\": \"text\",
\"content\": {
\"text\": \"🔍 k8sgpt 发现 ${ISSUES} 个问题:\n${SUMMARY}\"
}
}"
fi
与其他工具对比
| 工具 | 特点 | 适用场景 |
|---|---|---|
| k8sgpt | 开源、支持本地 LLM、CNCF 项目 | 通用 K8s 诊断 |
| Robusta | 告警驱动、Playbook 自动化 | 事件响应自动化 |
| OpsPilot | 商业产品、多云支持 | 企业级 AIOps |
k8sgpt 是目前最成熟的开源 K8s AI 诊断工具,配合本地 Ollama 实现数据不出内网,非常适合在生产环境落地。