K8s Pod CrashLoopBackOff Full-Chain Diagnostics

SkillMonitoring & ops

End-to-end troubleshooting for K8s Pod CrashLoopBackOff. Walks through kubectl describe → events → logs → restart policy → resource limits → liveness/readiness probes → image pull → configmap/secret mounts to pinpoint the root cause and output fix recommendations.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the K8s Pod CrashLoopBackOff Full-Chain Diagnostics skill

What this skill tells your AI

The instructions your AI receives, as published by seed-forge/harness-ai-kit in skills/diag-k8s-pod-crashloop/SKILL.md and read by ahel’s review.

用途

当 Pod 反复重启、状态显示 CrashLoopBackOffError 时触发。本技能是自包含诊断 Runbook

输入

  • kubectl 上下文(kubeconfig)
  • 目标 Pod 名称 + Namespace

输出

  • CrashLoop 根因分析报告 + 修复建议

诊断步骤

Step 1: Pod 状态与事件

kubectl get pod {pod_name} -n {namespace} -o wide
kubectl describe pod {pod_name} -n {namespace}
# 关注 Events 区块:OOMKilled / Error / ImagePullBackOff / FailedMount

Step 2: 容器日志

# 当前容器日志(可能在 crash 后已清空)
kubectl logs {pod_name} -n {namespace} --all-containers=true --tail=100

# 上一次崩溃的日志
kubectl logs {pod_name} -n {namespace} --all-containers=true --previous --tail=200

Step 3: 重启原因分类

事件关键词根因典型修复
OOMKilled内存超限增大 resources.limits.memory 或修复内存泄漏
Error (exit code 1)应用启动失败检查日志、配置、依赖服务连通性
ImagePullBackOff镜像拉取失败检查 image tag、imagePullSecrets、registry 可达
FailedMountConfigMap/Secret/PVC 挂载失败检查引用是否存在
Liveness probe failed健康检查超时调整 initialDelaySeconds / timeoutSeconds
CreateContainerConfigErrorenv/configMapKeyRef 缺失检查引用的 ConfigMap/Secret key
BackOff restarting重启间隔递增以上任一原因的持续重试

Step 4: 资源限制与请求

kubectl get pod {pod_name} -n {namespace} -o jsonpath='{range .spec.containers[*]}{.name}: requests={.resources.requests} limits={.resources.limits}{"\n"}{end}'

Step 5: 依赖检查

# ConfigMap/Secret 是否存在
kubectl get configmap -n {namespace} | grep {configmap_name}
kubectl get secret -n {namespace} | grep {secret_name}

# PVC 状态
kubectl get pvc -n {namespace} | grep {pvc_name}

# Service 端点
kubectl get endpoints {service_name} -n {namespace}

输出模板

K8s Pod CrashLoop Analysis Report
════════════════════════════════════════
Cluster:   {context}
Namespace: {namespace}
Pod:       {pod_name}
Node:      {node_name}
Time:      {timestamp}

Pod Status
  Phase:         {phase}
  Restart Count: {restart_count}
  Last State:    {last_state} (exit code: {exit_code})
  Reason:        {reason}

Events (last 10)
  {event_1}
  {event_2}
  ...

Container Logs (previous crash, last 20 lines)
  {log_lines}

Root Cause: {root_cause}

Recommendations
  1. {fix_1}
  2. {fix_2}

告警阈值

指标WarningCritical
Pod restarts in 1h> 3> 10
CrashLoopBackOff duration> 5min> 30min
Node NotReady-任一

推荐输出格式

执行完毕后输出诊断报告:

结论:<正常 / 发现问题>

排查环节发现证据
...{...}{...}

根因:<定位> 修复建议:<可执行步骤>

约束

  • 只读诊断,不执行 kubectl delete / edit / scale 等变更操作。
  • 不修改 kubeconfig 或切换 context。

Quick Reference

动作命令
Pod 状态kubectl get pod {name} -n {ns} -o wide
Pod 详情kubectl describe pod {name} -n {ns}
容器日志kubectl logs {name} -n {ns} --previous --tail=200
资源限制kubectl get pod {name} -n {ns} -o jsonpath='...'
节点状态kubectl get nodes -o wide

专题引用

无外部 references。如需 K8s 集群运维,联动 infra-observability-ops

Signals

GitHub stars
22
Forks
2
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
diag-k8s-pod-crashloop
Source
github.com/seed-forge/harness-ai-kit