你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
AKS 提供了多个专用于及时节点级 OS 安全更新的自动升级通道。 此通道不同于群集级别的 Kubernetes 版本升级并将取代后者。
Tip
如果你使用的是 AKS Automatic,节点 OS 升级已预先配置为使用 NodeImage 通道,并以每周一次的频率应用安全修复和错误修复。 无需进行配置。 对于具有自定义虚拟网络的 AKS 自动群集,可以根据需要调整维护时段。 若要了解详细信息,请参阅什么是Azure Kubernetes 服务 (AKS)自动?对于 AKS 标准群集,请继续阅读以选择最符合要求的通道。
重要
从 2025 年 11 月 30 日开始,Azure Kubernetes 服务(AKS)不再支持或提供 Azure Linux 2.0 安全更新。 Azure Linux 2.0 节点映像在 202512.06.0 版中被冻结。 从 2026 年 3 月 31 日开始,将删除节点映像,并且无法缩放节点池。 通过将 节点池升级到 受支持的 Kubernetes 版本或迁移到 osSku AzureLinux3,迁移到受支持的 Azure Linux 版本。 有关详细信息,请参阅 停用 GitHub 问题和Azure 更新停用公告。 若要随时了解公告和更新,请关注AKS 发行说明。
节点 OS 自动升级与群集自动升级之间的交互
节点级 OS 安全更新的发布快于 Kubernetes 补丁或次要版本更新。 节点 OS 自动升级通道授予你灵活性,并为节点级 OS 安全更新启用自定义策略。 然后,可以为群集级 Kubernetes 版本 自动升级选择单独的计划。
最好同时使用群集级 自动升级 和节点 OS 自动升级通道。 通过为群集自动升级通道应用两组单独的 - aksManagedAutoUpgradeSchedule,为节点操作系统自动升级通道使用 aksManagedNodeOSUpgradeSchedule,可以对计划进行微调。
节点操作系统映像升级通道
所选通道将决定升级的时间。 对节点 OS 自动升级通道进行更改时,这些更改最多需要 24 小时就会生效。
注意
- 节点 OS 映像自动升级不会影响群集的 Kubernetes 版本。
- 从 API 版本 2023-06-01 开始,任何新的 AKS 标准 群集的默认值为
NodeImage。 -
AKS 自动 群集默认使用
NodeImage通道。
导致重置映像的节点 OS 通道更改
以下节点 OS 通道切换将节点上触发重置映像:
| 源 | 目标 |
|---|---|
| 非托管 | 没有 |
| 未指定 | 非托管 |
| 安全补丁 | 非托管 |
| NodeImage | 非托管 |
| 没有 | 非托管 |
可用的节点 OS 升级通道
以下升级通道适用于 AKS 标准群集。 (AKS 自动群集默认使用 NodeImage 通道。
| Channel | 说明 | 特定于 OS 的行为 |
|---|---|---|
None |
节点不会自动应用安全更新。 这意味着你对安全更新全权负责。 | 空值 |
Unmanaged |
OS 内置修补基础结构会自动应用 OS 更新。 新分配的计算机最初没有安装补丁。 操作系统的基础结构会在某个时候对其进行修补。 | Ubuntu 和 Azure Linux(CPU 节点池)通过无人参与的升级/dnf 自动应用安全性修补程序,大约每天 06:00 UTC 左右一次。 Windows 不会自动应用安全修补程序,因此该选项的行为等效于 None。 需要使用 kured 等工具管理重新启动过程。
AKS 上使用 OS Guard 的 Azure Linux 不支持 Unmanaged。 |
SecurityPatch |
操作系统安全性修补程序,经过 AKS 测试、完全托管,并采用安全部署实践进行应用。 AKS 会定期使用映像维护程序中标记为“仅安全性”的修补程序来更新节点的虚拟硬盘 (VHD)。将安全修补程序应用于节点时,可能会出现中断。 然而,AKS 通过仅在必要时重镜像节点来限制中断,例如对于某些内核安全性包。 应用修补程序后,VHD 将更新,现有机器将升级到该 VHD,遵守维护时段和电涌设置。 如果 AKS 决定不需要重镜像节点,它会在不排出 Pod 的情况下实时修补节点,并且不执行 VHD 更新。 此选项会产生在节点资源组中托管 VHD 的额外成本。 如果使用此通道,默认情况下将禁用 Linux 无人参与升级。 | Azure Linux 在启用了 GPU 的 VM 上不支持此通道。
SecurityPatch 适用于已弃用的 Kubernetes 修补程序版本,只要次要的 Kubernetes 版本仍受支持。
Flatcar Container Linux for AKS 和 带 OS Guard 的 Azure Linux on AKS 不支持 SecurityPatch。 |
NodeImage |
AKS 每周用新修补的 VHD 更新节点,该 VHD 包含安全性修补程序和 Bug 修补程序。 在维护时段和电涌设置之后,新 VHD 的更新会中断。 选择此选项时不会产生额外的 VHD 成本。 如果使用此通道,默认情况下将禁用 Linux 无人参与升级。 只要群集的 Kubernetes 次要版本仍然受到支持,就可以进行节点镜像升级。 节点映像经过 AKS 测试、完全托管,并采用安全部署做法进行应用。 |
选择什么 - SecurityPatch 通道或 NodeImage 通道?
对于 AKS 自动群集
AKS 自动默认使用 NodeImage 通道。 此通道为生产工作负荷提供安全修复、bug 修复和可管理性的最佳平衡。 每周节奏与 AKS 最佳做法保持一致,并针对最佳群集性能进行了优化,无需手动干预。
无需配置 - 升级会自动在维护时段内进行。 如果要控制何时发生更新,则可以 调整维护时段 ,但通道选择是固定的。
为什么 AKS 的 NodeImage 是自动的?
- 包括安全修复和 bug 修复,以获得全面的稳定性
- 每周更新节奏使更新时间可预测
- 完全由 AKS 使用安全部署实践进行管理
- 没有额外的 VHD 托管成本
- 针对生产工作负载进行优化,并采用推荐的默认设置
适用于 AKS 标准群集
如果你使用的是 AKS 标准版,请根据下方的比较评估你的需求,以选择 SecurityPatch 或 NodeImage 通道。
在 SecurityPatch 或 NodeImage 通道之间进行选择时,有两个重要的考虑因素:
| 资产 | NodeImage 通道 | SecurityPatch 通道 | 推荐频道 |
|---|---|---|---|
Speed of shipping |
新 VHD 的生成、测试、发布和推出周期通常需要大约两周时间,并遵循安全部署实践。 尽管在 CVE 的情况下,可视具体情况加速推出。 通过 发布跟踪器可以监视新 VHD 到达一个区域的具体时间点。 | 即使采用安全部署做法,SecurityPatch 版本也相对较 NodeImage快。 SecurityPatch 在 Linux 环境中具有“实时修补”的优势,此时修补会导致选择性的“重置映像”,并且不会在每次应用修补程序时重置映像。 如果发生重镜像,则由维护时段控制。 |
SecurityPatch |
Bugfixes |
除了安全性修补程序外,还包含 Bug 修补程序。 | 严格来说,只携安全性修补程序。 | NodeImage |
群集模式比较
下表汇总了按群集模式进行的节点 OS 自动升级配置:
| 方面 | AKS 自动化 | AKS 标准版 |
|---|---|---|
| 默认通道 | NodeImage (预配置) | 需要手动选择 |
| 更新节奏 | 每周(固定) | 根据您选择的渠道 |
| 所需的配置 | 无 - 自动更新 | 是 - 选择频道和计划 |
| 包含错误修复 | 是的 | 仅当已选择 NodeImage 通道时 |
| 推荐用于 | 大多数生产工作负荷 | 自定义要求或特定约束 |
| 维护时段管理 | Optional | 强烈推荐 |
在新群集上设置节点 OS 自动升级通道
注意
如果要创建 AKS 自动群集,请跳过这些步骤。 NodeImage 通道已预配置。 这些步骤仅适用于 AKS 标准群集。
使用带参数的 az aks create 命令 --node-os-upgrade-channel 在新群集上设置节点 OS 自动升级通道。 以下示例将节点 OS 自动升级通道设置为 SecurityPatch。
export RANDOM_SUFFIX=$(openssl rand -hex 3)
export RESOURCE_GROUP="myResourceGroup$RANDOM_SUFFIX"
export AKS_CLUSTER="myAKSCluster$RANDOM_SUFFIX"
az aks create \
--resource-group $RESOURCE_GROUP \
--name $AKS_CLUSTER \
--node-os-upgrade-channel SecurityPatch \
--generate-ssh-keys
在现有群集上设置节点 OS 自动升级通道
注意
如果使用 AKS 自动群集,则无法更改节点 OS 自动升级通道 - 它已预配置使用 NodeImage。 这些步骤仅适用于 AKS 标准群集。 如果需要,可以调整 AKS 自动群集的维护时段。
使用带参数的 az aks update 命令 --node-os-upgrade-channel 在现有群集上设置节点 OS 自动升级通道。 以下示例将节点 OS 自动升级通道设置为 SecurityPatch。
az aks update --resource-group $RESOURCE_GROUP --name $AKS_CLUSTER --node-os-upgrade-channel SecurityPatch
结果:
{
"autoUpgradeProfile": {
"nodeOsUpgradeChannel": "SecurityPatch"
}
}
调整 AKS 自动群集的维护时段
注意
AKS 自动群集使用预配置的 NodeImage 通道,无法更改此选择。 但是,可以通过配置维护时段来调整升级的时间。
使用带有 az aks update 参数和 --node-os-upgrade-channel NodeImage 选项的 --schedule-config 命令,为节点操作系统自动升级设置维护时间窗口:
az aks update \
--resource-group $RESOURCE_GROUP \
--name $AKS_CLUSTER \
--node-os-upgrade-channel NodeImage \
--schedule-config "scheduled-maintenance-window=true" \
--maintenance-window "frequency=Weekly,day-of-week=Sunday,utc-offset=+00:00,duration-hours=4,start-hour=2"
按渠道更新所有权和节奏
默认节奏意味着没有应用计划内维护时段。
| Channel | 更新所有权 | 默认节奏 |
|---|---|---|
Unmanaged |
OS 驱动的安全更新。 AKS 无法控制这些更新。 | 对于 Ubuntu 和 Azure Linux,在每晚大约凌晨 6 点 (UTC)。 对于 Windows,每月一次。 |
SecurityPatch |
经 AKS 测试、完全托管,并采用安全部署做法进行应用。 有关详细信息,请参阅 Azure 上 Canonical 工作负载增强的安全性和复原能力。 | 通常比每周快,AKS 决定了节奏。 |
NodeImage |
经 AKS 测试、完全托管,并采用安全部署做法进行应用。 有关发布的实时详细信息,请查看发布跟踪器中的 AKS 节点映像 | 每周。 |
注意
虽然 Windows 安全更新每月发布,但使用该 Unmanaged 通道不会自动将这些更新应用到 Windows 节点。 如果选择 Unmanaged 通道,则需要管理 Windows 节点的重启过程。
节点操作系统自动升级通道的已知限制
- 目前,将 群集自动升级通道 设置为
node-image时,它还会自动将节点 OS 自动升级通道设置为NodeImage。 群集的自动升级通道为node-image时,您无法更改节点操作系统的自动升级通道值。 若要设置节点 OS 自动升级通道的值,请检查 群集自动升级通道 的值不为node-image。 - Windows OS 节点池不支持
SecurityPatch通道。 -
SecurityPatch通道与要求使用denyeffect 要求客户管理的密钥 (CMK) 进行 OS 磁盘加密的 Azure Policy 不兼容。 应用安全补丁期间,AKS 会在节点资源组 (MC_) 中临时创建一个虚拟机规模集 (VMSS)(名称以前缀copy-开头),而此类策略不允许这样做,因此升级会因RequestDisallowedByPolicy错误而失败。SecurityPatch在节点池上使用客户管理的密钥仍然受支持;冲突仅存在于deny-effect 策略中。 如果需要 CMK OS 磁盘加密的组织范围deny策略,请改用通道NodeImage。
注意
对于 SecurityPatch 通道,请使用 CLI 2.61.0 或更高版本。
节点操作系统计划内维护时段
节点操作系统自动升级的计划维护从指定的维护时段开始。
注意
为确保正常运行,请使用 4 小时或更长时间的维护时段。
有关计划内维护的详细信息,请参阅使用计划内维护为 Azure Kubernetes 服务 (AKS) 群集安排维护时段。
节点操作系统自动升级常见问题解答
如何在群集上检查当前 nodeOsUpgradeChannel 值?
请运行 az aks show 命令并检查“autoUpgradeProfile”,以确定 nodeOsUpgradeChannel 设置为什么值:
az aks show --resource-group $RESOURCE_GROUP --name $AKS_CLUSTER --query "autoUpgradeProfile"
结果:
{
"nodeOsUpgradeChannel": "SecurityPatch"
}
对于 AKS Automatic,节点 OS 自动升级的配置是否不同?
Yes. 默认情况下,AKS 自动群集已预配置为使用 NodeImage 通道 - 无需配置任何内容。 此配置提供:
- 每周的安全修复和错误修复
- 使用安全部署做法自动重置映像
- 维护时段控制(可选)
- 针对大多数工作负荷优化的生产就绪默认值
- 没有额外的 VHD 托管成本
AKS 标准群集要求根据特定需求选择通道。 若要从 AKS 标准版迁移到 AKS 自动版并从这些预配置默认值中受益,请参阅“什么是自动Azure Kubernetes 服务 (AKS)?
是否可以更改 AKS 自动群集上的节点 OS 自动升级通道?
编号 AKS 自动群集使用 NodeImage 通道,无法更改此通道。 如果需要其他通道,请使用 AKS 标准群集。 但是,可以调整维护时段,以控制 AKS 自动群集上何时发生升级。
如何监视节点 OS 自动升级的状态?
要查看节点 OS 自动升级的状态,请在群集上查找活动日志。 还可查找升级 AKS 群集中所述的特定升级相关事件。 AKS 还会发出与升级相关的事件网格事件。 要了解详细信息,请参阅充当事件网格源的 AKS。
我可以在群集自动升级通道设置为 node-image 时,更改节点 OS 自动升级通道值吗?
编号 目前,将 群集自动升级通道 设置为 node-image时,它还会自动将节点 OS 自动升级通道设置为 NodeImage。 群集的自动升级通道为 node-image 时,您无法更改节点操作系统的自动升级通道值。 若要更改节点 OS 自动升级通道值,请确保 群集自动升级通道 不是 node-image。
为什么建议 SecurityPatch 通过 Unmanaged 通道使用?
在 Unmanaged 通道上,AKS 无法控制如何以及何时交付安全修补程序。 通过 SecurityPatch,安全修补程序已经过全面测试,并遵循安全部署做法。
SecurityPatch 也遵循维护时段。 有关详细信息,请参阅 Azure 上 Canonical 工作负载增强的安全性和复原能力。
SecurityPatch 是否总是导致节点重镜像?
AKS 仅在必要时限制重新生成映像,例如某些可能需要重新生成映像以完全应用的内核包。
SecurityPatch 旨在尽可能减少中断。 如果 AKS 判定无需重置节点的映像,它将在不排出 Pod 的情况下实时修补节点,并且在此类情况下不会执行 VHD 更新。
为什么 SecurityPatch 通道需要访问 snapshot.ubuntu.com 终结点?
通过 SecurityPatch 通道,Linux 群集节点必须从 ubuntu-snapshots-on-azure-ensuring-predictability-and-consistency-in-cloud-deployments 中描述的 ubuntu 快照服务下载所需的安全修补程序和更新。
如何知道节点上是否应用了 SecurityPatch 或 NodeImage 升级?
kubectl get nodes --show-labels运行以下命令,列出群集中的节点及其标签。
在返回的标签中,你应该看到类似于以下输出的行:
kubernetes.azure.com/node-image-version=AKSUbuntu-2204gen2containerd-202410.27.0-2024.12.01
此处,基本节点映像版本为 AKSUbuntu-2204gen2containerd-202410.27.0。 如果适用,通常遵循安全修补程序版本。 在前面的示例中,它是 2024.12.01。
同样的详细信息也会在 Azure 门户的节点标签视图下出现:
相关内容
有关升级最佳做法和其他注意事项的详细讨论,请参阅 AKS 补丁和升级指导。
若要详细了解 AKS Automatic 的预配置设置和生产就绪默认值,请参阅“什么是自动Azure Kubernetes 服务 (AKS)?