你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

AKS 会持续监视工作器节点的运行状况,在节点运行不正常的情况下对其进行自动修复。 Azure 虚拟机 (VM) 平台对出现问题的 VM 执行维护

AKS 和 Azure VM 协同工作,以最大程度地减少群集的服务中断次数。

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

AKS 如何检查运行不正常的节点

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

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

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

kubectl get nodes

自动修复的工作原理

注意

AKS 使用用户帐户“aks-remediator”启动修复操作。 AKS 群集中自动修复所需的最小节点数为 2。

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

  1. 重新启动该节点。
  2. 如果重新启动失败,则对该节点重置映像。
  3. 如果重置映像失败,则重新部署节点。

如果自动修复不成功,AKS 工程师会调查其他修正措施。

如果 AKS 在运行状况检查期间发现多个运行不正常的节点,则在开始另一个修复之前,将单独修复每个节点。

节点自动排出

计划事件可发生于任何节点池中的基础虚拟机 (VM) 上。 对于现成节点池,计划事件可能会导致节点发生“抢占”节点事件。 某些节点事件(例如“抢占”)会导致发生 AKS 节点自动排出,以尝试对受影响的节点进行封锁和排出,从而可以正常重新计划该节点上任何受影响的工作负载。 发生这种情况时,你可能会注意到节点收到“remediator.aks.microsoft.com/unschedulable”的污点,因为“kubernetes.azure.com/scalesetpriority:spot”

下表显示了节点事件,以及这些事件导致的操作(对于 AKS 节点自动排出而言)。

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

限制

在许多情况下,AKS 可以确定节点是否运行不正常并尝试修复问题,但也有 AKS 无法修复问题或无法检测到问题的情况。 例如,如果由于网络配置错误而未报告节点状态,或者最初未能注册为健康节点,AKS 就无法检测到问题。

后续步骤

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