Kubernetes调试与故障排除技能Skill k8s-debug

这个技能专注于帮助开发人员和运维人员快速诊断和解决 Kubernetes 集群中的常见问题,如 Pod 崩溃、CrashLoopBackOff、OOMKilled、ImagePullBackOff、调度失败和部署问题。通过遵循事件优先的原则和系统化的检查流程,提升运维效率,确保应用的稳定运行。关键词:Kubernetes, 调试, 故障排除, Pod, 事件, 日志, DevOps, 云原生, 容器编排

Docker/K8s 0 次安装 0 次浏览 更新于 3/16/2026

name: k8s-debug description: Kubernetes 调试模式。用于处理 Pod 崩溃、CrashLoopBackOff、OOMKilled、ImagePullBackOff、调度失败、部署问题。

Kubernetes 调试专长

黄金规则:事件先于日志

当调试 Kubernetes 问题时,始终先检查事件

  1. get_pod_events - 显示调度、拉取、启动、探针、OOM
  2. 然后 get_pod_logs - 应用程序级错误

事件比日志更快地解释大多数崩溃/调度问题。

典型调查流程

1. list_pods        → 获取命名空间中 Pod 健康的概述
2. get_pod_events   → 理解 Pod 状态的原因
3. get_pod_logs     → 仅当事件未解释问题时使用
4. get_pod_resources → 用于性能/资源问题
5. describe_deployment → 检查部署状态和条件

常见问题模式

CrashLoopBackOff

首先检查get_pod_events

事件原因 可能原因 下一步行动
OOMKilled 内存限制太低或内存泄漏 检查 get_pod_resources,增加限制
Error 应用程序崩溃 检查 get_pod_logs 获取堆栈跟踪
BackOff 重复失败 检查日志以查找启动错误

检查清单

  • [ ] 内存限制与实际使用情况
  • [ ] 最近的部署变更(get_deployment_history
  • [ ] 缺少配置/秘密
  • [ ] 依赖故障(数据库、外部服务)

OOMKilled

首先检查get_pod_events(确认 OOMKilled) 然后get_pod_resources(比较使用情况与限制)

常见原因

  • 为工作负载设置的内存限制过低
  • 内存泄漏(使用情况随时间增加)
  • 突发流量高峰导致内存压力
  • 大量请求负载缓存在内存中

ImagePullBackOff

首先检查get_pod_events

常见原因

  • 错误的镜像名称或标签
  • 私有镜像仓库没有 imagePullSecrets
  • 镜像仓库的速率限制
  • 网络问题访问镜像仓库

Pending Pods

首先检查get_pod_events

查找

  • FailedScheduling - 资源不足
  • Unschedulable - 节点亲和性/污点
  • 无匹配节点用于 nodeSelector

Readiness/Liveness Probe Failures

首先检查describe_pod(显示探针配置) 然后get_pod_events(探针失败事件) 然后get_pod_logs(为什么端点不响应)

Evicted Pods

首先检查get_pod_events

原因

  • 节点资源压力(磁盘、内存)
  • 优先级抢占
  • 基于污点的驱逐

部署问题

Stuck Rollout

describe_deployment  → 检查副本(期望 vs 就绪 vs 可用)
get_deployment_history → 比较当前与之前的修订版本
get_pod_events → 对于新 ReplicaSet 中的 Pod

常见原因

  • 新 Pod 失败(CrashLoopBackOff)
  • Readiness 探针失败
  • 资源限制阻止调度

Rollback Decision

使用 get_deployment_history 查看之前的工作版本。

错误分类

不可重试(立即停止)

  • 401 未授权 - 无效凭据
  • 403 禁止 - 无权限
  • 404 未找到 - 资源不存在
  • “config_required”: true - 集成未配置

可重试(可能重试一次)

  • 429 请求过多
  • 500/502/503/504 服务器错误
  • 超时
  • 连接被拒绝

资源调查模式

对于内存/CPU 问题:

1. get_pod_resources → 查看分配 vs 使用情况
2. describe_pod → 查看完整的容器规格
3. get_cloudwatch_metrics/query_datadog_metrics → 历史使用情况
4. detect_anomalies on historical data → 查找问题开始时间