自动升级 Azure Kubernetes 服务 (AKS) 群集

AKS 群集生命周期的一部分涉及到定期升级到最新的 Kubernetes 版本。 必须应用最新的安全版本,或者通过升级来获取最新功能。 在了解自动升级之前,请务必了解 AKS 群集升级基础知识

注意

任何升级操作,无论是手动执行还是自动执行,都会升级节点映像版本(如果该版本还不是最新版本)。 最新版本取决于完整的 AKS 版本,可通过访问 AKS 发布跟踪器 来确定。

自动升级会首先升级控制平面,然后逐个升级代理池。

为何使用群集自动升级

群集自动升级提供了一种“一劳永逸”的机制,可带来明显的时间和运营成本效益。 通过启用自动升级,可以确保群集是最新版本,并且不会错过来自 AKS 和上游 Kubernetes 的最新功能或补丁。

AKS 执行严格的可支持性版本控制窗口。 通过正确选择自动升级通道,可以避免群集陷入不受支持的版本。 有关 AKS 支持窗口的详细信息,请参阅别名次要版本

客户启动的升级与 AKS 启动的自动升级

你可以按照以下指南指定群集自动升级具体设置。 升级按指定频率进行。建议你进行升级,以便继续使用受支持的 Kubernetes 版本。

AKS 还会为不受支持的群集启动自动升级。 当 n-3 版本的群集(n 是支持的最新 AKS GA 次要版本)即将降至 n-4 时,AKS 会自动将群集升级到 n-2 以符合 AKS 支持策略。 默认情况下,会自动将平台支持的群集升级到受支持的版本。 在自动升级操作期间,将会升级已停止的节点池。 在启动节点池时,升级将应用于节点。 若要最大程度地减少中断,请设置维护时段

群集自动升级限制

如果使用群集自动升级,则再也不能先升级控制平面再升级单个节点池。 群集自动升级始终会一起升级控制平面和节点池。 不能只升级控制平面。 运行 az aks upgrade --control-plane-only 命令会引发以下错误:NotAllAgentPoolOrchestratorVersionSpecifiedAndUnchanged: Using managed cluster api, all Agent pools' OrchestratorVersion must be all specified or all unspecified. If all specified, they must be stay unchanged or the same with control plane.

如果使用 node-image 群集自动升级通道或 NodeImage 节点映像自动升级通道,则默认情况下将禁用 Linux 无人参与升级

使用群集自动升级

自动完成的升级在功能上与手动升级相同。 所选自动升级通道决定了升级的时间。 更改自动升级后,更改需要 24 小时才能生效。 自动升级群集遵循与手动升级群集相同的过程。 有关详细信息,请参阅升级 AKS 群集

有以下升级通道可用:

通道 操作 示例
none 禁用自动升级,使群集保持其当前版本的 Kubernetes。 如果保持不变,则为默认设置。
patch 当有最新的受支持补丁版本可用时,将群集自动升级到该版本,同时使次要版本保持不变。 例如,如果群集运行版本 1.17.7,而版本 1.17.9、1.18.4、1.18.6 和 1.19.1 可用,则群集将升级到 1.17.9。
stable 自动将群集升级到次要版本 N-1 的最新受支持补丁发行版,其中 N 是最新的受支持次要版本。 例如,如果群集运行版本 1.17.7,而版本 1.17.9、1.18.4、1.18.6 和 1.19.1 可用,则群集将升级到 1.18.6。
rapid 自动将群集升级到最新受支持次要版本的最新受支持补丁发行版。 如果群集的 Kubernetes 版本是一个 N-2 次要版本,其中 N 是最新的受支持次要版本,则群集将首先升级到 N-1 次要版本的最新受支持补丁版本。 例如,如果群集运行版本 1.17.7,而版本 1.17.9、1.18.4、1.18.6 和 1.19.1 可用,则群集将先升级到 1.18.6,然后升级到 1.19.1。
node-image 自动将节点映像升级到可用的最新版本。 Azure 经常(通常每周)为映像节点提供补丁和新映像,但除非升级节点映像,否则正在运行的节点不会获得新映像。 当有新版本可用时,打开节点映像通道会自动更新节点映像。 如果使用此通道,默认情况下将禁用 Linux [无人参与升级]。 只要次要 Kubernetes 版本仍然受支持,节点映像升级就会适用于已弃用的补丁版本。

注意

使用群集自动升级时,请记住以下信息:

  • 群集自动升级仅更新到 Kubernetes 的 GA 版,不会更新到预览版。

  • 使用 AKS 可以在不指定确切修补程序版本的情况下创建群集。 在不指定修补程序的情况下创建群集时,群集将运行次要版本的最新 GA 修补程序。 若要了解详细信息,请参阅 AKS 支持窗口

  • 自动升级要求群集的 Kubernetes 版本在 AKS 支持时段内,即使使用的是 node-image 通道。

  • 如果你在使用预览版 API 11-02-preview 或更高版本,并且选择了 node-image 群集自动升级通道,则节点映像自动升级通道会自动设为 NodeImage

  • 每个群集只能与单个自动升级通道相关联。 这是因为指定的通道决定了在群集上运行的 Kubernetes 版本。

将群集自动升级与新的 AKS 群集配合使用

  • 在使用 az aks create 命令和 auto-upgrade-channel 参数创建新群集时设置自动升级通道。

    az aks create --resource-group myResourceGroup --name myAKSCluster --auto-upgrade-channel stable --generate-ssh-keys
    

将群集自动升级与现有的 AKS 群集配合使用

  • 使用带 auto-upgrade-channel 参数的 az aks update 命令在现有群集上设置自动升级通道。

    az aks update --resource-group myResourceGroup --name myAKSCluster --auto-upgrade-channel stable
    

Azure 门户中的自动升级

如果使用 Azure 门户,可以通过在“设置”>“群集配置”边栏选项卡下选择“升级版本”找到自动升级设置。 默认选择 Patch 通道。

The screenshot of the upgrade blade for an AKS cluster in the Azure portal. The automatic upgrade field shows 'patch' selected, and several APIs deprecated between the selected Kubernetes version and the cluster's current version are described.

Azure 门户还突出显示了当前版本与要迁移到的最新可用版本之间已弃用的所有 API。 有关详细信息,请参阅 Kubernetes API 移除和弃用过程

将自动升级与计划内维护结合使用

如果同时使用计划内维护和群集自动升级,则升级将在指定的维护时段内开始。

注意

为确保正常运行,请使用 4 小时或更长时间的维护时段。

有关计划内维护的详细信息,请参阅使用计划内维护为 Azure Kubernetes 服务 (AKS) 群集安排维护时段

群集自动升级的最佳做法

使用以下最佳做法帮助在使用自动升级时最大限度地提高成功率:

  • 若要确保群集始终运行受支持的版本(即处于 N-2 规则内),请选择 stablerapid 通道。
  • 如果你想尽快获得最新补丁,请使用 patch 通道。 如果你希望代理池始终运行最新的节点映像,那么 node-image 通道非常适合。
  • 若要在使用不同的群集升级通道时自动升级节点映像,请考虑使用节点映像自动升级NodeImage 通道。
  • 遵循操作员最佳做法
  • 遵循 PDB 最佳做法
  • 有关升级的故障排除信息,请参阅 AKS 故障排除文档