
**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-flash或deepseek-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 的分析不准确?
- 检测逻辑过于简单 - k8sgpt 只检查 ConfigMap 是否被 Pod 的 volumes 或 envFrom 直接引用,但这些系统级 ConfigMap 是通过其他机制使用的(如 kubelet 启动参数、API 服务器内部使用)
- 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
八、常见问题
1. helm search repo k8sgpt 返回 No results found
搜索时需要加 / 后缀:
helm search repo k8sgpt/
2. helm pull 报 improper constraint: "\u00a0"
--version 和版本号之间包含了不间断空格(从网页复制时常见),重新手动输入空格即可。
3. kind: K8sGpt 报 no 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