K8s故障诊断神器 k8s-debug - 一键诊断并修复Pod问题 ☸️ 为什么选择 k8s-debug? Kubernetes(K8s)是现代云原生的核心,但运维 K8s 集群时,我们经常遇到: 🐛 Pod 无法启动 - CrashLoopBackOff、ImagePullBackOff ⏳ Pod 卡在 Pending - 资源不足、调度失败 🌐 网络问题 - DNS 解析、服务发现、连接超时 💾 存储问题 - PV 挂载失败、存储空间不足 🔄 滚动更新失败 - Deployment 更新卡住 传统解决方式: ❌ 手动逐个排查(kubectl describe、logs) ❌ 需要深厚 K8s 知识 ❌ 耗时长,容易遗漏问题 ❌ 难以找到根本原因 k8s-debug
Kubernetes(K8s)是现代云原生的核心,但运维 K8s 集群时,我们经常遇到:
传统解决方式:
k8s-debug 技能让你一键诊断并自动修复 K8s 问题!
支持的问题类型:
修复能力:
分析深度:
诊断 CrashLoopBackOff:
k8s-debug --diagnose --pod my-pod --namespace default
输出:
正在诊断 Pod: my-pod ✅ 基本信息 - 名称: my-pod - 状态: CrashLoopBackOff - 重启次数: 5 - 年龄: 10分钟 ✅ 事件分析 - 最后事件: Back-off restarting failed container - 错误信息: OOMKilled ✅ 根因分析 问题: 容器内存溢出 (OOMKilled) 原因: 内存限制设置过低 (128Mi) 建议: 增加 memory limit 到 512Mi ✅ 自动修复 发现内存配置问题,正在修复... 更新 deployment... ✅ 修复完成!
诊断 Pending Pod:
k8s-debug --diagnose --pod pending-pod --type pending
输出:
正在诊断 Pod: pending-pod ✅ 调度分析 状态: Pending 原因: node(s) had taint {key=value: NoSchedule} ✅ 节点分析 可用节点: 3 符合条件: 0 问题: 所有节点都有 Taint ✅ 解决方案 方案1: 移除 Taint 方案2: 添加容忍度 (tolerations) 方案3: 添加专用节点 ✅ 自动修复 添加 tolerations 到 Pod... ✅ 修复完成!Pod 正在调度...
诊断 DNS 问题:
k8s-debug --diagnose --dns --service my-service
输出:
正在诊断 DNS: my-service ✅ DNS 配置检查 - CoreDNS 运行正常 - DNS 策略: ClusterFirst - 自定义 DNS: 无 ✅ Service 检查 - Service 存在 - ClusterIP: 10.96.0.100 - 端口: 80/TCP ✅ 端点检查 - Endpoints: 192.168.1.10:8080 - 状态: 正常 ✅ 连接测试 DNS 解析: ✅ 成功 Service 访问: ✅ 成功 Pod 访问: ✅ 成功 ✅ 结论 DNS 配置正常,网络连接正常
诊断 PVC 问题:
k8s-debug --diagnose --pvc my-pvc
输出:
正在诊断 PVC: my-pvc ✅ PVC 状态 - 状态: Pending - 容量: 10Gi - 访问模式: RWO ✅ PV 分析 - 绑定 PV: 无 - 可用 PV: 0 - StorageClass: standard ✅ 存储类分析 - Provisioner: kubernetes.io/aws-ebs - 状态: 正常 ✅ 问题诊断 问题: 没有 available 的 PV 原因: 静态供应的 PV 已满 建议: 使用动态供应或创建新 PV ✅ 自动修复 启用动态供应... ✅ 修复完成!PVC 已绑定
诊断更新失败:
k8s-debug --diagnose --deployment my-app --type rollout
输出:
正在诊断 Deployment: my-app ✅ 更新状态 - 期望副本: 3 - 当前副本: 1 - 可用副本: 1 - 更新失败: 2 ✅ 新版本分析 - 镜像: myapp:v2.0 - 拉取: 失败 - 错误: ImagePullBackOff ✅ 问题诊断 问题: 镜像不存在 原因: 标签错误(myapp:v2.0 vs myapp:2.0.0) 建议: 修正镜像标签 ✅ 自动修复 回滚到上一版本... ✅ 修复完成!Deployment 正常运行
**情况:**凌晨3点,收到告警 - 核心服务 CrashLoopBackOff
使用 k8s-debug:
一键诊断:
k8s-debug --diagnose --pod core-service --fix-auto
处理流程:
效果:
**情况:**集群资源利用率低,但很多 Pod Pending
使用 k8s-debug:
批量诊断:
k8s-debug --diagnose --all-pending --optimize
处理流程:
效果:
**情况:**将应用从 VM 迁移到 K8s,各种问题
使用 k8s-debug:
持续监控:
k8s-debug --monitor --namespace production --auto-fix
处理流程:
效果:
**情况:**应用响应慢,怀疑是 K8s 配置问题
使用 k8s-debug:
深度分析:
k8s-debug --analyze --deployment my-app --performance
处理流程:
效果:
| 维度 | 传统方式 | k8s-debug |
|---|---|---|
| 诊断速度 | 30分钟 | 30秒 |
| 准确率 | 80% | 95% |
| 自动修复 | ❌ | ✅ |
| 根因分析 | 浅 | 深 |
| 问题类型 | 传统修复 | k8s-debug | 提升 |
|---|---|---|---|
| OOMKilled | 30分钟 | 2分钟 | 15倍 |
| ImagePullBackOff | 15分钟 | 1分钟 | 15倍 |
| Pending | 1小时 | 5分钟 | 12倍 |
| DNS问题 | 45分钟 | 3分钟 | 15倍 |
| 滚动更新 | 2小时 | 10分钟 | 12倍 |
skillhub install k8s-debug
# 初始化配置 k8s-debug --init # 配置 kubeconfig k8s-debug --config ~/.kube/config
# 诊断单个 Pod k8s-debug --diagnose --pod my-pod # 诊断并自动修复 k8s-debug --diagnose --pod my-pod --fix-auto # 诊断所有问题 Pod k8s-debug --diagnose --all-failed # 监控模式 k8s-debug --monitor --namespace production
Q:需要什么权限?
A:需要 cluster-admin 权限,可以访问所有资源。
Q:支持哪些 K8s 版本?
A:支持 1.20+ 所有版本。
Q:自动修复安全吗?
A:安全!只修复常见问题,复杂问题会给出建议让用户确认。
Q:可以集成到 CI/CD 吗?
A:可以!提供 API 和 Webhook 集成。
k8s-debug --diagnose --all \ --namespaces "dev,prod,test" \ --output report.json
# 添加到 crontab 0 */6 * * * k8s-debug --health-check --email admin@example.com
k8s-debug --webhook \ --url https://hooks.example.com/k8s \ --events "pod-failed,deployment-error"
K8s 故障诊断,从 k8s-debug 开始!
☸️ 立即安装,让你的 K8s 运维效率提升10倍!