K8s运维典型故障速查:调度、网络、存储、证书高频报错处理
K8s运维典型故障速查:调度、网络、存储、证书高频报错处理
Kubernetes 集群稳定运行依赖调度、网络、存储、证书等多个组件的协同。日常运维中,大部分故障都集中在几类高频报错上。本文按故障域梳理排查路径,帮助运维人员快速定位问题,减少试错成本。
一、先建立通用排查顺序
面对任何 K8s 故障,建议按以下顺序收集信息,避免直接修改配置:
- 查看资源状态:kubectl get pod -o wide、kubectl get events --sort-by=.metadata.creationTimestamp。
- 查看事件详情:kubectl describe pod
,重点看 Events 区域。 - 查看组件日志:kubectl logs、journalctl -u kubelet、crictl ps 与容器运行时日志。
- 确认节点状态:kubectl get nodes、节点资源水位、kubelet 与容器运行时是否正常。
事件信息通常已经给出失败原因,先读事件,再决定下一步动作。
二、调度类高频故障
1. Pod 长期 Pending
常见原因包括节点资源不足、污点与容忍不匹配、节点亲和性冲突、Pod 反亲和性限制、PVC 未绑定等。排查时先看 FailedScheduling 事件中的具体描述,再检查节点可分配资源、taints、affinity 以及 ResourceQuota、LimitRange 是否限制了创建。
2. 调度器不可用或选主异常
若所有 Pod 都无法调度,需检查 kube-scheduler Pod 是否 Running,是否存在多副本选主失败。控制面证书过期、apiserver 不可达也会间接导致调度异常。
3. 节点 NotReady 引发驱逐
节点 NotReady 后,Pod 可能被驱逐或无法调度到该节点。优先检查 kubelet 状态、容器运行时、磁盘压力与内存压力,确认节点是否触发了驱逐阈值。
三、网络类高频故障
1. Service 无法访问
- 检查 Service 的 selector 是否匹配后端 Pod 标签。
- 查看 Endpoints 或 EndpointSlice 是否有可用地址,Pod readiness 是否为 True。
- 确认 kube-proxy 工作正常,iptables 或 ipvs 规则是否生成。
- 检查 NetworkPolicy 是否拒绝了流量。
2. CoreDNS 解析异常
Pod 内解析失败时,先确认 CoreDNS Pod 是否 Running、Service 是否有 Endpoints。再检查 Pod 的 /etc/resolv.conf 中 nameserver 与 search 域是否正确。若个别节点解析异常,重点排查该节点到 CoreDNS 的网络连通性与 CNI 配置。
3. CNI 与 MTU 问题
小包通、大包不通是典型 MTU 不一致表现。需核对节点网卡、CNI 插件与隧道封装的 MTU 设置。CNI Pod 异常、IP 地址池耗尽也会导致新 Pod 无法获得 IP。
4. conntrack 表满
高并发场景下,节点 conntrack 表满会导致新建连接失败。可通过节点日志与内核参数确认,并结合业务连接模型评估是否需要调整。
四、存储类高频故障
1. PVC 一直 Pending
- 确认 StorageClass 是否存在、provisioner 是否运行正常。
- 检查是否设置了 WaitForFirstConsumer,此时 PVC 需等 Pod 调度后才绑定。
- 确认后端存储容量、访问模式与拓扑限制是否满足。
2. Pod 挂载卷失败
常见报错包括挂载超时、权限拒绝、卷被其他节点占用。RWO 卷被多个节点同时挂载时会失败;NFS 或分布式存储服务端不可达时,需检查网络与存储服务端状态。CSI 驱动 Pod 异常也会导致挂载与卸载失败。
3. 卷卸载卡住
节点失联或 Pod 强制删除后,可能出现 VolumeAttachment 残留。需确认节点状态,必要时清理残留对象,并检查 CSI 控制器日志。
五、证书类高频故障
1. kubelet 证书过期
节点 NotReady、kubelet 日志出现 x509 证书错误时,优先检查 kubelet 客户端证书与服务端证书有效期。证书过期会导致 kubelet 无法与 apiserver 通信。
2. apiserver 与 kubeconfig 证书过期
kubectl 报 x509: certificate has expired 时,检查 apiserver 证书与 kubeconfig 中 client-certificate 的有效期。控制面证书过期会影响整个集群的 API 访问。
3. Webhook 证书过期
准入 Webhook 证书过期会导致创建或更新资源失败,报错通常与 webhook 调用超时或证书校验失败有关。需检查 Webhook 配置中的 caBundle 与实际服务端证书是否一致。
4. Ingress 与 ServiceAccount 证书
Ingress 证书过期表现为浏览器告警,需检查 Secret 中的证书有效期。ServiceAccount token 过期或轮转异常时,Pod 内访问 apiserver 会返回 401,需检查投射卷与 token 配置。
六、速查清单
- 调度:看 FailedScheduling 事件、节点资源、污点、亲和性、配额。
- 网络:看 Endpoints、CoreDNS、CNI、kube-proxy、NetworkPolicy、MTU。
- 存储:看 StorageClass、provisioner、PVC 事件、CSI 日志、VolumeAttachment。
- 证书:看 kubelet、apiserver、kubeconfig、Webhook、Ingress、ServiceAccount token 有效期。
多数高频故障都能通过事件与组件日志定位。建议在集群中建立统一的日志与监控采集,保留关键组件日志,并定期检查证书有效期,把被动救火转为主动巡检。