本文概述了 Azure Kubernetes 服务(AKS)中节点自动预配(NAP)的节点映像更新,包括工作原理、建议的维护时段和入门示例。
节点映像更新如何适用于节点自动预配节点?
默认情况下,当新的映像版本可用时,NAP 节点池虚拟机(VM)会自动更新。 可以配置 AKS 管理的节点操作系统(OS)升级计划维护时间窗 ,以控制何时选取新映像并将其应用于 NAP 节点,或使用 Karpenter Node Disruption Budgets 和 Pod Disruption Budgets 来控制升级期间发生中断的时间和方式。
注释
如果现有节点映像版本超过 90 天,NAP 会强制选取最新的映像版本。 这会绕过任何现有的维护时段。
NAP 节点操作系统升级的维护时段
可以将 AKS 计划内维护功能 与 节点 OS 自动升级通道 配合使用来配置 aksManagedNodeOSUpgradeSchedule 维护时段,该时段控制何时执行指定的节点 OS 自动升级通道计划节点 OS 安全修补。
节点操作系统升级维护窗口的行为和注意事项
为 NAP 配置节点 OS 升级维护时段时,请记住以下信息:
- 维护
aksManagedNodeOSUpgradeSchedule配置确定 NAP 选取新映像的时段。 此配置不一定确定现有节点何时中断。 - 升级机制和决策标准特定于 NAP/Karpenter,并由 NAP 的偏移逻辑进行评估。 NAP 尊重 Karpenter 节点的中断预算和 Pod 的中断预算。 有关偏移的详细信息,请参阅 Karpenter 偏移文档。
- 这些 NAP 升级决策独立于群集
NodeImage和SecurityPatch通道。 但是,aksManagedNodeOSUpgradeSchedule维护配置也会将其应用。 - 建议使用不少于 4 小时的维护时段以确保可靠运行。
- 如果没有维护配置设置,AKS 可能会使用备用计划来选取新映像,这可能导致在不期望的时间选取映像。 可以通过定义显式
aksManagedNodeOSUpgradeSchedule来避免新映像和升级的意外时机。 - 在创建或更新维护配置与计划开始时间之间至少允许 30 分钟,以确保 AKS 有时间协调新配置。
NAP 托管节点的建议计划模式
建议对 NAP 托管节点使用以下计划模式:
- 每周节奏:建议用于定期节点映像推出(例如:每周星期日)。
创建节点 OS 维护计划示例
以下部分介绍如何使用 Azure CLI 和 JSON 配置文件为 NAP 托管节点创建每周维护时段,以及如何更新、查看、列出和删除维护配置。
创建维护配置
创建一个名为
nodeosMaintenance.json的 JSON 文件,其中包含每周的维护时段(例如:星期日 01:00 UTC,持续 4 小时)。{ "properties": { "maintenanceWindow": { "durationHours": 4, "schedule": { "weekly": { "intervalWeeks": 1, "dayOfWeek": "Sunday" } }, "startDate": "2025-01-01", "startTime": "01:00", "utcOffset": "+00:00" } } }使用
az aks maintenanceconfiguration add命令将维护配置添加到群集。az aks maintenanceconfiguration add \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --name aksManagedNodeOSUpgradeSchedule \ --config-file ./nodeosMaintenance.json
更新、查看、列出或删除维护配置
可以使用以下命令更新、查看、列出或删除 NAP 托管节点的维护配置:
通过修改 JSON 文件,然后运行
az aks maintenanceconfiguration update命令来更新维护配置。az aks maintenanceconfiguration update \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --name aksManagedNodeOSUpgradeSchedule \ --config-file ./nodeosMaintenance.json使用
az aks maintenanceconfiguration show命令查看维护配置的详细信息。az aks maintenanceconfiguration show \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --name aksManagedNodeOSUpgradeSchedule使用
az aks maintenanceconfiguration list命令列出群集的所有维护配置。az aks maintenanceconfiguration list \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME使用
az aks maintenanceconfiguration delete命令删除维护配置。az aks maintenanceconfiguration delete \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --name aksManagedNodeOSUpgradeSchedule
有关完整的详细信息、示例和高级方案,请参阅 使用计划维护为 AKS 群集安排维护时段。
Karpenter 节点中断预算和 NAP 的 Pod 中断预算
有关为 NAP 配置 Karpenter 节点中断预算和 Pod 中断预算的详细信息,请参阅官方 Karpenter 文档中的以下资源:
后续步骤
有关 AKS 中的节点自动预配的详细信息,请参阅以下文章: