概述
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 场景优化:针对即时通讯场景的消息长度限制,提供压缩摘要 + 交互式组件的分层交互模式
局限性与注意事项
- 依赖外部工具链:要求目标环境已安装
kubectl、jq,且集群需部署 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 运行日常巡检,写操作权限通过审批工作流临时授予。