你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

自动升级节点 OS 映像

AKS 提供了多个专用于实现及时节点级 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。 需要使用 kured 之类的工具来管理重启过程。
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 命令在现有群集上设置节点 OS 自动升级通道。 以下示例将节点 OS 自动升级通道设置为 SecurityPatch

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

在现有群集上设置节点 OS 自动升级通道

  • 使用带 --node-os-upgrade-channel 参数的 az aks update 命令在现有群集上设置节点 OS 自动升级通道。 以下示例将节点 OS 自动升级通道设置为 SecurityPatch

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

更新所有权和日程安排

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

通道 更新所有权 默认节奏
Unmanaged OS 驱动的安全更新。 AKS 无法控制这些更新。 对于 Ubuntu 和 Azure Linux,在每晚大约凌晨 6 点 (UTC)。 对于 Windows,每月一次。
SecurityPatch 经过 AKS 测试、完全托管并应用安全部署做法。 有关详细信息,请参阅 Azure 上 Canonical 工作负载增强的安全性和复原能力 每周。
NodeImage AKS 每周。

注意

虽然 Windows 安全更新每月发布一次,但使用 Unmanaged 通道不会自动将这些更新应用到 Windows 节点。 如果选择 Unmanaged 通道,则需要使用 kured 之类的工具来管理重启过程,以便正确应用安全补丁。

安全修补程序通道要求

若要使用 SecurityPatch 通道,群集必须支持这些要求:

  • 必须使用 API 版本 11-02-preview 或更高版本
  • 如果使用 Azure CLI,则必须安装 aks-preview CLI 扩展版本 0.5.166 或更高版本
  • 必须在订阅上启用 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

节点通道已知 bug

  • 目前,将群集自动升级通道设置为 node-image 时,它还会自动将节点 OS 自动升级通道设置为 NodeImage。 如果群集自动升级通道为 node-image,则无法更改节点 OS 自动升级通道值。 若要设置节点 OS 自动升级通道值,请检查群集自动升级通道的值是否并非 node-image

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

注意

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

节点 OS 计划内维护时段

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

注意

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

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

节点 OS 自动升级常见问题解答

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

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

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

要查看节点 OS 自动升级的状态,请在群集上查找活动日志。 还可查找升级 AKS 群集中所述的特定升级相关事件。 AKS 还会发出与升级相关的事件网格事件。 若要了解详细信息,请参阅充当事件网格源的 AKS

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

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

  • 为什么建议 SecurityPatch 通过 Unmanaged 通道使用?

Unmanaged 通道上,AKS 无法控制如何以及何时交付安全修补程序。 通过 SecurityPatch,安全修补程序已经过全面测试,并遵循安全部署做法。 SecurityPatch 还遵循维护时段。 更多详细信息,请参阅 Azure 上 Canonical 工作负载增强的安全性和复原能力

  • 如何知道节点上是否应用了 SecurityPatchNodeImage 升级?

运行以下命令以获取节点标签:

kubectl get nodes --show-labels

在返回的标签中,你应该看到类似于以下输出的行:

kubernetes.azure.com/node-image-version=AKSUbuntu-2204gen2containerd-202311.07.0

此处,基本节点映像版本为 AKSUbuntu-2204gen2containerd。 如果适用,通常遵循安全修补程序版本。 在上面的示例中,它是 202311.07.0

同样的详细信息也会在 Azure 门户的节点标签视图下出现:

Azure 门户中 AKS 群集的节点页的屏幕截图。节点映像版本的标签清楚地显示了基本节点映像和最新应用的安全修补程序日期。

后续步骤

有关升级最佳做法和其他注意事项的详细讨论,请参阅 AKS 补丁和升级指南