在管理和维护 AKS 群集时,某些配置更改需要对节点重新制作映像。 此重置映像操作触发重新创建节点的滚动更新。 在重镜像操作期间,AKS 会将节点设为不可调度(防止将新的 Pod 调度到该节点),驱逐现有 Pod(同时遵循 Pod 中断预算,并将这些 Pod 重新调度到其他可用节点上),然后使用更新后的配置对节点执行重镜像。 此过程是对节点进行完整重建,而不是重启——底层 VM 会使用新的操作系统映像重新创建镜像。 虽然正确配置的永久性卷(使用Azure磁盘、Azure 文件存储或其他外部存储)不会受到影响,但节点本地临时存储(如 EmptyDir 卷或本地路径)中存储的任何数据都会永久丢失。 这些操作是应用重要更新所必需的,但它们可能会中断正在运行的工作负荷并影响应用程序可用性。 通过节点中断策略,可以精细控制允许这些中断性操作何时继续,从而帮助你平衡更新与操作稳定性的需求。
Important
AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:
什么是节点中断策略?
节点中断策略是一种群集级配置,用于控制何时可以执行需要节点重新映像和重新部署的操作。 它充当控制门,允许你:
- 将中断性操作与维护时段保持一致。
- 在关键业务期间阻止配置更改,同时仍允许节点映像升级和安全修补程序继续。
- 在高流量事件期间保持可预测的群集行为。
该策略适用于由用户发起且需要重新创建节点的配置更改,例如更新自定义证书颁发机构(CA)信任证书、修改安全配置文件设置,或更改节点操作系统配置。
注释
重要的是,该策略不会阻止节点映像版本更新(包括 SecurityPatch 和 NodeImage 升级通道)或 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 终结点。
-
引导配置文件更改:更改引导配置文件,例如将
artifactSource在Direct和Cache之间切换。 - 出站类型变更:修改群集的出站连接类型(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。 - 传达策略更改:确保团队了解当前策略,并知道何时可能会阻止操作。
- 适当规划维护时段:调整维护时段的大小以适应需要执行的操作。
- 测试策略行为:在将策略设置应用到生产群集之前,先验证非生产环境中的策略设置。
- 监视阻止的操作:跟踪何时阻止操作以优化维护计划。
相关内容
- 了解如何 配置节点中断策略。
- 了解 AKS 中的计划内维护。