当前位置:主页 > 查看内容

工作负载异常:实例调度失败_云容器引擎 CCE_常见问题_工作负载_

发布时间:2021-09-24 00:00| 位朋友查看

简介:问题定位 工作负载状态异常时,建议先查看K8S事件以便于确定导致异常的初步原因,再参照如下排查思路解决问题,查看K8S事件的方法请参见 查看K8S事件,初步定位异常原因 。 排查思路 以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原……

问题定位

工作负载状态异常时,建议先查看K8S事件以便于确定导致异常的初步原因,再参照如下排查思路解决问题,查看K8S事件的方法请参见查看K8S事件,初步定位异常原因

排查思路

以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。

如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。

图1 排查思路

排查项一:集群内是否无可用节点

  1. CCE控制台中,单击左侧导航栏的“工作负载 > 无状态负载 Deployment”“工作负载 > 有状态负载 StatefulSet”
  2. 在工作负载列表中,单击异常工作负载的名称进入详情页,可以看到该工作负载的状态为“未就绪”
  3. 在“实例列表”页签下,查看该工作负载的“K8S事件”信息。

    • 该实例的最新事件显示“实例异常”,K8S事件报错信息为“no nodes available to schedule pods”,可初步定位为节点异常。

    • 最新事件显示“实例异常”,K8S事件报错信息为“0/1 nodes are available: 1 node(s) had taints that the pod didn't tolerate.”,可初步定位为节点异常。

  4. CCE控制台中,单击左侧导航栏的“资源管理 > 节点管理,查看集群内是否有可用节点。

    • 若集群内不存在节点,可确定为无可用节点导致实例异常。
    • 图2显示,确认该集群中仅有1个节点,且该节点不可用,可确定为无可用节点导致实例异常。
      图2 节点不可用

解决方案:

排查项二:节点资源(CPU、内存等)是否充足

“实例资源的申请量”超过了“实例所在节点的可分配资源总量”时,节点无法满足实例所需资源要求导致调度失败。

  1. CCE控制台中,单击左侧导航栏的“工作负载 > 无状态负载 Deployment”“工作负载 > 有状态负载 StatefulSet”,单击工作负载名称进入详情页,在“实例列表”页签下查看确认实例的“事件”信息。

    本例中的K8S事件为“0/1 nodes are available: 1 Insufficient memory.”,即初步定位为节点内存不足。
    图3 节点资源不足导致

  2. 单击左侧导航栏的“资源管理 > 节点管理”,在“可分配资源”列中,可查看实例所在节点的可分配CPU和可分配内存的大小。

    图4,本节点可分配CPU为1.00 Core,可分配内存为0.39 GiB。
    图4 查看节点可用资源

  3. 单击左侧导航栏的“工作负载 > 无状态负载 Deployment”“工作负载 > 有状态负载 StatefulSet”,单击工作负载名称进入详情页面,在“实例列表”页签下可查看CPU申请量或内存申请量。

    图5,可以看到工作负载两个实例的内存申请量分别为0.50 GiB,严重超过了实例所在节点的可分配内存0.39 GiB。因此实例调度会失败。

    图5 查看工作负载的CPU申请量和内存申请量

解决方案:

ECS控制台变更节点规格,扩大节点资源。

排查项三:检查工作负载的亲和性配置

当亲和性配置出现如下互斥情况时,也会导致实例调度失败:

例如:

workload1、workload2设置了工作负载间的反亲和,如workload1部署在Node1,workload2部署在Node2。

workload3部署上线时,既希望与workload2亲和,又希望可以部署在不同节点如Node1上,这就造成了工作负载亲和与节点亲和间的互斥,导致最终工作负载部署失败。

图6 亲和策略设置不合适导致实例调度失败

解决方案:

  • 在设置“工作负载间的亲和性”和“工作负载和节点的亲和性”时,需确保不要出现互斥情况,否则工作负载会部署失败。
  • 若工作负载配置了节点亲和性,需确保亲和的节点标签中supportContainer设置为true,否则会导致pod无法调动到节点上,查看事件提示如下错误信息:
    No nodes are available that match all of the following predicates: MatchNode Selector, NodeNotSupportsContainer

    节点标签为false时将会调度失败,报错信息如下图所示 :

排查项四:挂载的存储卷与节点是否处于同一分区

如果挂载的存储卷与节点处于不同分区,也会导致工作负载异常,实例调度失败,如下图所示:

解决方案:

重新创建存储卷,可用区选择与节点同一分区,或重新创建工作负载,存储卷选择自动分配。

提交工单

如果上述方法均不能解决您的疑问,提交工单寻求更多帮助。


本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐