name: kubernetes-debug description: Kubernetes调试方法和脚本。用于Pod崩溃、CrashLoopBackOff、OOMKilled、部署问题、资源问题或容器故障。
Kubernetes调试
核心原则:先事件后日志
始终先检查Pod事件再查看日志。 事件能更快解释80%的问题:
- OOMKilled → 内存限制超出
- ImagePullBackOff → 镜像未找到或认证问题
- FailedScheduling → 没有节点有足够资源
- CrashLoopBackOff → 容器反复崩溃
可用脚本
所有脚本都在 .claude/skills/infrastructure-kubernetes/scripts/ 中
list_pods.py - 列出Pod及其状态
python .claude/skills/infrastructure-kubernetes/scripts/list_pods.py -n <命名空间> [--label <选择器>]
# 示例:
python .claude/skills/infrastructure-kubernetes/scripts/list_pods.py -n otel-demo
python .claude/skills/infrastructure-kubernetes/scripts/list_pods.py -n otel-demo --label app.kubernetes.io/name=payment
get_events.py - 获取Pod事件(优先使用!)
python .claude/skills/infrastructure-kubernetes/scripts/get_events.py <Pod名称> -n <命名空间>
# 示例:
python .claude/skills/infrastructure-kubernetes/scripts/get_events.py payment-7f8b9c6d5-x2k4m -n otel-demo
get_logs.py - 获取Pod日志
python .claude/skills/infrastructure-kubernetes/scripts/get_logs.py <Pod名称> -n <命名空间> [--tail N] [--container NAME]
# 示例:
python .claude/skills/infrastructure-kubernetes/scripts/get_logs.py payment-7f8b9c6d5-x2k4m -n otel-demo --tail 100
python .claude/skills/infrastructure-kubernetes/scripts/get_logs.py payment-7f8b9c6d5-x2k4m -n otel-demo --container payment
describe_pod.py - 详细Pod信息
python .claude/skills/infrastructure-kubernetes/scripts/describe_pod.py <Pod名称> -n <命名空间>
get_resources.py - 资源使用与限制对比
python .claude/skills/infrastructure-kubernetes/scripts/get_resources.py <Pod名称> -n <命名空间>
describe_deployment.py - 部署状态
python .claude/skills/infrastructure-kubernetes/scripts/describe_deployment.py <部署名称> -n <命名空间>
get_history.py - 滚动历史
python .claude/skills/infrastructure-kubernetes/scripts/get_history.py <部署名称> -n <命名空间>
调试工作流
Pod未启动(Pending/CrashLoopBackOff)
list_pods.py- 检查Pod状态get_events.py- 查找调度/拉取/崩溃事件describe_pod.py- 检查条件和容器状态get_logs.py- 仅当事件无法解释时
Pod重启(OOMKilled/崩溃)
get_events.py- 检查OOMKilled或错误事件get_resources.py- 比较使用量与限制get_logs.py- 检查崩溃前错误describe_pod.py- 检查重启次数和状态
部署未进展
describe_deployment.py- 检查副本数量list_pods.py- 查找卡住的Podget_events.py- 检查卡住Pod的事件get_history.py- 检查滚动历史以回滚
常见问题与解决方案
| 事件原因 | 含义 | 操作 |
|---|---|---|
| OOMKilled | 容器超出内存限制 | 增加限制或修复内存泄漏 |
| ImagePullBackOff | 无法拉取镜像 | 检查镜像名称、注册表认证 |
| CrashLoopBackOff | 容器持续崩溃 | 检查启动错误日志 |
| FailedScheduling | 没有节点能运行Pod | 检查节点资源、污点 |
| Unhealthy | 存活探针失败 | 检查探针配置、应用健康 |
输出格式
报告发现时,使用此结构:
## Kubernetes分析
**Pod**: <名称>
**命名空间**: <命名空间>
**状态**: <阶段> (重启次数: N)
### 事件
- [时间戳] <原因>: <消息>
### 发现的问题
1. [问题描述及证据]
### 根因假设
[基于事件和日志]
### 推荐操作
[具体补救步骤]