背景

平时排查K8s问题,基本就是这套组合拳:

kubectl get pods | grep Error
kubectl describe pod xxx
kubectl logs xxx --previous
kubectl get events --sort-by='.lastTimestamp'

命令敲多了挺烦的,而且输出信息很多,得自己过滤关键内容。就想着能不能用自然语言直接问,让AI帮我跑这些命令、整理结果。

做了什么

写了个叫 K8sSkill 的东西,核心就两部分:

  1. 21个资源分析器 - 每个K8s资源一个分析器,比如PodAnalyzer、DeploymentAnalyzer
  2. 意图识别 - 把自然语言映射到对应的分析器

现在在Trae里可以直接这样问:

我:看看集群有什么问题

AI:正在检查...
     
     发现以下问题:
     - Pod nginx-xxx 处于 ImagePullBackOff
     - Node node-3 有 DiskPressure 警告
     
     建议:
     1. 检查镜像标签是否存在
     2. 清理节点磁盘空间

项目结构

k8sskill/
├── scripts/
│   ├── core/base.py          # 分析器基类
│   ├── analyzers/            # 各资源分析器
│   │   ├── pod.py           # Pod诊断
│   │   ├── deployment.py    # Deployment诊断
│   │   ├── service.py       # Service诊断
│   │   └── ... (共21个)
│   └── orchestrator.py       # 调度中心
├── references/               # 文档
└── requirements.txt

每个分析器都继承 BaseAnalyzer,实现两个方法:

class PodAnalyzer(BaseAnalyzer):
    def analyze(self):
        # 获取Pod列表,检查异常状态
        # 返回问题列表
        
    def get_remediation(self, finding):
        # 根据问题类型返回修复建议

实际使用效果

场景1:Pod崩溃

之前排查Pod重启问题,要执行好几条命令。现在直接问:

我:检查Pod为什么崩溃
AI:
   Pod: myapp-xxx
   状态: CrashLoopBackOff (重启12次)
   退出码: 137 (OOMKilled)
   
   建议增加内存限制到512Mi

省了点时间,不用自己翻 kubectl describe 的大段输出了。

场景2:服务访问不了

我:为什么服务访问不了
AI:
   Service myapp-service 没有Endpoints
   选择器 app=myapp 匹配到0个Pod
   
   可能原因:
   1. Pod标签不对(当前是 app=my-app)
   2. Pod没Ready

这个挺有用的,之前这种标签不匹配的问题,新手经常踩坑,得查半天。

场景3:日常巡检

每天早上花1分钟问一句"集群有什么问题",比手动敲一堆命令方便点。

一些细节

中文支持:所有输出都是中文,包括错误提示和修复建议。毕竟是国内团队用,英文看着累。

只读不修改:工具只负责诊断,不会自动修东西。安全第一,修复命令给出来,你自己决定执不执行。

IDE集成:在Trae里直接对话就行,不用切终端。这是Skill的优势,体验确实比传统CLI工具好一些。

局限

  • 大型集群(几千个Pod)分析会慢一些
  • 需要有效的kubeconfig
  • 不会自动修复,只给建议

怎么用

# 安装依赖
pip install -r requirements.txt

# 配置kubeconfig
export KUBECONFIG=/path/to/config

# 然后在Trae里直接对话使用

具体配置看 READMESKILL.md

效果展示

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

总结

就是个实用小工具,把平时排查K8s问题的经验代码化了。不是什么高大上的东西,但能省点时间。

如果你也在用Aiops\IDE\openclow(小龙虾),可以试试看。有问题欢迎提issue或者自己改,代码结构挺简单的,加个新分析器也就几十行代码。


项目地址:clowhub:clowhub–k8s-skill github:k8sskill

依赖:Python 3.8+, kubernetes-python

更多推荐