K8s 与云原生故障排查 · 系列目录
叙事框架:容器排障的独特之处在于可见性缺失 总计 82 篇,已发布 33 篇,49 篇待完善
一、Pod / 工作负载类
- ✅ Pod 频繁重启:OOM 还是 Liveness 探针配置问题?
- ✅ Pod 一直 Pending:从资源不足到 PVC 挂载层层排查
- ✅ Pod 启动慢——Init Container / 镜像拉取策略优化
- ✅ Pod 状态 CrashLoopBackOff:日志拿不到怎么办?
- ✅ Pod 调度不均衡——nodeAffinity/podAntiAffinity 配置错误
- ✅ DaemonSet 滚动更新——更新策略导致节点逐个宕机
- ✅ DaemonSet 更新策略不一致——OnDelete vs RollingUpdate 选择陷阱
- ✅ DaemonSet 滚动更新导致服务中断——优雅终止与 PodDisruptionBudget
- ✅ 定时任务为什么没跑?——CronJob 时区/并发/退避三连坑
- ✅ HPA 扩缩容不灵敏——metrics 采集延迟和目标指标设错
- ✅ VPA 推荐不准?不是 VPA 不行——是你 Pod 重启过
- ✅ kubectl drain 卡了 2 小时?找你的 PodDisruptionBudget
二、网络类
- ✅ K8s Service 访问不通:从 iptables 到 IPVS 逐层排查
- ✅ Service 通、Pod 正常,为什么外部总 503?Ingress 端口映射的隐藏陷阱
- ✅ nslookup 有 IP 还是不通?跨 Namespace 调用的两个隐藏门
- ✅ 加了条 NetworkPolicy,消息队列直接断了——K8s 默认拒绝挨的第一刀
- ✅ 两个 Service 用了同一个端口号——K8s 的沉默最可怕
- ✅ Pod 能连内网却出不了外网?不是 CNI——是 SNAT 没开门
- ✅ Istio sidecar 注入后启动慢 10 倍?不是资源不够,是控制面配置没到
- ✅ 灰度 20% 流量全挂了——Istio DestRule 一个 label 拼错引发的 503 血案
- ✅ K8s Gateway API 配置与 Ingress 兼容性排查
- ✅ 查了 3 天 DNS 间歇超时,排除了网络、CNI、kube-proxy——最后发现是 CoreDNS 自动扩缩容的参数设反了
- ✅ 一个 Pod 吃掉整节点带宽?K8s 限速 annotation 无效——TC/CNI 流量整形真相
- ✅ 换了 Cilium 以后,iptables 查不到了——跨 Namespace 超时的 eBPF 排障实录
- ✅ 双栈 Service:IPv6 秒通、IPv4 每次等 5 秒——ipFamilies 的主从陷阱
- ✅ IPv6 通但 IPv4 不通(或相反):双栈 Service 的 IP 族偏好问题
- ✅ 双栈 ClusterIP 配好了,IPv6 就是不通——少加载了一个内核模块
三、存储类
- ✅ PV 一直 Terminating?不是 kubectl 的事——Finalizer 和 PVC Protection 才是元凶
- ✅ Pod 起来了、PV 绑定了、挂载失败了——NFS 版本号写错一个数字
- ✅ StatefulSet 有状态服务 Pod 启动顺序导致的故障
- ✅ 一个 emptyDir 没设 sizeLimit,整节点 30 个 Pod 全被驱逐
- ✅ CSI 驱动异常导致 PV 创建卡住
- ✅ PV 绑定成功,Pod 却 ContainerCreating——存储类 mountOptions 抄错了
- ⏳ 本地 PV(local volume)节点亲和性导致 Pod 调度失败
- ⏳ 卷快照/克隆功能使用中的兼容性问题
四、集群 / 节点类
- ⏳ K8s 节点 NotReady 排查实录
- ⏳ kubelet 证书过期导致节点无法注册
- ⏳ etcd 性能瓶颈导致集群不稳定
- ⏳ 控制面组件(kube-apiserver/scheduler/controller-manager)异常排查
- ⏳ 集群 DNS(CoreDNS)解析失败或性能下降
- ⏳ 集群资源碎片化:节点资源充足但 Pod 调度失败
- ⏳ K8s 版本升级踩坑:从 kubeadm 升级到集群迁移
- ⏳ 节点内核版本不统一导致应用行为不一致
- ⏳ 节点备用(cordon/drain)操作导致现有 Pod 被驱逐
- ⏳ 污点和容忍度配置错误导致关键 Pod 被调度到错误节点
- ⏳ kube-proxy 模式切换(iptables→IPVS)引发的连接异常
五、资源管理类
- ⏳ 命名空间资源配额 ResourceQuota 设太严导致部署失败
- ⏳ LimitRange 默认资源限制导致 Pod 启动参数被覆盖
- ⏳ 服务质量类(Guaranteed/Burstable/BestEffort)选错导致 OOM 优先被杀
- ⏳ 集群资源超分导致节点压力过大
- ⏳ 节点资源预留(kube-reserved/system-reserved)配置不当
六、监控 / 可观测类
- ⏳ Metrics Server 部署失败排坑
- ⏳ K8s 日志收集方案(EFK/Loki)配置导致 Pod 日志丢失
- ⏳ 容器内 Java 应用监控指标不准——cgroup 视角的 CPU/内存误解
- ⏳ Prometheus 采集目标丢失——ServiceMonitor 配置排查
- ⏳ K8s Audit Log 未开启——安全事件无法溯源
- ⏳ 事件(Events)信息太多淹没有效告警
七、容器运行时类
- ⏳ 容器中 Java 进程 CPU 使用率不准——容器视角的 CPU 误解
- ⏳ 容器中 -Xmx 不生效?JVM 不能识别 cgroup 限制
- ⏳ 容器镜像太大导致拉取超时——镜像分层优化
- ⏳ 容器内文件系统性能问题——overlay2 vs aufs 选型
- ⏳ Docker/Containerd 运行时异常——daemon 日志排查
- ⏳ 镜像拉取策略 ImagePullPolicy 引发的版本不一致
- ⏳ 容器退出码(Exit Code)看不懂——137/139/143 分别代表什么
- ⏳ Init Container 资源占用过高阻塞后续容器启动
八、安全 / 权限类
- ⏳ RBAC 权限配置不当导致 CI/CD 部署失败
- ⏳ ServiceAccount 没配好导致 Pod 无法调用 API
- ⏳ PodSecurityPolicy/PSA 限制过严导致容器无法启动
- ⏳ 镜像安全扫描漏洞修复后镜像更新策略问题
- ⏳ Secret 加密存储(etcd 加密/KMS)配置排查
- ⏳ 容器以 root 运行的安全风险与配置检查
九、CI/CD / GitOps 类
- ⏳ Helm Chart 升级失败——values 覆盖顺序理解错误
- ⏳ K8s 滚动更新策略导致服务中断——maxSurge/maxUnavailable 设错
- ⏳ ConfigMap/Secret 更新后 Pod 不自动重启
- ⏳ ArgoCD 同步状态显示 OutOfSync——资源漂移排查
- ⏳ Kustomize overlay 层配置覆盖关系理解错误
十、集群运维类
- ⏳ 证书管理:kubelet/kube-apiserver 证书到期处理流程
- ⏳ 集群备份和恢复(Velero)失败排查
- ⏳ 节点内核升级后需要重启——Pod 迁移策略
- ⏳ 集群联邦(Cluster Federation)多集群管理问题
- ⏳ K8s 控制面高可用配置——多 apiserver 负载均衡排障
- ⏳ 集群网络 MTU 不一致导致 Pod 通信异常
最后更新:2026-06