Kubernetes 诊断代理
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/kubernetes-diagnostics-agent。
技能介绍
解决什么问题
Kubernetes 集群变慢或出现异常时,定位根因往往困难。API Server 延迟飙升、Pod 莫名重启、内存持续增长——这些问题可能发生在任何组件中,但传统排查方式只能看到表面现象,无法深入到运行时状态。
当你需要了解某个 Pod 的内存分配情况、goroutine 数量是否异常、或者 API Server 是否被某个请求阻塞时,常规的 kubectl logs 和 kubectl describe 远远不够。你需要进入容器内部、抓取 pprof 数据、查看实时的资源使用趋势,但这些操作要么缺乏标准工具,要么需要在多个 API 之间来回切换。
技能如何工作
这个诊断代理基于 Kubernetes 内置的诊断能力,通过两个核心机制解决问题:
- pprof 端点分析:直接访问 API Server 的
/debug/pprof端点,获取 CPU profile、内存堆栈、goroutine 状态等运行时数据。当 API Server 响应变慢时,可以快速判断是 GC 压力、锁竞争还是某个 handler 阻塞了请求。
- 临时容器调试:使用
kubectl-debug在目标 Pod 中启动临时容器,无需修改镜像或重启应用即可进入运行环境。可以执行top、jmap、strace等工具,查看进程状态、线程阻塞点、系统调用等详细信息。
- 资源压力监控:集成 Metrics Server API 和 kube-state-metrics,分析节点级别的 CPU、内存、磁盘压力,以及 Pod 的资源请求与限制配置是否合理。
关键步骤包括:识别异常组件 → 选择诊断策略(pprof 或临时容器)→ 收集运行时数据 → 分析瓶颈模式 → 输出诊断结果。
适用边界
- 需要集群中已启用 Metrics Server 和 kube-state-metrics,否则资源分析功能受限
- pprof 端点需要集群管理员权限或已开启 RBAC 授权
kubectl-debug依赖 Kubernetes 1.23+ 的 Ephemeral Containers 特性- 诊断过程会产生少量性能开销,不建议在生产环境高峰期长时间运行
- 无法诊断已完全宕机的节点或网络隔离导致的 Pod 不可达问题
使用场景
- API Server 延迟突增,需要通过 /debug/pprof 端点定位 goroutine 或 GC 瓶颈
- Pod 内存持续增长但不清楚具体分配,需用 kubectl-debug 进入容器抓取堆栈
- 节点 CPU 压力大,需要结合 Metrics Server 分析资源请求与实际使用差异
- Pod 异常重启,需查看运行时状态和系统调用定位阻塞原因
适合人员
- Kubernetes 平台工程师,需要在集群故障时快速定位 API Server 或节点瓶颈
- SRE 工程师,负责生产环境稳定性,需分析 Pod 资源使用与运行时异常
- 云原生应用开发者,调试容器性能问题时需要进入 Pod 内部查看进程状态
- 集群运维人员,监控资源压力并优化 Pod 资源配置避免频繁重启