AKS 群集生命周期的一部分涉及到定期升级到最新的 Kubernetes 版本。 请务必应用最新的安全版本或升级以获取最新功能。 在了解自动升级之前,请确保了解 AKS 群集升级基础知识。
注意
任何升级操作,无论是手动执行还是自动执行,都会升级节点映像版本(如果该版本还不是最新版本)。 最新版本取决于完整的 AKS 版本,可通过访问 AKS 发布跟踪器 来确定。
自动升级首先升级控制平面,然后逐个升级代理池。
为何使用群集自动升级
群集自动升级提供了一种“一次设置,终生无忧”的机制,可产生有形的时间和运营成本优势。 无需停止工作负载、重新部署工作负载或创建新的 AKS 群集。 通过启用自动升级,可以确保群集是最新的,不会错过 AKS 和上游 Kubernetes 的最新功能或修补程序。
AKS 执行严格的可支持性版本控制窗口。 使用正确选择的自动升级通道,可以避免群集陷入不受支持的版本。 有关 AKS 支持窗口的详细信息,请参阅版本别名。
客户发起的与 AKS 发起的群集自动升级
可以使用以下指南指定群集自动升级细节。 升级按指定频率进行。建议你进行升级,以便继续使用受支持的 Kubernetes 版本。
- AKS 会自动升级处于 N-3 版本的群集(其中 N 是 AKS 当前支持的最新正式发布版(GA)次要版本);对于即将落到 N-4 的这些群集,AKS 会改为将其升级到 N-2。 此操作可确保群集保留在 AKS 支持窗口中。 有关详细信息,请参阅 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(旧版) |
自动将节点映像升级到可用的最新版本。 | Microsoft经常为映像节点(每周)提供修补程序和新映像,但除非执行节点映像升级,否则正在运行的节点不会获得新映像。 当有新版本可用时,打开节点映像通道会自动更新节点映像。 如果使用此渠道,Linux的[无人参与升级]会默认为禁用。 只要次要 Kubernetes 版本仍然受支持,节点映像升级就会适用于已弃用的补丁版本。 不再建议使用此通道,未来将弃用此通道。 有关可以自动升级节点映像的选项,请参阅NodeImage节点映像自动升级中的通道。 |
注意
使用群集自动升级时,请记住以下信息:
群集自动升级仅更新 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 <resource-group-name> \
--name <cluster-name> \
--auto-upgrade-channel stable \
--generate-ssh-keys
使用群集自动升级功能对现有 AKS 群集进行升级
使用具有参数的 az aks update 命令 auto-upgrade-channel 在现有群集上设置自动升级通道。
az aks update \
--resource-group <resource-group-name> \
--name <cluster-name> \
--auto-upgrade-channel stable
结果:
{
"id": "/subscriptions/aaaa6a6a-bb7b-cc8c-dd9d-eeeeee0e0e0e/resourceGroups/myResourceGroupabc123/providers/Microsoft.ContainerService/managedClusters/myAKSCluster",
"properties": {
"autoUpgradeChannel": "stable",
"provisioningState": "Succeeded"
}
}
将群集自动升级与计划内维护结合使用
如果使用计划内维护和群集自动升级,升级将在指定的维护时段内启动。
注意
为确保正常运行,请使用 4 小时或更长时间的维护时段。
有关如何使用计划内维护设置维护时段的详细信息,请参阅使用计划内维护为 Azure Kubernetes 服务 (AKS) 群集安排维护时段。
群集自动升级的最佳做法
使用以下最佳做法来帮助在使用自动升级时最大程度地提高成功率:
- 若要确保群集始终处于受支持的版本(例如 N-2 规则中),请选择
stable或rapid通道。 (注意:AKS 自动群集默认使用stable。 - 如果想要尽快获取最新的修补程序,请使用通道
patch。 - 若要在使用其他群集升级通道时自动升级节点映像,请考虑使用 节点映像自动升级
NodeImage通道。 - 遵循操作员最佳做法。
- 遵循 PodDisruptionBudget (PDB) 最佳做法。
- 有关升级的故障排除信息,请参阅 AKS 故障排除文档。