Warning FailedScheduling 60s (x8 over 8m16s) default-scheduler 0/7 nodes are available: 1 node(s)...

问题

kubectl create -f test.yaml 命令创建资源后,pod处于pending状态。
kubectl describe描述如下:

Events:
Type Reason Age From Message

Warning FailedScheduling 60s (x8 over 8m16s) default-scheduler 0/7 nodes are available: 1 node(s) were unschedulable, 6 node(s) didn’t match Pod’s node affinity/selector.

原因

根据 kubectl describe 输出信息,Pod 处于 Pending 原因是调度器无法找到合适的节点来部署Pod。

具体的原因有两个:

  1. 1 个节点不可调度:意味着一个节点被标记为不可调度(unschedulable),通常是因为节点已经被标记为 cordoneddrained,也可能是主节点(默认是不可调度)。
  2. 6 个节点不符合 Pod 的节点亲和性/选择器要求:意味着 Pod 的节点亲和性或节点选择器规则不匹配这 6 个节点的标签或其他属性。

解决

检查节点状态

  • 查看节点列表:kubectl get nodes,看看是否有节点被标记为 SchedulingDisabled
  • 如果有,可以使用命令使节点可调度:kubectl uncordon <node-name>
  • 注意,主节点(master)默认是不可调度的,例如:
[root@k8s-master01]# kubectl get nodes
NAME        STATUS                     ROLES    AGE    VERSION
master-01   Ready,SchedulingDisabled   master   112d   v1.23.8
node-01     Ready                      node     112d   v1.23.8
node-02     Ready                      node     112d   v1.23.8
node-03     Ready                      node     112d   v1.23.8

检查节点亲和性和选择器

  1. 检查 Pod 的节点亲和性和选择器

    • 查看 test.yaml 文件中是否定义了 nodeSelectornodeAffinity

    • 确保这些规则与集群中节点的标签匹配。

    • 例如,检查 test.yaml 中的以下部分:

      spec:
        affinity:
          nodeAffinity:
            requiredDuringSchedulingIgnoredDuringExecution:
              nodeSelectorTerms:
              - matchExpressions:
                - key: <label-key>
                  operator: In
                  values:
                  - <label-value>
        nodeSelector:
          <label-key>: <label-value>
      
  2. 检查节点标签kubectl get nodes --show-labels,例如:

    NAME        STATUS                     ROLES   LABELS
    master-01   Ready,SchedulingDisabled   master  ...,kubernetes.io/role=master
    node-01     Ready                      node    ...,feature2=web,feature=app,...,kubernetes.io/role=node
    node-02     Ready                      node    ...,feature2=db,feature=app,...,kubernetes.io/role=node
    node-03     Ready                      node    ...feature2=edge,feature=app,...,kubernetes.io/role=node
    
  3. 确保节点标签与 Pod 的 nodeSelectornodeAffinity 匹配。

  4. 如果 nodeSelectornodeAffinity 不必要,可以暂时移除这些规则以便进行测试。

其他检查

  1. 资源限制:检查是否有资源限制导致无法调度,比如 CPU 或内存需求超过节点可用资源。
  2. 调度器策略:确认调度器策略没有限制 Pod 的调度。
  3. 调度器日志:如果问题依然存在,可以查看 Kubernetes 调度器的日志以获得更多信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值