kube-medic

🏥 Kubernetes 智能诊断与事故响应专家

Kubernetes SRE诊断工具,一键集群健康巡检、Pod故障排查、资源压力分析,支持多集群管理与安全回滚操作

收藏
7.3k
安装
1.6k
版本
1.0.1
CLS 安全扫描中
预计需要 3 分钟...

使用说明

概述

kube-medic 是由 CacheForge 开发的开源 Kubernetes 诊断工具,专为站点可靠性工程师(SRE)和 DevOps 团队设计,提供全自动化集群健康巡检与故障排查能力。该工具通过封装 kubectl 命令,将分散的诊断数据整合为可操作的洞察,显著缩短 MTTR(平均修复时间)。

核心功能与用法

工具提供五大诊断子命令:

  • `sweep` — 全集群健康快照:扫描节点状态、异常 Pod(CrashLoopBackOff/ImagePullBackOff/Pending)、近期警告事件,建立问题全景视图
  • `pod <name>` — Pod 尸检:深度分析单个 Pod,包括容器状态、当前/历史日志、关联事件、镜像版本一致性检测
  • `deploy <name>` — 部署状态诊断:检查副本分布、滚动更新状态、ReplicaSet 历史、代际差异(generation vs observedGeneration)
  • `resources` — 资源压力检测:节点 CPU/内存使用率、压力条件、Top 20 资源消耗 Pod、缺失资源限制的 Pod 识别
  • `events [namespace]` — 事件时序分析:按时间排序的最近 100 条事件,支持自定义时间窗口(默认 15 分钟)

显著优势

1. 数据关联智能诊断:不仅罗列症状,更主动关联「Events + Pod Status」「Logs + Events」「Resources + Pod Count」等多维数据,定位根因而非表面现象
2. 安全优先设计:默认只读模式,所有写操作(回滚、扩缩容、删 Pod、隔离节点)需用户显式确认,杜绝误操作

3. 多集群原生支持:通过 --context 参数无缝切换集群上下文,适配复杂基础设施环境

4. 输出结构化可解析:JSON 底层输出便于自动化集成,同时提供 Markdown 格式的人类可读报告

5. Discord 场景优化:针对即时通讯场景的消息长度限制,提供压缩摘要 + 交互式组件的分层交互模式

局限性与注意事项

  • 依赖外部工具链:要求目标环境已安装 kubectljq,且集群需部署 metrics-server 才能获取资源使用指标
  • RBAC 权限敏感:诊断深度受限于执行者的 Kubernetes 权限,完整功能需具备集群级读取权限
  • Bash 脚本封装:底层为 shell 脚本实现,复杂场景下的错误处理与跨平台兼容性(尤其是 Windows)可能存在局限
  • 无历史数据持久化:仅反映实时状态,无法对比历史基线或趋势分析

适合人群

  • on-call SRE:需要快速响应生产事故的值班工程师
  • 平台工程师:管理多集群基础设施,需标准化诊断流程
  • 开发团队:自主排查预发布环境问题的全栈开发者
  • Discord 社区技术支持:通过即时通讯渠道协助用户排查 K8s 问题的社区管理者

常规风险

| 风险类别 | 说明 |
|---------|------|
| 权限泄露 | 工具以执行者身份运行,诊断输出可能暴露敏感配置(Secrets 引用、环境变量) |
| 误确认写操作 | 用户若在未充分理解后果的情况下确认 `--confirm-write`,可能导致服务中断 |
| 集群连接风险 | 多集群场景下若 kubeconfig 管理不当,可能在错误集群执行操作 |
| 资源消耗 | `sweep` 与 `resources` 在大规模集群(数千 Pod)上可能产生显著的 API Server 负载 |

使用建议

建议将 kube-medic 集成到 ChatOps 工作流或 CI/CD 流水线的事故响应阶段,作为人工排查的第一入口。对于生产关键集群,推荐配合只读 ServiceAccount 运行日常巡检,写操作权限通过审批工作流临时授予。

kube-medic 内容

scripts文件夹
手动下载zip · 20.6 kB
kube-medic.shtext/x-shellscript
请选择文件