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 检测到一个节点持续不健康至少 分钟,AKS 将执行以下操作:

  1. AKS 重启节点。
  2. 如果重启后节点仍不正常,AKS 会对节点进行重镜像。
  3. 如果节点在重映像后仍不正常,并且它是一个 Linux 节点,AKS 会重新部署节点。

如果节点仍不正常,AKS 会重试重启、重映像并重新部署序列最多三次。 整个自动修复过程可能需要长达一个小时才能完成。

局限性

AKS 节点自动修复是一项尽力型服务,我们不保证节点恢复为正常状态。 如果持续处于不正常状态,我们强烈建议你对节点执行手动调查。 详细了解如何排查节点 NotReady 状态

在某些情况下,AKS 不执行自动修复。 无法自动修复节点这一情况的发生可能是由于设计原因,也可能是 Azure 无法检测到问题的存在。 未执行自动修复的示例包括:

  • 由于网络配置错误,未报告节点状态。
  • 节点最初未能注册为健康节点。
  • 如果节点上存在以下任一污点:node.cloudprovider.kubernetes.io/shutdownToBeDeletedByClusterAutoscaler
  • 节点正在升级过程中,导致节点 "cluster-autoscaler.kubernetes.io/scale-down-disabled": "true""kubernetes.azure.com/azure-cluster-autoscaler-scale-down-disabled-reason": "upgrade" 出现以下注释

使用 Kubernetes 事件监视节点自动修复

AKS 对群集执行节点自动修复时,AKS 会从 aks-auto-repair 源发出 Kubernetes 事件以获取可见性。 自动修复发生时,对节点对象显示以下事件。

若要详细了解如何访问、存储 Kubernetes 事件并对其配置警报,请参阅在 Azure Kubernetes 服务中使用 Kubernetes 事件进行故障排除

原因 事件消息 DESCRIPTION
NodeRebootStart 由于 NotReady 状态持续超过 5 分钟,因此节点自动修复正在启动重启操作。 即将对节点上执行重启时,发出此事件以通知你。 此操作是整个节点自动修复序列中的第一个操作。
NodeRebootEnd 节点自动修复的重新启动操作已完成。 在节点上完成重启后发出。 此事件不指示执行重启后节点的运行状况(正常或不正常)。
NodeReimageStart 由于 NotReady 状态持续超过 5 分钟,因此节点自动修复正在启动重镜像操作。 此事件会在即将对节点进行重镜像时发出,以通知你。
NodeReimageEnd 节点自动修复的重置映像操作已完成。 在节点上完成重置映像后发出。 此事件不指示执行重镜像后节点的运行状况(正常或不正常)。
节点重新部署开始 由于 NotReady 状态持续超过 5 分钟,因此节点自动修复正在启动重新部署操作。 当即将在你的节点上执行重新部署时,将发出此事件以通知你。 重新部署是节点自动修复序列中的最后一个操作。
节点重新部署结束 节点自动修复的重新部署操作已完成。 在节点上完成重新部署后发出。 此事件不指示执行重新部署后节点的运行状况(正常或不正常)。

如果在节点自动修复过程中发生任何错误,则发出以下事件,并显示逐字错误消息。 详细了解如何排查常见节点自动修复错误

注释

以下事件消息中的错误代码因报告的错误而异

原因 事件消息 DESCRIPTION
NodeRebootError 节点自动修复重启操作由于操作失败而失败。 请参阅此处的错误详细信息:错误代码 重启操作出错时发出。
NodeReimageError 节点自动修复重镜像操作因运行失败而未能完成。 请参阅此处的错误详细信息:错误代码 重镜像操作出错时发出。
节点重新部署错误 节点自动修复重新部署操作由于操作失败而失败。 请参阅此处的错误详细信息:错误代码 重新部署操作出错时发出。

后续步骤

默认情况下,可访问针对 AKS 群集过去 1 小时的 Kubernetes 事件和日志。 若要存储和查询过去 90 天的事件和日志,请启用容器见解,以对 AKS 群集进行更深入的故障排除。