一、问题描述
- 创建pod后,发现pod处于pending状态
[root@master CStor-CSI]# kubectl get pods -n cstor NAME READY STATUS RESTARTS AGE demo-csi-provisioner-567c9b9c7914-kpss4 0/7 Pending 0 45m demo-csi-provisioner-567c9b9c7914-v7qpq 0/7 Pending 0 45m
二、解决思路
- 首先获取特定Pod的描述信息,查看问题描述
[root@master CStor-CSI]# kubectl describe pod demo-csi-provisioner-567c9b9c7914-kpss4 -n cstor Warning FailedScheduling 4m16s (x4 over 19m) default-scheduler 0/3 nodes are available: 1 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }, 3 node(s) didn't match Pod's node affinity/selector. preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling. #这个警告表示有3个节点不符合Pod的节点亲和性(node affinity)或选择器(selector)的要求。 #Pod可能通过nodeSelector字段或其它节点亲和性配置要求指定了特定的节点标签, #但是这些节点不满足这些要求,因此无法调度Pod到这些节点上。
- 其次根据问题描述,查看nodeSelector
[root@master CStor-CSI]# kubectl edit pod demo-csi-provisioner-567c9b9c7914-kpss4 -n cstor #查看nodeSelector: # node-role.kubernetes.io/master: "" # 发现pod中nodeSelector字段存在上述信息,因此要在node节点label字段上增加上述信息
- 在node节点label字段增加信息
[root@master CStor-CSI]# kubectl label node node1 node-role.kubernetes.io/master="" node/node1 labeled
- 查看pod的状态
[root@master CStor-CSI]# kubectl get pods -n cstor NAME READY STATUS RESTARTS AGE demo-csi-provisioner-567c9b9c7914-kpss4 7/7 Running 0 48m demo-csi-provisioner-567c9b9c7914-v7qpq 7/7 Running 0 48m
三、总结
当pod处于pending状态时,可以根据kubectl describe命令查看pod中的问题描述,根据问题描述来排查问题、定位问题即可解决。