Azure Kubernetes 服务 (AKS) 节点自动修复

Azure Kubernetes 服务 (AKS) 会持续监视工作器节点的运行状况,在节点运行不正常的情况下对其进行自动修复。 Azure 虚拟机 (VM) 平台对出现问题的 VM 执行维护。 AKS 和 Azure VM 协同工作,以最大程度地减少群集的服务中断次数。

本文介绍了自动节点修复功能在 Windows 和 Linux 节点上的行为方式。

AKS 如何检查未就绪的节点

AKS 使用以下规则来确定节点是否运行不正常以及是否需要修复:

  • 节点在 10 分钟的时间范围内持续检查时报告“未就绪”状态。
  • 节点在 10 分钟内未报告任何状态。

可使用 kubectl get nodes 命令手动检查节点的运行状况状态。

自动修复的工作原理

注意

AKS 使用用户帐户“aks-remediator”启动修复操作。

如果 AKS 标识出持续 5 分钟运行不正常的节点,则 AKS 将执行以下操作:

  1. 尝试重启节点。
  2. 如果节点重启失败,AKS 会对该节点重置映像。
  3. 如果重置映像失败,并且它是 Linux 节点,AKS 将重新部署该节点。

如果自动修复失败,AKS 工程师会调查备选修正措施。

注意

如果节点上存在以下排斥,则不会触发自动修复: node.cloudprovider.kubernetes.io/shutdownToBeDeletedByClusterAutoscaler

整个自动修复过程可能需要长达一个小时才能完成。 对于每个步骤,AKS 最多重试 3 次。

节点自动排出

计划事件可发生于任何节点池中的基础 VM 上。

下表显示了节点事件,以及这些事件导致 AKS 节点自动排出执行的操作:

事件 说明 操作
冻结 VM 计划为暂停几秒钟。 可能会暂停 CPU 和网络连接,但不会对内存或已打开的文件造成影响。 无操作。
重新启动 VM 计划为重新启动。 VM 的非持久性内存丢失。 无操作。
重新部署 VM 计划为移动到另一个节点。 VM 的临时磁盘丢失。 隔离和排空。
Terminate VM 计划为删除。 隔离和排空。

限制

在很多情况下,AKS 可确定节点是否正常并尝试修复问题。 但在某些情况下,AKS 要么无法修复问题,要么无法检测到存在问题。 例如,在以下示例场景中,AKS 无法检测到问题:

  • 由于网络配置错误,未报告节点状态。
  • 节点最初无法注册为正常节点。

Node Autodrain 会尽量提供优质的服务,但不能保证在所有情况下都能完美运行

后续步骤

使用可用性区域增加 AKS 群集工作负载的高可用性。