51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

K8s容器一直处于Pending状态问题排查

公司产品基于K8s部署,在通过yaml编排启动对应容器时,发现POD一直处于Pending状态。

通常是由于pod的nodeSelector选择器未匹配节点所导致的,需要检查pod配置中定义的nodeSelector相关字段,确保能够与节点标签相匹配。

$ kubectl describe pod pod-xxx
Warning  FailedScheduling  <unknown>  default-scheduler  0/1 nodes are available: 1 node(s) didn't match node selector.

排查思路

查看容器配置

可以通过查看deployment或者pod中nodeSelector的配置,来判断节点分配规则。

[root@localhost ~]# kubectl edit job -n prophet flyway-test
    # 节点标签
      nodeSelector:
        lolicp.com/system: "true"

[root@localhost ~]# kubectl edit pod -n monitoring prometheus-k8s-0
        nodeSelectorTerms:
        - matchExpressions:
          - key: lolicp.com/prometheus
            operator: In
            values:
            - "true"
节点打标签

根据nodeSelector的配置内容,容器分配至指定labels的节点中。

kubectl label nodes <node-name> <label-key>=<label-value>

示范:

kubectl label nodes 192.168.252.145 lolicp.com/prometheus=true

添加标签完成后,容器恢复正常。

赞(1)
未经允许不得转载:工具盒子 » K8s容器一直处于Pending状态问题排查