📌持续分享:云原生·Kubernetes·DevOps·AIOps·AI智能体等
欢迎查看更多历史文章👇👇
🔥一起学习云原生、AI等技术体系,持续提升架构与运维实战能力。
点击如下名片,即可关注公众号↓↓↓


K8s 运维的现实痛点
做过 K8s 生产运维的同学都深有体会:
Pod 异常、容器崩溃、资源打满、调度失败,故障现象五花八门 企业沉淀大量内部运维规范、故障 SOP、踩坑文档,分散在 wiki、word、知识库,故障发生时根本来不及翻阅检索 新手 SRE 面对报错日志、events 事件、describe 输出,很难快速定位根因;老工程师经验无法高效沉淀复用 普通大模型只靠通用训练知识,不了解企业内部集群规范,给出的方案经常不贴合本企业环境,无法直接落地
传统排障流程:登录节点 → 执行 kubectl describe/logs/top/events → 翻阅海量内部文档 → 人工分析 →整理修复方案,整个过程耗时久,对人员经验依赖性极强。
那能不能把企业历史运维文档做成私有知识库,故障发生时自动检索内部 SOP,结合集群实时采集的原始数据,交给大模型直接输出完整故障报告?
没问题!于是,我们实现了这套 K8s RAG 智能故障诊断工具,主程序文件:k8s_rag_ai_ops.py。
工具整体架构设计
SSH 远程采集层:通过 paramiko SSH 连接 K8s 控制节点,远程执行 kubectl 命令,自动采集 Pod describe、容器日志、集群事件、pod 资源负载、节点资源 top 数据 本地 RAG 私有知识库层:使用 bge‑small‑zh 向量化模型,完全离线运行,把企业内部运维文档、故障 SOP、集群调度规范构建向量库;故障发生时,根据故障上下文检索最匹配的内部运维文档片段 大模型推理层:调用 DeepSeek‑v4‑pro,把集群原始采集数据+RAG 检索出来的企业内部知识库片段一起送入 prompt,强制优先参考企业内部规范输出结果 GUI 可视化界面层:基于 tkinter 实现桌面可视化工具,无需敲复杂脚本,填写节点 SSH 信息、API 密钥,点按钮即可一键完成 Pod 故障诊断/集群节点资源扩缩容分析
重点:向量模型全程离线,不需要联网下载,企业内部文档不会外泄,满足内网运维安全要求。
工具核心能力演示
能力 1:一键 Pod 故障诊断
操作流程:
填写 K8s 控制节点 IP、账号密码,建立 SSH 连通 填入 DeepSeek API Key 下拉选择 Namespace、异常 Pod 点击【一键 Pod 故障诊断】
工具后台自动执行:
SSH 执行 kubectl 采集 pod describe、容器日志、集群事件、资源负载把故障上下文送入 RAG 私有知识库,检索匹配企业内部故障 SOP把集群原始数据 + 内部知识库片段,一并提交给 DeepSeek 大模型输出标准化 6 段式故障报告:故障概述、风险评估、根因分析、紧急恢复命令、验证标准、长期优化方案。
能力 2:集群节点资源 & 扩缩容智能分析
很多运维只关注 Pod,忽略节点层面资源水位,导致集群调度异常。
点击【集群节点资源 & 扩缩容建议】按钮:
自动执行kubectl top nodes抓取全节点 CPU 内存真实使用率RAG 检索集群调度、节点扩容下线相关内部运维规范大模型输出节点资源汇总、风险判定、垂直/水平扩容方案、节点驱逐下线可执行命令、集群长期优化策略。
核心代码逻辑节选
主程序 k8s_rag_ai_ops.py 的关键模块:
1. 离线 RAG 知识库加载
# ===================== 全局离线RAG强制配置 =====================PROJECT_ROOT = r"G:\2026年1月21号-AIOps训练营直播\代码\k8s-rag-ops"EMBEDDING_LOCAL_PATH = os.path.join(PROJECT_ROOT, "bge-small-zh")# 全离线阻断HF联网os.environ["TRANSFORMERS_OFFLINE"] = "1"os.environ["HF_HUB_OFFLINE"] = "1"os.environ["HF_DATASETS_OFFLINE"] = "1"os.environ["HUGGINGFACE_HUB_CACHE"] = PROJECT_ROOTTOP_K = 4# 预加载向量知识库def load_rag_kb():if not os.path.exists(EMBEDDING_LOCAL_PATH):raise Exception(f"模型文件夹不存在:{EMBEDDING_LOCAL_PATH}\n请先运行download_model.py下载模型")emb_path = os.path.join(PROJECT_ROOT, "embeddings.npy")chunk_path = os.path.join(PROJECT_ROOT, "chunks.pkl")if not os.path.exists(emb_path) or not os.path.exists(chunk_path):raise Exception("向量库文件缺失,请先运行embedding_build.py生成知识库")embeddings = np.load(emb_path)with open(chunk_path, "rb") as f:chunks = pickle.load(f)model = SentenceTransformer(model_name_or_path=EMBEDDING_LOCAL_PATH,local_files_only=True,cache_folder=PROJECT_ROOT,trust_remote_code=False)return model, chunks, embeddings
2. SSH 采集 K8s 集群数据
def run_kubectl_cmd(cmd):if ssh_client is None:return "SSH未连接"stdin, stdout, stderr = ssh_client.exec_command(cmd)out = stdout.read().decode("utf-8", errors="ignore")err = stderr.read().decode("utf-8", errors="ignore")return out + err
3. RAG 检索内部运维文档,交给大模型生成故障报告
# RAG检索def retrieve_internal_knowledge(fault_desc):query_vec = rag_model.encode([fault_desc], normalize_embeddings=True)scores = np.dot(rag_embeds, query_vec.T).squeeze()top_idx = np.argsort(scores)[-TOP_K:][::-1]ref_text = "\n=====内部运维知识库参考=====\n".join([rag_chunks[i] for i in top_idx])return ref_text
落地价值
经验沉淀:把企业多年积累的故障 SOP、运维规范变成私有向量知识库,实现老工程师经验固化,不会随人员流失带走 排障提速:故障发生不用翻阅几十份文档,工具自动检索内部资料,输出带可执行命令的完整报告 降低门槛:初级 SRE 也可以输出企业标准的故障处置方案,减少人为分析失误 内网安全:向量化模型本地离线运行,企业运维文档不会上传公网,适合政企、运营商、铁路行业云原生环境
后续迭代方向
对接 Prometheus 告警,收到告警自动触发故障诊断 接入 EFK 日志系统,采集更多维度日志输入 RAG 增加故障案例库,把历史真实故障存入知识库,同类问题直接复用过往处置经验
END ➤ 往期精彩文章回顾
云计算架构师韩先超亲身经历 | 记录从大学到现在工作经历 我的2024年终总结:在坚持中成长,在选择中前行 韩先超对咪咕进行【K8S超大规模集群与AI赋能算力网络调度】培训 韩先超对合肥电信进行线下Kubernetes技术培训 推荐书籍:《Kubernetes从入门到DevOps企业应用实战》——韩老师以企业实战为背景出版的一本高质量书籍:销量突破1万 韩先超在2025年3月,对国网进行Python线下培训圆满落幕 韩先超对中国铁道科学研究院进行【容器 + Kubernetes 安全培训】-2025年7月 海量指标告警杂乱难维护?基于时序 AI 自动校准 Prometheus 动态阈值落地实战 告别笨重网页后台!OpenClaw+微信,手机一句话管好整条 DevOps 流水线 告别手动 “救火”!大模型重塑运维排查流程,实现秒级故障定位 EFK 日志融合大模型:AI 接管日志筛查与故障排查工作 颠覆传统排障思路:全自动 K8s Pod 故障分析平台落地
点击如下名片,即可关注公众号↓↓↓
夜雨聆风