POD启动过程常见异常分析

本文主要梳理K8S中Pod创建的调度过程以及Pod调度到宿主机后的启动过程,便于日常工作中遇到此类问题的排查思路

Pod调度过程和创建过程思维导图

在这里插入图片描述
参考文档: https://github.com/jamiehannaford/what-happens-when-k8s

常见报错梳理

FailedCreatePodSandBox

create pod sandbox发生在pod调度至宿主机后,kubelet调用CRI创建pod sandbox的步骤;对照上面的思维导图;可以发现这个报错是CRI创建pod sandbox失败,包括了调用CNI分配IP和创建路由信息;一般可以结合enevts和kubelet日志以及CNI的运行日志一起排查;
案例参考: https://blog.csdn.net/root_zhong/article/details/127863032

SandboxChanged

也是sandbox相关的报错,具体也是定位kubelet日志以及CNI的运行日志定位问题
案例参考: https://blog.csdn.net/root_zhong/article/details/127855939

Pod状态为Pending

发生在Pod的调度过程;查看Pod的event,主要原因有以下几类:

  • 资源依赖; 依赖configmap,PVC等资源。
  • 资源不足; request过高,集群没有资源满足调度。
  • 使用亲和性不满足条件;
  • nodeSelector 使用有误。 污点和容忍。
  • 短暂的Pending可能Pod在pull image,可describe查看。

Pod处于Init:Error或Init CrashLoopBackOFf

init 为Pod在宿主机上启动pause容器后准备启动业务容器前的初始化容器;
解决方案; 主要是查看init容器的事件和日志

Pod处于ImagePullBackOff状态

Pod已经调度至节点,但是拉去镜像失败。
解决方案: 根据event描述,确认镜像名称是否正确,可以在目标节点手动pull测试

Pod处于CrashLoopBackOFF状态

表示容器一直处于重启,大部分是容器进程退出导致,少部分可能由于pod sandbox创建失败导致;
解决方案: 查看event事件; 确认容器退出原因,常见原因的有OOM-Kill, Liveness probe failed; 或查看容器退出前日志定位容器异常退出原因。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值