k8s pod 状态异常状态分析和处理方法

发布时间 2023-06-15 10:31:30作者: tigergaonotes
pod状态一般分为以下几种:
1、terminating
2、pending
3、containercreating或waiting
4、CrashloopBackoff
5、imagePullBackoff
6、imageinspectError
7、unknown
8、Error

1、一般处于imageinspectError通常指的是镜像文件损坏了,可以尝试删除损坏的镜像重新拉取。
2、Error状态说明pod在启动过程中发生了错误,常见可能原因包括依赖的configmap,secret或者PV等不存在,请求的资源超过了限制,比如超过了limitrange等。还有可能是违反了集群的安全策略等,比如违反了podsecurityPolicy等。容器无法操作集群内部的资源,
比如做了RBAC后,需要配置sa并为其配置角色绑定。
3、处于UNknown状态一般可能是节点失联,没有上报给apiserver,到达阈值后controller-manager认为节点失联并将其状态标记为unknown。
可能的原因有:节点高负载导致无法上报,节点宕机,节点被关机,网络不通。
4、处于terminating状态说明pod被删除,但是一直无法结束。
pod被删除的主要原因可能是:
1.用户主动删除的pod
2.工作负载在滚动更新,自动删除的pod
3.触发了节点驱逐,自动清理的pod。
4.节点长时间处于notready状态,pod被自动删除以便于被重新调度。

pod被删除流程中主要涉及到的组件有:apiserver,etcd,kubelet,dockerd或者containerd。既然能看到pod卡在terminating状态,说明apiserver能正常响应,也能正常从etcd中获取状态,
一般这两个组件不会有什么问题。有问题的主要是节点上的操作。