你当前正在访问 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 将执行以下操作:
- 重新启动该节点。
- 如果重新启动失败,则对该节点重置映像。
- 如果重置映像失败,则重新部署节点。
如果自动修复不成功,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 群集工作负载的高可用性。