Kubernetes Pod更新失败:新Pod Pending旧Pod卡在Terminating如何排查?
故障可能原因
- 节点容器运行时(containerd/docker)异常:节点上的容器运行时进程僵死、磁盘IO过高导致无响应,无法执行容器创建、销毁指令,会同时出现旧Pod卡Terminating、新Pod卡ContainerCreating的现象。可登录对应节点执行
systemctl status containerd(或docker)查看运行状态,排查运行时日志确认是否有报错。 - 节点kubelet服务故障:kubelet出现OOM被终止、配置错误、与APIServer通信中断等问题时,无法接收控制面指令执行Pod生命周期操作,也会导致该现象。可检查节点kubelet状态,查看
/var/log/message或kubelet服务日志确认异常。 - 存储卷挂载/卸载异常:如果Pod关联了PV/PVC,存储集群故障、卷被节点锁住、无法执行卸载/挂载操作时,kubelet会等待存储操作完成再推进Pod状态,就会出现旧Pod卡Terminating、新Pod卡ContainerCreating的问题。可检查存储集群状态,查看对应节点的挂载日志确认是否有存储相关报错。
- CNI网络插件异常:节点上的CNI插件(Calico/Flannel等)进程异常、集群PodIP地址池耗尽、节点网络规则冲突时,无法为新Pod创建网络命名空间,也无法清理旧Pod的网络规则,会导致两种异常同时出现。可检查CNI插件运行状态,查看节点
/var/log/pods下对应Pod的网络相关日志。 - 节点系统资源耗尽:节点PID数量达到上限、文件句柄耗尽、inode耗尽时,无法创建新的容器进程,也无法清理旧进程资源。可登录对应节点执行
df -i检查inode使用情况,ps -ef | wc -l检查PID占用情况,ulimit -a检查系统资源限制。 - 镜像拉取异常:若节点与镜像仓库连通性异常、镜像拉取权限失效、镜像过大拉取超时,也会导致新Pod卡ContainerCreating,若旧镜像被占用无法清理也可能导致旧Pod删除异常。可在对应节点手动执行
docker pull(或ctr image pull)测试镜像拉取是否正常。
内容的提问来源于stack exchange,提问作者angelokh
相关产品推荐
相关产品推荐

