目录
三、Pod 一直处于 Waiting 或 ContainerCreating 状态
五、Pod 一直处于 CrashLoopBackOff 状态
一、排障基本命令
一般来说pod处于异常状态,都可以执行以下命令查看pod状态
kubectl get pod -o yaml #查看pod配置
kubcctl get pod -o wide #查看pod运行节点等信息
kubectl describe pod #查看pod事件
kubectl logs #查看pod日志
二、Pod处于Pending状态
pending说明pod还没调度到某个Node上面
可以通过以下命令查看
kubectl describe pod
可能原因:
1、资源不足,集群内所有的 Node 都不满足该 Pod 请求的CPU、内存或者临时存储空间等资源。解决方法是降低资源
使用率,可以删除不用的Pod或者添加新的Node节点
kubectl describe node #可以查看node资源情况
2、HostPort 端口已被占用,通常推荐使用 Service 对外开放服务端口
3、不满足 nodeSelector
如果Pod包含nodeSelector 指定了节点需要包含的 label,调度器将只会考虑将 Pod 调度到包含这些 label
的Node上,如果没有 Node 有这些 label或者有这些 label的 Node 其它条件不满足也将会无法调度
4、不满足 affinity
nodeAffinity: 节点亲和性,可以看成是增强版的 nodeSelector,用于限制 Pod 只允许被调度到某一部分 Node
podAffinity: Pod亲和性,用于将一些有关联的Pod调度到同一个地方,可以是指同一个节点或同一个可用区的节点等
podAntiAffinity: Pod反亲和性,用于避免将某一类Pod调度到同一个地方避免单点故障,比如将集群 DNS 服务
的 Pod 副本都调度到不同节点,避免一个节点挂了造成整个集群DNS解析失败,使得业务中断