自动升级 Azure Kubernetes 服务群集节点 OS 映像

AKS 现在支持节点 OS 自动升级通道(专用于控制节点级 OS 安全更新的独占通道)。 此通道不能用于群集级别 Kubernetes 版本升级。

节点 OS 自动升级如何与群集自动升级配合使用?

节点级 OS 安全更新的发布快于 Kubernetes 补丁或次要版本更新。 节点 OS 自动升级通道可为你提供灵活性,并为节点级 OS 安全更新启用自定义策略。 然后,可以为群集级 Kubernetes 版本自动升级选择单独的计划。 强烈建议同时使用群集级自动升级和节点 OS 自动升级通道。 可通过应用两组单独的维护时段来微调计划 - 对群集自动升级通道应用 aksManagedAutoUpgradeSchedule,对节点 OS 自动升级通道应用 aksManagedNodeOSUpgradeSchedule

使用节点 OS 自动升级

所选通道将决定升级的时间。 对节点 OS 自动升级通道进行更改时,这些更改最多需要 24 小时就会生效。

注意

节点级 OS 映像自动升级不会影响群集的 Kubernetes 版本。 它仅适用于支持版本中的群集。

有以下升级通道可用。 你可选择以下选项之一:

通道 说明 特定于 OS 的行为
None 节点不会自动应用安全更新。 这意味着你对安全更新全权负责。 空值
Unmanaged 系统将通过 OS 内置修补基础结构自动应用 OS 更新。 新分配的计算机最初处于未修补状态。 OS 的基础结构会在某个时候对其进行修补。 Ubuntu 和 Azure Linux(CPU 节点池)大约每天 06:00 UTC 左右通过无人参与升级/dnf 自动应用安全修补程序。 Windows 不会自动应用安全修补程序,因此该选项的行为等效于 None
SecurityPatch 此通道处于预览状态,要求启用功能标志 NodeOsUpgradeChannelPreview。 有关详细信息,请参阅先决条件部分。 AKS 定期使用映像维护程序中标记为“仅安全性”的修补程序更新节点的虚拟硬盘 (VHD)。将安全修补程序应用于节点时,可能会出现中断。 应用修补程序后,VHD 将会更新,现有计算机将升级到该 VHD,从而遵循维护时段和激增设置。 此选项会产生在节点资源组中托管 VHD 的额外成本。 如果使用此通道,默认情况下将禁用 Linux 无人参与升级 Azure Linux 在启用了 GPU 的 VM 上不支持此通道。 SecurityPatch 适用于已弃用的补丁版本,只要次要 Kubernetes 版本仍然受支持。
NodeImage AKS 将使用新修补的 VHD 来更新节点,其中包含每周一次的安全修复和 bug 修复。 在维护时段和激增设置之后,对新 VHD 的更新是中断性的。 选择此选项时不会产生额外的 VHD 成本。 如果使用此通道,默认情况下将禁用 Linux 无人参与升级。 节点映像升级适用于已弃用的修补程序版本,只要仍然支持次要 Kubernetes 版本即可。

若要在创建群集时设置节点 OS 自动升级通道,请使用 node-os-upgrade-channel 参数,类似于以下示例。

az aks create --resource-group myResourceGroup --name myAKSCluster --node-os-upgrade-channel SecurityPatch

若要在现有群集上设置节点 OS 自动升级通道,请更新 node-os-upgrade-channel 参数,类似于以下示例。

az aks update --resource-group myResourceGroup --name myAKSCluster --node-os-upgrade-channel SecurityPatch

更新所有权和节奏

默认节奏意味着没有应用计划内维护时段。

通道 更新所有权 默认节奏
Unmanaged OS 驱动的安全更新。 AKS 无法控制这些更新。 对于 Ubuntu 和 Azure Linux,在每晚大约凌晨 6 点 (UTC)。 对于 Windows,每月一次。
SecurityPatch AKS 每周。
NodeImage AKS 每周。

先决条件

“仅在使用 SecurityPatch 通道时,以下先决条件才适用。 如果不使用此通道,可以忽略这些要求。

  • 必须使用 API 版本 11-02-preview 或更高版本

  • 如果使用 Azure CLI,则必须安装 aks-preview CLI 扩展版本 0.5.127 或更高版本

  • 必须在订阅上启用 NodeOsUpgradeChannelPreview 功能标志

注册 "NodeOsUpgradeChannelPreview" 功能标志

使用 NodeOsUpgradeChannelPreview 命令注册 NodeOsUpgradeChannelPreview 功能标志,如以下示例所示:

az feature register --namespace "Microsoft.ContainerService" --name "NodeOsUpgradeChannelPreview"

状态显示为“已注册”需要几分钟时间。 使用 az feature show 命令验证注册状态:

az feature show --namespace "Microsoft.ContainerService" --name "NodeOsUpgradeChannelPreview"

当状态反映为“已注册”时,使用 az provider register 命令刷新 Microsoft.ContainerService 资源提供程序的注册:

az provider register --namespace Microsoft.ContainerService

限制

  • 目前,将群集自动升级通道设置为 node-image 时,它还会自动将节点 OS 自动升级通道设置为 NodeImage。 如果群集自动升级通道为 node-image,则无法更改节点 OS 自动升级通道值。 要设置节点 OS 自动升级通道值,请确保群集自动升级通道值不是 node-image

  • Windows OS 节点池不支持 SecurityPatch 通道。

注意

默认情况下,使用 06-01-2023 或更高版本的 API 创建的任何新群集都会将节点 OS 自动升级通道值设置为 NodeImage。 使用早于 06-01-2023 的 API 版本创建的任何现有群集都会默认将节点 OS 自动升级通道值设置为 None

节点 OS 自动升级与计划内维护

节点 OS 自动升级的计划内维护从指定的维护时段开始。

注意

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

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

常见问题

  • 如何在群集上检查当前 nodeOsUpgradeChannel 值?

请运行 az aks show 命令并检查“autoUpgradeProfile”,以确定将 nodeOsUpgradeChannel 设置为什么值:

az aks show --resource-group myResourceGroup --name myAKSCluster --query "autoUpgradeProfile"
  • 如何监视节点 OS 自动升级的状态?

要查看节点 OS 自动升级的状态,请在群集上查找活动日志。 还可查找升级 AKS 群集中所述的特定升级相关事件。

  • 如果群集自动升级通道设置为 node-image,是否可更改节点 OS 自动升级通道值?

不是。 目前,将群集自动升级通道设置为 node-image 时,它还会自动将节点 OS 自动升级通道设置为 NodeImage。 如果群集自动升级通道为 node-image,无法更改节点 OS 自动升级通道值。 为了能够更改节点 OS 自动升级通道值,请确保群集自动升级通道不是 node-image