You need to enable JavaScript to run this app.
导航

Pod 处于 Pending 状态,未被成功调度

最近更新时间2023.08.11 14:33:23

首次发布时间2023.08.11 14:33:23

问题描述

Pod(容器组)长时间处于 Pending 状态,没有被调度。
alt

原因分析

  1. 查看 Pod 事件信息,初步确定 Pod Pending 的原因。详细操作,请参见 查看容器组信息
  2. 根据不同的事件信息,进一步确定 Pod Pending 的原因并处理问题。
    事件消息示例调度失败原因解决方法

    no nodes available to schedule pods

    集群没有可用的节点导致 Pod 无法调度到节点上。

    集群无可用节点

    0/3 nodes are available: 3 Insufficient cpu.
    0/2 nodes are available: 2 Insufficient memory.

    节点资源(CPU、内存)不足,无法调度 Pod 到节点上。

    节点资源不足

    0/1 nodes are available: 1 node(s) had taints that the pod didn't tolerate.节点上存在 Pod 无法容忍的污点。节点上存在 Pod 无法忍受的污点
    0/2 nodes are available: 1 node(s) didn't match node selector, 1 node(s) didn't match pod affinity rules, 1 node(s) didn't match pod affinity/anti-affinity.Pod 所属工作负载上配置的节点亲和调度、实例亲和调度、实例反亲和调度等,与已有的节点不匹配。节点与 Pod 的亲和性不匹配

解决方法

集群无可用节点

  1. 登录 容器服务控制台,在左侧导航栏中单击 集群
  2. 单击目标集群名称,在集群管理页面的左侧导航栏中单击 节点
  3. 在 节点 页面查看是否存在可用(状态为 运行中)的节点。
    • 若无节点:为集群新增节点,或添加已有的 ECS 实例到集群中。详细操作,请参见 新增节点添加已有节点
    • 若有节点,但状态不是 运行中:排查节点异常状态并修复后,确保节点可用、资源充足,即可调度 Pod 到节点上。节点异常处理方法,请参见 节点与节点池 FAQ

节点资源不足

  1. 登录 容器服务控制台,在左侧导航栏中单击 集群
  2. 单击目标集群名称,在集群管理页面的左侧导航栏中单击 节点
  3. 在 节点 页面查看可用(状态为 运行中)节点的 CPU、内存资源使用情况。
    alt
    若节点资源不充足时,按如下方法处理:
    • 节点数量过少,需要为集群新增节点,保证集群节点资源满足 Pod 的调度需求。详细操作,请参见 新增节点
    • 单个节点的规格过小,需要增加大规格的节点,保证 CPU、内存资源充足。详细操作,请参见 新增节点创建节点池
    • 删除现有节点上不必要的 Pod,释放节点资源。详细操作,请参见 删除容器组
    • 基于实际业务情况,调整 Pod 内容器的资源配额(Request/Limit),使其能够调度到节点上。详细操作,请参见 工作负载
      alt

节点上存在 Pod 无法容忍的污点

  1. 登录 容器服务控制台,在左侧导航栏中单击 集群
  2. 单击目标集群名称,在集群管理页面的左侧导航栏中单击 节点
  3. 在 节点 页面单击节点名称,进入 节点详情页
  4. 节点详情页 查看节点的污点信息,并结合实际情况,处理 Pod 和节点间的调度问题。
    • 修改 Pod 所属工作负载的 调度策略,容忍该污点。详细操作,请参见 工作负载
      alt
    • 通过修改节点池配置,批量更新节点污点。详细操作,请参见 编辑节点池。您也可以单个编辑节点污点或删除污点。

      说明

      系统污点不支持删除。

      alt
    • 更多处理方法,可参考 Kubernetes 官方文档

节点与 Pod 的亲和性不匹配

  1. 登录 容器服务控制台,在左侧导航栏中单击 集群
  2. 单击目标集群名称,在集群管理页面的左侧导航栏中单击 节点
  3. 在 节点 页面,选择节点名称右侧 操作 列下的... > 标签管理,查看节点的标签信息。
  4. 基于节点标签,调整 Pod 对应工作负载的 调度策略。下图以无状态负载为例,详细操作,请参见 管理无状态负载。更多亲和性相关说明,请参见 Kubernetes 官方文档
    • 节点亲和调度强制调度 改为 优先调度
      alt
    • 调整 Pod 亲和性/反亲和性,确保能有节点与之匹配。
      alt