pod常见问题及解决⽅法整理
⼀、pod处于pending状态
原因:
如果 Pod 被卡在 Pending 状态,就意味着它不能调度在某个节点上。⼀般来说,这是因为某种类型的资源不⾜⽽导致⽆法调度。
排查⽅法:
1、查看pod详细信息,event中会显⽰具体⽆法调度的原因
kubectl describe pods ${POD_NAME} -n ${NAMESPACE_NAME}
存在的问题:当前没有满⾜调度条件的节点:
1、节点资源不⾜
2、HostPort被占⽤
3、节点不存在对应的标签
4、节点存在污点
建议解决⽅案
1. 节点资源不⾜:
pending建议解决⽅案:集新增节点。
紧急解决⽅案:缩减⾮核⼼业务pod数量。
2. HostPort被占⽤
建议解决⽅案:检查端⼝冲突,修改对端;建议采⽤service⽅式暴露服务
3. 节点不存在对应的标签
建议解决⽅案:检查标签是否正确;给对应节点添加对应标签。
4. 节点存在污点:
建议解决⽅案:添加对应的容忍度
⼆、pod处于Waiting/ImagePullBackOff状态
原因:
如果 Pod 被卡在Waiting 状态,那么它已被调度在某个⼯作节点,但它不能在该机器上运⾏。⼀般来说,这是因为镜像拉去失败导致。排查⽅法:
1、查看pod详细信息,event中会显⽰具体⽆法启动的原因
kubectl describe pods ${POD_NAME} -n ${NAMESPACE_NAME}
2、在对应的node节点执⾏镜像拉去命令
docker pull <image>
3、检查⽹络组件状态
kubectl -n kube-system get pod -owide | grep calico
4、查看⽹络组件⽇志
kubectl logs -f ${POD_NAME} -n ${NAMESPACE_NAME}
存在的问题:
1、镜像拉去失败:镜像配置错误、kubelet⽆法访问镜像、秘钥配置错误、镜像太⼤拉取超时
2、CNI⽹络错误:⽹络组件异常,⽆法为pod分配IP地址
3、容器⽆法启动:镜像参数配置异常
建议解决⽅案
1. 镜像拉去失败:
建议解决⽅案:检查镜像名称,检查kubelet配置⽂件,尝试在节点直接拉取镜像
2. CNI⽹络错误:
建议解决⽅案:检查⽹络组件状态,查看⽹络组件⽇志。
3. 容器⽆法启动:
建议解决⽅案:确认镜像参数是否正确,确认开发本地相同tag的镜像是否可以正常运⾏
三、pod处于ContainerCreating状态
原因:
如果 Pod 被卡在ContainerCreating状态,那么它已被调度在某个⼯作节点,但是在启动过程中发送了错误。⼀般来说,这是因为依赖资源不存在导致。
排查⽅法:
1、查看pod详细信息,event中会显⽰具体启动失败的原因
kubectl describe pods ${POD_NAME} -n ${NAMESPACE_NAME}
存在的问题:
1、依赖资源不存在:pv、cm、secret等
建议解决⽅案
1. 依赖资源不存在:
建议解决⽅案:检查资源名称是否正确,对应资源是否已创建
四、pod处于Failed/CrashLoopBackOff状态
原因:
如果 Pod 被卡在CrashLoopBackOff状态,那么它已被调度在某个⼯作节点,且可以正常启动但是⼜异常退出了。⼀般来说,这是因为健康检查未通过或应⽤程序运⾏异常导致。
排查⽅法:
1、查看pod详细信息,event中会显⽰具体启动失败的原因
kubectl describe pods ${POD_NAME} -n ${NAMESPACE_NAME}
2、查看对应pod的⽇志信息
kubectl logs -f ${POD_NAME} -n ${NAMESPACE_NAME}
存在的问题:
1、健康检查失败
2、应⽤程序运⾏异常
建议解决⽅案
1. 健康检查失败:
建议解决⽅案:检查健康检查的内容是否正确。
2. 应⽤程序运⾏异常:
建议解决⽅案:反馈对应开发联合排查,确认问题。
四、pod处于Unknown状态
原因:
如果 Pod 处于Unknown 状态,表⽰集⽆法获取 Pod 的状态,通常是因为与 Pod 所在主机通信失败导致。
排查⽅法:
1、查看kubelet服务状态
systemctl status kubelet -l
2、检查与apiserver通信状态
telnet ${APISERVER_IP:PORT}
存在的问题:kubelet服务与apiserver失联
1、kubelet未启动
2、kubelet节点与apiserver通信异常
建议解决⽅案
1. kubelet未启动:
建议解决⽅案:启动kubelet服务,排查kubelet服务异常停⽌的原因。
2. kubelet节点与apiserver通信异常:
建议解决⽅案:检查kubelet节点与apiserver节点间的⽹络状态
五、pod处于Evicted状态
原因:
如果 Pod 处于Evicted状态,通常是因为与 Pod 所在主机系统内存或硬盘资源不⾜导致。
排查⽅法:
1、查看系统磁盘资源使⽤率
df -h
2、查看系统内存资源使⽤率
free -h
存在的问题:kubelet服务与apiserver失联
1、系统磁盘不⾜
2、系统内存不⾜
建议解决⽅案
1. 系统磁盘不⾜:
建议解决⽅案:进⾏磁盘清理或扩容磁盘。
2. 系统内存不⾜:
建议解决⽅案:集新增节点
紧急解决⽅案:缩减⾮核⼼业务pod数量。
六、pod处于terminating状态
原因:
如果 Pod 处于terminating 状态,通常是因为pod未被正确回收导致。
排查⽅法:
1、查看kubelet服务状态
systemctl status kubelet -l
2、查看docker服务状态
systemctl status kubelet -l
3、强制删除pod指令(谨慎执⾏)
kubectl delete pods ${POD_NAME} --grace-period=0 --force
存在的问题:
1、kubelet未执⾏回收操作/执⾏回收失败
2、docker未执⾏回收操作/执⾏回收失败
建议解决⽅案
1. kubelet未正确回收:
建议解决⽅案:查看kubelet服务⽇志,进⼀步判断排查。
紧急解决⽅案:强制删除该pod(注意:该指令仅在确认该pod的删除对环境⽆影响的前提下执⾏)2. docker未正确回收:
建议解决⽅案:检查docker服务⽇志,进⼀步判断排查
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论