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

节点池节点检查自愈

最近更新时间2024.03.01 14:07:20

首次发布时间2023.09.27 17:21:19

节点作为集群的基础设施,其工作状态对用户来说至关重要。火山引擎容器团队自研节点检查和自愈功能,面向节点进行常见故障检测和故障自愈。本文为您介绍如何配置节点检查自愈功能。

说明

邀测·申请试用】:该功能目前处于邀测阶段,如需使用,请提交申请。

背景信息

自愈检查项

容器服务支持节点检查自愈功能,系统会按照规则配置,定期进行节点检查。当节点故障时,会记录 Node Event 事件,并执行自愈动作。目前支持的检查项和自愈动作,如下表所示。

检查项Event描述自愈动作
GPU 掉卡故障GpuCardFallen节点发生 GPU 掉卡故障禁止调度、节点排干、ECS 重启、重新检测
GPU 可恢复的内存故障GpuMemoryErrorRecoverable节点发生 GPU 可恢复的内存故障禁止调度、节点排干、ECS 重启、重新检测
GPU 不可恢复的内存故障GpuMemoryErrorUnrecoverable节点发生 GPU 不可恢复的内存故障禁止调度
GPU 链路故障GpuLinkError节点 GPU 链路故障或带宽使用不足禁止调度
GPU 链路性能下降GpuLinkUnhealthy节点 GPU 链路可用但发生掉速禁止调度
GPU 驱动故障GpuDriverError节点发生 GPU 驱动硬件故障禁止调度、节点排干、ECS 重启、重新检测
Kubelet 故障KubeletUnhealthyKubelet 运行状态异常导致节点不可用重启 kubelet 服务
Runtime 故障RuntimeUnhealthycontainerd / docker 运行状态异常导致节点不可用重启 containerd 服务
时间同步服务异常NTPProblem时钟同步服务(chrony)异常重启 chrony 服务

说明

  • 除 GPU 相关规则外,其他规则的自愈操作,仅对创建的托管节点池生效,对于非托管节点池和非托管节点池转化的托管节点池不生效。
  • 在执行 kubelet 故障Runtime 故障 修复时,会同时判断 kubelet 与 containerd 服务是否正常,如果存在服务异常则会一起修复。

自愈流程

容器服务节点检查 GPU 相关规则的自愈流程,如下图所示。
alt

自愈任务事件

节点池绑定检查自愈规则后,系统会按照规则配置,定期进行节点检查。当节点 GPU 故障时,会记录 Node Event 事件。您可以在 事件中心 查看对应的事件。检查项和事件的对应关系,如下表所示。

事件事件描述消息消息描述事件类别
NodeRepair开始自动故障处理Node {nodename} begin to repair开始执行故障处理Normal
NodeRepairAction自动故障处理Node {nodename} status is now: NodeCordon异常时禁止调度Warning
Node {nodename} status is now: NodeDrainStart开始排干节点Warning
Node {nodename} status is now: NodeDrainCompleted排干节点完成Normal
Node {nodename} status is now: InstanceReboot排干后重启 ECSNormal
Node {nodename} status is now: InstanceForceReboot未排干强制重启 ECSWarning
NodeRepairActionFailed自动故障处理失败Node {nodename} status is now: NodeIngressControllerExist排干前检查节点运行了 ingress-controller podWarning
Node {nodename} status is now: NodeBindPodExist排干前检查节点存在强绑定节点的工作负载Warning
Node {nodename} status is now: NodeSingleInstanceWorkloadExist排干前检查节点存在单副本工作负载Warning
Node {nodename} status is now: NodeStaticPodExist排干前检查节点存在 static podWarning
Node {nodename} status is now: {Gpu 故障事件}AfterRepairAction故障自愈后再检测故障仍然异常Warning
Node {nodename} status is now: NodeRepairActionTerminated自愈动作被终止Normal
NodeRepairActionSucceeded自动故障处理成功{Gpu 故障事件}RecoveredAfterRepairAction故障自愈后再检测故障恢复Normal

说明

  • 为保证节点故障时能够收到故障通知,建议您将容器集群接入 托管 Prometheus 产品,并配置相应的告警通知。详情请参见 接入托管 Prometheus
  • 您也可以将集群接入 云监控 产品,持久化故障事件,并基于故障事件配置告警。详情请参见 事件管理

操作步骤

步骤一:配置检查自愈规则

  1. 登录 容器服务控制台
  2. 单击左侧导航栏中的 集群
  3. 在集群列表页面,单击目标集群,进入集群管理页面。
  4. 在集群管理页面的左侧导航栏中,单击 检查自愈。单击 创建检查和自愈规则,创建规则。
    alt
    配置项说明
    规则名称配置检查自愈规则的名称。同一个集群下,规则名称必须唯一。

    规则配置

    在预置检查项中选择需要检查的项目,并配置异常时是否开启自愈。

    • 是否检查:开启或关闭具体的检查项。
    • 开启自愈:配置检查异常时,是否开启节点自愈。当开启该功能,且检查异常时,系统会根据配置进行自愈动作,分别为:节点封锁、节点排干和节点自愈
  5. 开启自愈功能时,配置自愈动作。
    1. 异常时封锁节点:当开启该功能且检查异常时,系统会给对应的节点打上污点,禁止 Pod 调度到该节点。
      alt
    2. 节点排干:当开启该功能且检查异常时,系统会终止并驱离节点上的工作负载。保证业务不会被部署在故障的节点上。
      alt
      配置项说明

      节点排干时间

      配置从节点被封锁到开始进行 Pod 驱逐的时间。支持多种时间段选择,包括:立刻、15 分钟、30 分钟、1 小时、2 小时、3 小时、6 小时、12 小时、24 小时、36 小时、2 天、3 天、4 天、5 天、6 天、7 天等。

      注意

      节点排干前会检查节点是否运行了以下工作负载,您需要确保节点上不存在这些工作负载,否则将不会进行节点排干的操作:

      • ingress-controller pod
      • 强绑定节点的工作负载
      • 单副本的工作负载
      • static pod

      节点排干不能完全保证终止/驱离节点上的工作负载,如果有工作负载无法被驱离,在不进行人工干预的前提下,将不会执行下一步自愈操作直至强制重启(若配置强制重启时间)。

    3. 排干后重启 ECS:当开启该功能时。节点排干后会在指定的时间后重启,尝试修复节点故障,完成自愈。
      alt
      配置项说明
      最长重启等待时间配置从节点排干到重启的时间。支持多种时间段选择,包括:30 分钟、1 小时、2 小时、3 小时、6 小时。

      修复成功后解除节点封锁

      配置节点重启并修复故障后,是否自动解除封锁。当开启该功能时,节点重启后系统会再次进行 GPU 检测,当所有检测项均无异常时,将解除节点封锁。

      注意

      系统仅能确保的已有检测项无异常,若发生超出节点检测项范围的故障,仍有可能导致训练或推理任务运行异常,如果自愈流程完成后,仍然存在问题,请 提交工单 获取技术支持。

  6. 配置完成后,勾选 我已知晓并同意,单击 确定,完成配置。

步骤二:节点池绑定检查自愈规则

您可以在创建节点池时绑定检查自愈规则,也可以为存量节点池绑定检查自愈规则。本文以创建节点池时绑定检查自愈规则为例。

  1. 在集群管理页面的左侧导航栏,选择 节点管理 > 节点池,单击 创建节点池,创建新的节点池,并在 运维配置 处绑定检查自愈规则。
    alt
    配置项说明

    检查和自愈

    配置是否开启节点检查自愈功能。

    • 开启:通过配置节点自愈规则,系统会自动检查节点上的 GPU 卡状态,当 GPU 卡故障时及时封锁节点,禁止 Pod 调度到节点上。
    • 关闭:(默认)不开启节点检查自愈功能。
    检查和自愈规则在下拉菜单中选择节点检查自愈规则。

    说明

    节点池的其他配置详情,请参见 创建节点池

  2. 单击 确定,完成绑定。

后续操作

查看检查自愈规则

  1. 在集群管理页面的左侧导航栏中,单击 检查自愈
  2. 在自愈规则列表中,单击检查自愈规则名称,即可查看规则的详情。
    alt
  3. 单击 自愈动作 列的 查看,可以查看自愈动作的配置详情。
    alt

查看自愈任务详情

  1. 在集群管理页面的左侧导航栏,选择 节点
  2. 单击目标节点名称,进入节点详情页面。
  3. 选择 故障自愈 页签,即可查看当前节点的故障自愈任务详情。
    alt