k8sgpt:用 AI 自动诊断 Kubernetes 集群问题

每次 Pod 出问题,你是不是都要 kubectl describekubectl logs、查文档、搜 StackOverflow?k8sgpt 把这个流程自动化了。

k8sgpt 是什么

k8sgpt 是 CNCF 沙箱项目,它会:

  1. 扫描集群中的异常资源
  2. 提取关键信息(事件、日志、状态)
  3. 调用 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 实现数据不出内网,非常适合在生产环境落地。

← 返回文章列表