AI故障诊断工具—k8sGPT

**k8sgpt**是一个用于扫描 Kubernetes 集群、诊断和分类问题的工具,支持简单的英语。

它将 SRE 经验融入到分析器中,并帮助提取最相关的信息,并通过 AI 对其进行丰富。

开箱即用,可与 OpenAI、Azure、Cohere、Amazon Bedrock、Google Gemini 和本地模型集成。

环境信息

项目
Kubernetes 版本 v1.34.8
k8sgpt Operator 版本 v0.2.27
k8sgpt CLI 版本 v0.3.44
AI 后端 DeepSeek (deepseek-v4-flash)
项目地址 https://github.com/k8sgpt-ai/k8sgpt.git

一、安装 k8sgpt CLI

1. 下载 k8sgpt

复制代码
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/

2. 验证安装

复制代码
k8sgpt version

root@master01:~# k8sgpt version
k8sgpt: 0.4.36 (d33935a), built at: unknown

二、配置 k8sgpt CLI

1.DeepSeek 模型说明

模型名称 说明
deepseek-v4-flash DeepSeek V4 快速版,284B 参数,性价比高(推荐)
deepseek-v4-pro DeepSeek V4 旗舰版,1.6T 参数,性能最强
deepseek-chat 旧别名,实际指向 deepseek-v4-flash,2026-07-24 后停用
deepseek-reasoner 旧别名,2026-07-24 后停用

建议使用 deepseek-v4-flashdeepseek-v4-pro,避免使用即将停用的旧别名。

2. 添加 DeepSeek 认证

复制代码
k8sgpt auth add \
  -b openai \
  --baseurl https://api.deepseek.com/v1 \
  -m deepseek-v4-flash \
  -p <your-deepseek-api-key>

3. 验证 CLI 分析

复制代码
k8sgpt analyze --explain

这些是在安装kubernetes过程当中产生的,可以忽略,后面会演示对我们真正有用的分析结果。

为什么 k8sgpt 的分析不准确?

  1. 检测逻辑过于简单 - k8sgpt 只检查 ConfigMap 是否被 Pod 的 volumes 或 envFrom 直接引用,但这些系统级 ConfigMap 是通过其他机制使用的(如 kubelet 启动参数、API 服务器内部使用)
  2. AI 没有上下文 - DeepSeek 模型不了解这些 ConfigMap 是 K8s 核心组件,给出了通用的"删除未使用资源"

三、安装 k8sgpt Operator

需要提前安装helm

地址:GitHub - helm/helm: The Kubernetes Package Manager · GitHub

1. 添加 Helm 仓库

复制代码
helm repo add k8sgpt https://charts.k8sgpt.ai/
helm repo update

2. 搜索可用 chart

复制代码
helm search repo k8sgpt/

输出示例:

复制代码
NAME                  	CHART VERSION	APP VERSION	DESCRIPTION                                       
k8sgpt/interplex      	1.1.0        	v0.0.11    	A very fast cache written in Rust                 
k8sgpt/k8sgpt-operator	0.2.27       	0.2.25     	Automatic SRE Superpowers within your Kubernete...

3. 下载 chart 并安装

复制代码
cd /root/k8sgpt-operator
helm pull k8sgpt/k8sgpt-operator --version 0.2.27
tar -xzf k8sgpt-operator-0.2.27.tgz
​
# 安装 Operator
helm install k8sgpt-operator k8sgpt-operator/ -n k8sgpt-operator-system --create-namespace

4. 验证 Operator 运行状态

复制代码
kubectl get pods -n k8sgpt-operator-system

预期输出:

复制代码
NAME                                                 READY   STATUS    RESTARTS   AGE
k8sgpt-operator-controller-manager-xxxxx-xxxxx       2/2     Running   0          1m

注意: 确保只有一个 controller-manager Pod 运行。如果出现两个,说明之前有重复安装,需要删除多余的:

复制代码
helm list -n k8sgpt-operator-system
helm uninstall <重复的release名> -n k8sgpt-operator-system

四、创建 DeepSeek API Secret

1. 对 API Key 进行 base64 编码

复制代码
echo -n "<your-deepseek-api-key>" | base64

需要消耗少量的token,这主要取决于你的k8s有多少需要分析的资源。

2. 创建 Secret

复制代码
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
  name: k8sgpt-deepseek-secret
  namespace: k8sgpt-operator-system
type: Opaque
data:
  openai-api-key: <base64编码后的key>
EOF

五、创建 K8sGPT 自定义资源

1. 编写 CR 文件

复制代码
# /root/k8sgpt-cr.yaml
apiVersion: core.k8sgpt.ai/v1alpha1
kind: K8sGPT
metadata:
  name: k8sgpt-deepseek
  namespace: k8sgpt-operator-system
spec:
  ai:
    enabled: true
    backend: openai
    baseUrl: https://api.deepseek.com/v1
    model: deepseek-v4-flash
    secret:
      name: k8sgpt-deepseek-secret
      key: openai-api-key
  noCache: false
  version: "v0.3.44"

字段说明:

字段 说明
backend 使用 openai 兼容后端(DeepSeek 兼容 OpenAI API)
baseUrl DeepSeek API 地址
model 模型名称,当前支持 deepseek-v4-flash(最新)和 deepseek-chat(旧别名)
version k8sgpt 工作负载的版本,即 Operator 部署的 k8sgpt Pod 中运行的二进制版本

2. 部署 CR

复制代码
kubectl apply -f /root/k8sgpt-cr.yaml

3. 验证部署

复制代码
kubectl get k8sgpt -n k8sgpt-operator-system
kubectl get pods -n k8sgpt-operator-system

预期输出:

复制代码
NAME              AGE
k8sgpt-deepseek   3h56m

NAME                                                  READY   STATUS    RESTARTS   AGE
k8sgpt-deepseek-84b974856f-8z27s                      1/1     Running   0          3h31m
k8sgpt-operator-controller-manager-84d89cb457-7cbrb   2/2     Running   0          3h59m

六、验证功能

1. 创建测试 Pod

创建一个test-bad-pod使用nginx不存在的镜像标签,模拟镜像拉取错误。

复制代码
kubectl run test-bad-pod --image=nginx:nonexistent-tag-12345 -n default

root@master01:~# kubectl get pod
NAME           READY   STATUS             RESTARTS   AGE
test-bad-pod   0/1     ImagePullBackOff   0          6m30s

2. 等待分析结果

复制代码
# 等待约 1-2 分钟
kubectl get results -n k8sgpt-operator-system

预期输出:

复制代码
NAME                 KIND         BACKEND   AGE    VALID
defaulttestbadpod    Pod          openai    1m     true

3. 查看分析详情

复制代码
kubectl get result defaulttestbadpod -n k8sgpt-operator-system -o yaml

示例输出:

复制代码
root@master01:~# kubectl run test-bad-pod --image=nginx:nonexistent-tag-12345 -n default
pod/test-bad-pod created
root@master01:~# kubectl get results -n k8sgpt-operator-system
NAME                KIND   BACKEND   AGE
defaulttestbadpod   Pod    openai    2m12s
root@master01:~# kubectl get result defaulttestbadpod -n k8sgpt-operator-system -o yaml
apiVersion: core.k8sgpt.ai/v1alpha1
kind: Result
metadata:
  creationTimestamp: "2026-07-11T08:38:40Z"
  generation: 1
  labels:
    k8sgpts.k8sgpt.ai/backend: openai
    k8sgpts.k8sgpt.ai/name: k8sgpt-deepseek
    k8sgpts.k8sgpt.ai/namespace: k8sgpt-operator-system
  name: defaulttestbadpod
  namespace: k8sgpt-operator-system
  ownerReferences:
  - apiVersion: core.k8sgpt.ai/v1alpha1
    blockOwnerDeletion: true
    controller: true
    kind: K8sGPT
    name: k8sgpt-deepseek
    uid: 0ec94201-142d-456a-9ab2-eb47d368ed51
  resourceVersion: "141914"
  uid: c7f05f0a-9bff-4de4-9cca-835022bc301e
spec:
  autoRemediationStatus: {}
  backend: openai
  details: "Error: Image tag *nonexistent-tag-12345* for nginx does not exist on the
    registry.  \nSolution: 1. Check available tags (e.g., `latest`). 2. Update YAML:
    `image: nginx:latest`. 3. `kubectl apply -f deploy.yaml` or `kubectl rollout restart
    deploy`."
  error:
  - text: 'Back-off pulling image "nginx:nonexistent-tag-12345": ErrImagePull: Error
      response from daemon: manifest for nginx:nonexistent-tag-12345 not found: manifest
      unknown: manifest unknown'
  kind: Pod
  name: default/test-bad-pod
  parentObject: ""
status:
  contentHash: 3344577a96d42a31dfbe9fb72ca34a29477651f2317fb4c42da63dd2144f272d
  lifecycle: historical

4. 清理测试资源

复制代码
kubectl delete pod test-bad-pod -n default
kubectl delete result defaulttestbadpod -n k8sgpt-operator-system

七、日常使用

查看分析结果

复制代码
kubectl get results -n k8sgpt-operator-system

查看某个结果的详细信息

复制代码
kubectl get result <result-name> -n k8sgpt-operator-system -o yaml

查看 Operator 日志

复制代码
kubectl logs -n k8sgpt-operator-system deployment/k8sgpt-operator-controller-manager -c manager --tail=50

查看 k8sgpt 工作负载日志

复制代码
kubectl logs -n k8sgpt-operator-system deployment/k8sgpt-deepseek --tail=50

八、常见问题

搜索时需要加 / 后缀:

复制代码
helm search repo k8sgpt/

2. helm pullimproper constraint: "\u00a0"

--version 和版本号之间包含了不间断空格(从网页复制时常见),重新手动输入空格即可。

3. kind: K8sGptno matches for kind

CRD 的 kind 是 K8sGPT(GPT 全大写),不是 K8sGpt

4. 分析结果 count 为 0

集群当前没有问题需要报告。可以通过创建异常资源来验证功能是否正常。

5. 出现两个 controller-manager Pod

说明有重复安装,检查并删除多余的 release:

复制代码
helm list -n k8sgpt-operator-system
helm uninstall <重复的release> -n k8sgpt-operator-system

相关推荐
invicinble1 小时前
使用ai工具提升开发效率(mcp工具)
人工智能
jinxindeep2 小时前
LingBot-World-Infinity:迈向无限时长、实时交互的开放世界模型
人工智能·机器人
清酒难寻10 小时前
深度学习进阶(二十四)Swin 的二维 RPE
人工智能·深度学习
步步为营DotNet10 小时前
借助 Microsoft.Extensions.AI 与 ASP.NET Core 10 实现智能 Web 应用故障预测
人工智能·microsoft·asp.net
AI创界者10 小时前
零基础上手!ComfyUI + LTX-2.3 图生视频完整工作流搭建与调优指南(附避坑细节)
大数据·人工智能
怕浪猫10 小时前
AI图片工具到底有哪些?一份按能力维度整理的清单
人工智能
hongmai66688811 小时前
FH8856V310芯片详解:6M高清+0.5TOPS算力,赋能智能安防新方案
人工智能·单片机·嵌入式硬件·物联网·智能家居
一颗小树x11 小时前
NVIDIA Jetson Thor 运行 LLM / VLM:模型全整理与 vLLM 实践
人工智能·llm·jetson·vllm
每日综合11 小时前
蓝白风暴席卷BW2026!雷克沙展台首日燃情纪实
人工智能