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 将执行以下操作:
- 尝试重启节点。
- 如果节点重启失败,AKS 会对该节点重置映像。
- 如果重置映像失败,并且它是 Linux 节点,AKS 将重新部署该节点。
如果自动修复失败,AKS 工程师会调查备选修正措施。
注意
如果节点上存在以下排斥,则不会触发自动修复: node.cloudprovider.kubernetes.io/shutdown
、ToBeDeletedByClusterAutoscaler
。
整个自动修复过程可能需要长达一个小时才能完成。 对于每个步骤,AKS 最多重试 3 次。
节点自动排出
计划事件可发生于任何节点池中的基础 VM 上。
下表显示了节点事件,以及这些事件导致 AKS 节点自动排出执行的操作:
事件 | 说明 | 操作 |
---|---|---|
冻结 | VM 计划为暂停几秒钟。 可能会暂停 CPU 和网络连接,但不会对内存或已打开的文件造成影响。 | 无操作。 |
重新启动 | VM 计划为重新启动。 VM 的非持久性内存丢失。 | 无操作。 |
重新部署 | VM 计划为移动到另一个节点。 VM 的临时磁盘丢失。 | 隔离和排空。 |
Terminate | VM 计划为删除。 | 隔离和排空。 |
限制
在很多情况下,AKS 可确定节点是否正常并尝试修复问题。 但在某些情况下,AKS 要么无法修复问题,要么无法检测到存在问题。 例如,在以下示例场景中,AKS 无法检测到问题:
- 由于网络配置错误,未报告节点状态。
- 节点最初无法注册为正常节点。
Node Autodrain 会尽量提供优质的服务,但不能保证在所有情况下都能完美运行
后续步骤
使用可用性区域增加 AKS 群集工作负载的高可用性。