问题描述 Pod(容器组)长时间处于 Pending 状态,没有被调度。
原因分析 查看 Pod 事件信息,初步确定 Pod Pending 的原因。详细操作,请参见 查看容器组信息 。 根据不同的事件信息,进一步确定 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 的亲和性不匹配
解决方法 集群无可用节点 登录 容器服务控制台 ,在左侧导航栏中单击 集群 。 单击目标集群名称,在集群管理页面的左侧导航栏中单击 节点 。 在 节点 页面查看是否存在可用(状态为 运行中 )的节点。
若无节点:为集群新增节点,或添加已有的 ECS 实例到集群中。详细操作,请参见 新增节点 、添加已有节点 。 若有节点,但状态不是 运行中 :排查节点异常状态并修复后,确保节点可用、资源充足,即可调度 Pod 到节点上。节点异常处理方法,请参见 节点与节点池 FAQ 。 节点资源不足 登录 容器服务控制台 ,在左侧导航栏中单击 集群 。 单击目标集群名称,在集群管理页面的左侧导航栏中单击 节点 。 在 节点 页面查看可用(状态为 运行中 )节点的 CPU、内存资源使用情况。
若节点资源不充足时,按如下方法处理:
节点数量过少,需要为集群新增节点,保证集群节点资源满足 Pod 的调度需求。详细操作,请参见 新增节点 。 单个节点的规格过小,需要增加大规格的节点,保证 CPU、内存资源充足。详细操作,请参见 新增节点 、创建节点池 。 删除现有节点上不必要的 Pod,释放节点资源。详细操作,请参见 删除容器组 。 基于实际业务情况,调整 Pod 内容器的资源配额(Request/Limit),使其能够调度到节点上。详细操作,请参见 工作负载 。 节点上存在 Pod 无法容忍的污点 登录 容器服务控制台 ,在左侧导航栏中单击 集群 。 单击目标集群名称,在集群管理页面的左侧导航栏中单击 节点 。 在 节点 页面单击节点名称,进入 节点详情页 。 在 节点详情页 查看节点的污点信息,并结合实际情况,处理 Pod 和节点间的调度问题。
节点与 Pod 的亲和性不匹配 登录 容器服务控制台 ,在左侧导航栏中单击 集群 。 单击目标集群名称,在集群管理页面的左侧导航栏中单击 节点 。 在 节点 页面,选择节点名称右侧 操作 列下的...
> 标签管理 ,查看节点的标签信息。 基于节点标签,调整 Pod 对应工作负载的 调度策略 。下图以无状态负载为例,详细操作,请参见 管理无状态负载 。更多亲和性相关说明,请参见 Kubernetes 官方文档 。
将 节点亲和调度 从 强制调度 改为 优先调度 。 调整 Pod 亲和性/反亲和性,确保能有节点与之匹配。