Azure Kubernetes 服务 (AKS) 中的节点中断策略(预览版)

在管理和维护 AKS 群集时,某些配置更改需要对节点重新制作映像。 此重置映像操作触发重新创建节点的滚动更新。 在重镜像操作期间,AKS 会将节点设为不可调度(防止将新的 Pod 调度到该节点),驱逐现有 Pod(同时遵循 Pod 中断预算,并将这些 Pod 重新调度到其他可用节点上),然后使用更新后的配置对节点执行重镜像。 此过程是对节点进行完整重建,而不是重启——底层 VM 会使用新的操作系统映像重新创建镜像。 虽然正确配置的永久性卷(使用Azure磁盘、Azure 文件存储或其他外部存储)不会受到影响,但节点本地临时存储(如 EmptyDir 卷或本地路径)中存储的任何数据都会永久丢失。 这些操作是应用重要更新所必需的,但它们可能会中断正在运行的工作负荷并影响应用程序可用性。 通过节点中断策略,可以精细控制允许这些中断性操作何时继续,从而帮助你平衡更新与操作稳定性的需求。

Important

AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:

什么是节点中断策略?

节点中断策略是一种群集级配置,用于控制何时可以执行需要节点重新映像和重新部署的操作。 它充当控制门,允许你:

  • 将中断性操作与维护时段保持一致。
  • 在关键业务期间阻止配置更改,同时仍允许节点映像升级和安全修补程序继续。
  • 在高流量事件期间保持可预测的群集行为。

该策略适用于由用户发起且需要重新创建节点的配置更改,例如更新自定义证书颁发机构(CA)信任证书、修改安全配置文件设置,或更改节点操作系统配置。

注释

重要的是,该策略不会阻止节点映像版本更新(包括 SecurityPatchNodeImage 升级通道)或 Kubernetes 版本升级。 即使策略设置为 Block,这些操作仍会按照已配置的计划继续执行。 有关详细信息,请参阅 不受节点中断策略控制的升级操作。 此外,某些恢复操作不受此策略控制,以确保群集运行状况和可用性。 有关详细信息,请参阅 不受节点中断策略控制的恢复操作

节点中断策略的工作原理

可以在群集级别通过 nodeDisruptionProfile 属性配置节点中断策略。 尝试执行需要节点重置映像的操作时,AKS 会检查当前策略设置:

  • 策略评估:AKS 根据当前策略评估是否允许该操作。
  • 维护时段检查 (如果适用):如果使用 AllowDuringMaintenanceWindow,AKS 将验证当前时间是否在配置的维护时段内。
  • 操作执行或阻止:如果允许或被拒绝,则节点中断操作会继续,并出现错误消息(如果被阻止)。

策略选项

节点中断策略支持三种策略配置:

Policy Description 用例
Allow 允许需要对节点重新制作映像的操作随时执行。 这是默认行为。 当想要快速确定应用更新的优先级并可以容忍工作负荷中断时使用。
AllowDuringMaintenanceWindow 阻止需要重新映像节点的操作,除非这些操作在 aksManagedNodeOSUpgradeSchedule 维护时段内执行。 当想要将中断限制为与运营计划一致的特定维护时段时使用。
Block 阻止所有需要节点重新映像的操作。 如果需要防止任何节点中断,例如在关键业务周期或高流量事件期间,请使用。

注释

使用 AllowDuringMaintenanceWindow时,必须配置 aksManagedNodeOSUpgradeSchedule 维护时段。 有关设置维护时段的详细信息,请参阅使用计划内维护来计划和控制Azure Kubernetes 服务群集的升级。 如果未配置维护时段,则允许节点中断性操作。

Considerations

使用节点中断策略时,请记住以下注意事项:

  • 范围:策略适用于需要节点重置映像的用户启动的操作,不适用于 AKS 发起的系统维护。 有关详细信息,请参阅 不受节点中断策略控制的恢复操作
  • 阻止的操作:当中断性操作被阻止时,API 调用将失败并显示错误消息。 你需要要么更改策略,要么等待维护窗口。
  • 紧急维护:Azure保留执行紧急或关键维护操作的权利,而不考虑策略设置。
  • 更新规划:设置策略以防止 Block 某些群集更新。 有关详细信息,请参阅 节点中断策略涵盖的操作。 请相应地进行计划,以确保在需要时应用必要的更新。
  • 维护时段依赖项:策略 AllowDuringMaintenanceWindow 需要 aksManagedNodeOSUpgradeSchedule 配置维护时段。 有关详细信息,请参阅使用计划内维护来计划和控制Azure Kubernetes 服务群集的升级

节点中断策略涵盖的操作

群集级操作

网络策略启用和Azure CNI 覆盖升级

若要安装所需的网络组件并配置保护和管理 Pod 到 Pod 通信的网络规则,需要重新映像节点。

下表概述了 触发重新映像的网络策略升级

无(无网络策略) Azure网络策略
无(无网络策略) Calico
Azure CNI Azure CNI 网络覆盖层
Azure网络策略 无(无网络策略)
Calico 无(无网络策略)

注释

在已启用其中一种网络策略后,在 Azure 和 Calico 网络策略之间切换无需重新制作映像。

节点操作系统升级通道变更

每个通道使用不同的 OS 修补基础结构和配置,无法在正在运行的节点上 修改 这些基础结构和配置。

下表概述了会触发重新创建映像的节点操作系统升级通道变更

非 托管 None
未指定 非 托管
安全补丁 非 托管
NodeImage 非 托管
None 非 托管
未指定 非 托管
非 托管 安全补丁
非 托管 NodeImage

IPv6 双栈启用

为了支持双堆栈通信,节点需要 IPv4 和 IPv6 IP 配置和网络堆栈更新(如 nftables 规则)。

下表概述了 触发重新映像的 IP 配置和网络堆栈更新

仅限 IPv4 IPv4 + IPv6 (双堆栈)

Cilium 数据平面 变更

需要安装或删除在内核级别处理数据包处理的 eBPF 程序。

下表概述了 触发重置映像的 Cilium 数据平面更改

None Cilium
Cilium None

HTTP 代理 配置更新

所有节点组件(容器、kubelet、系统服务)都需要应用系统范围的更新代理配置。 更新 HTTP 代理配置时,AKS 会自动重置群集中的所有节点池的映像。

修改以下任何 HTTP 代理配置属性或执行以下任一操作时,节点中断策略 将触发重新映像

  • httpProxy:HTTP 连接的代理 URL
  • httpsProxy:HTTPS 连接的代理 URL
  • noProxy:要从代理中排除的目标列表
  • trustedCa:Base64 编码的替代 CA 证书
  • 在群集上启用 HTTP 代理(使用 --enable-http-proxy
  • 在群集上禁用 HTTP 代理(使用 --disable-http-proxy
  • 在以前禁用了 HTTP 代理的群集上重新启用 HTTP 代理

自定义 CA 证书 更新

必须在 OS 信任存储中安装新的 CA 证书,以影响内部服务和专用注册表的 TLS 验证。

添加、删除或更新自定义 CA 证书时,节点中断策略 会触发重新映像

Kubelet 身份变更

必须将新的标识凭据应用到节点配置。 这包括初始标识分配、标识更新和服务主体配置文件重置。

更新 kubelet 的托管标识或用户分配的托管标识时,节点中断策略 会触发重新映像

专用 DNS 区域更改

您必须更新 DNS 解析器设置,以便使用新的 DNS 区域解析专用 API 服务器端点。

在专用群集中修改专用 DNS 区域配置时,节点中断策略 会触发重新映像

eBPF 主机路由变更

需要安装或删除提供高性能数据包转发的 eBPF 程序(BpfVeth 加速模式)。

下表概述了 触发重置映像的 eBPF 主机路由更改

标准路由 已启用 eBPF 主机路由
已启用 eBPF 主机路由 标准路由

节点池级操作

这些操作仅影响进行更改的特定节点池。 它们在这些节点池中触发滚动重置映像:

本地 DNS 配置文件更新

需要在节点级别对 DNS 缓存守护程序和 DNS 转发规则应用更改。

修改 LocalDNS 配置文件配置时,节点中断策略 会触发重新映像

Trusted Launch 安全性更改

无法在正在运行的 VM 上更改 VM 固件配置和启动进程设置。 这些更改要求重新创建 VM。

下表概述了会触发重新创建映像的可信启动安全更改

Configuration
vTPM (虚拟受信任的平台模块) 已禁用 已启用
vTPM (虚拟受信任的平台模块) 已启用 已禁用
安全启动 已禁用 已启用
安全启动 已启用 已禁用

工件流式传输更改

您需要安装或删除制品流式传输组件,以便通过按需流式传输镜像层来加快容器镜像拉取速度。

下表概述了会触发重新映像的项目流式传输更改

已禁用 已启用
已启用 已禁用

Windows GMSA 配置文件更新(仅限Windows节点池)

需要应用新的 GMSA 设置、DNS 服务器配置和域加入凭据,以便在Windows节点上Active Directory集成。

当 GMSA 更改需要应用新节点配置时,节点中断策略会触发Windows节点池的重置映像

触发重新映像
GMSA 已禁用 GMSA 已启用 是的
已启用 GMSA(DNS 服务器/根域已设置或已更改) 已启用 GMSA,并使用更新后的 DNS 服务器或根域 是的
GMSA 已启用(DNS 服务器已设置) GMSA 已禁用 是的
已启用 GMSA (未设置 DNS 服务器) GMSA 已禁用 否(没有要应用的节点配置)

容量预留组 附件

您需要重新创建底层 VM,以便将其从容量预留组(CRG)的预留容量中进行分配。 现有节点并非基于 CRG 进行预配,因此 AKS 必须对节点池重新制作映像,才能将其与该预留关联。

将容量预留组关联到尚不包含容量预留组的现有节点池时,节点中断策略会触发重建映像

触发重新映像
未附加容量预留组 附加的容量预留组 是的

节点中断策略尚未涵盖的操作

以下配置更改需要对节点重新制作映像,但 尚未被节点中断策略涵盖。 将来的 Kubernetes 次要版本更新将涵盖这些更改,因为此更改引入了新行为。
进行这些配置更改后,必须手动运行az aks nodepool upgrade--node-image-only这些更改才能将更改应用到节点。

  • SSH 配置更改:更改 SSH 访问方法(禁用的 SSH、基于 Entra ID 的 SSH 或本地用户 SSH)或更新节点池上的 SSH 公钥。
  • IMDS 限制 更改:启用或禁用实例元数据服务(IMDS)限制以阻止 Pod 访问 IMDS 终结点。
  • 引导配置文件更改:更改引导配置文件,例如将 artifactSourceDirectCache 之间切换。
  • 出站类型变更:修改群集的出站连接类型(loadBalancer、userDefinedRouting、managedNATGateway 或 userAssignedNATGateway)。

未受节点中断策略控制的升级操作

节点中断策略 不会控制 以下升级操作。 无论策略设置如何,这些升级操作都会继续。 升级要么由客户发起,要么由 AKS 在计划维护时段内发起。 若要允许这些操作按计划进行,请有意地使其远离节点中断策略范围。 此外,如果节点中断策略涵盖的操作包含在升级的相同配置更改中,则节点中断策略不会控制这些操作。

  • 节点映像版本 更新:升级到新的节点 OS 映像版本(手动或通过自动升级通道)。 此操作是最常见的重置映像操作,包括安全修补程序、OS 更新和 AKS 节点映像版本。
  • Kubernetes 版本 升级:升级节点池上的 Kubernetes 版本,这会应用新的 Kubernetes 二进制文件、更新的 kubelet 配置和 OS 级更改。

未受节点中断策略控制的恢复操作

节点中断策略 不会控制 以下自动恢复操作。 无论策略设置如何,都可以执行这些操作,以确保群集运行状况和恢复。

  • 节点池配置回滚:当节点池更新操作由于配置或基础结构问题无效而失败时,AKS 会自动回滚到最后一个已知良好状态,并重置映像节点以还原配置。
  • 管理群集还原操作:Azure 支持工程师在事件解决期间执行管理群集还原时,将重新映像节点以确保控制平面状态和节点配置之间的一致性。
  • 节点标识凭据更新:AKS 定期更新节点标识凭据,确保安全性和符合性。 这些系统启动的更新会触发节点重置映像,以在所有节点池中应用新凭据。

与计划内维护集成

节点中断策略可与 AKS 计划内维护 时段无缝配合工作。 当您将策略设置为 AllowDuringMaintenanceWindow 时,中断性操作将与 aksManagedNodeOSUpgradeSchedule 维护时段保持一致,从而确保:

  • 更改仅在批准的时段内发生。
  • 相关操作与其他计划内维护工作相协调。
  • 团队知道何时发生中断。

此集成提供了一种全面的方法来管理群集更改,并最大程度地减少对正在运行的工作负荷的影响。

注释

使用 AllowDuringMaintenanceWindow时,必须配置 aksManagedNodeOSUpgradeSchedule 维护时段。 使用default维护窗口或aksManagedAutoUpgradeSchedule(集群自动升级)无法满足这一要求。 如果在未配置 AllowDuringMaintenanceWindow 窗口的情况下设置 aksManagedNodeOSUpgradeSchedule,则允许执行所有会造成中断的操作(因为该策略没有可用于限制这些操作的窗口)。 有关设置维护时段的详细信息,请参阅使用计划内维护来计划和控制Azure Kubernetes 服务群集的升级

最佳做法

实施节点中断策略时,请考虑以下建议:

  • AllowDuringMaintenanceWindow 用于生产环境:结合计划的维护窗口来控制生产环境中断发生的时间。
  • 在关键时段设置Block:在高流量事件、产品启动或事件响应期间暂时阻止中断操作。 不要无限期使用 Block 。 尽管 Block 适用于短期冻结(计划内事件、事件响应)。
  • 允许在非生产环境中灵活使用:在快速迭代比稳定性更重要的开发和测试环境中使用 Allow
  • 传达策略更改:确保团队了解当前策略,并知道何时可能会阻止操作。
  • 适当规划维护时段:调整维护时段的大小以适应需要执行的操作。
  • 测试策略行为:在将策略设置应用到生产群集之前,先验证非生产环境中的策略设置。
  • 监视阻止的操作:跟踪何时阻止操作以优化维护计划。