本文介绍如何配置和管理节点中断策略,以控制Azure Kubernetes 服务 (AKS)群集中何时允许需要节点重置映像和触发节点重新部署的操作。
先决条件
- 查看 节点中断策略概述 ,了解 节点中断策略的工作原理 以及 节点中断策略涵盖的操作。
- 已安装并配置 Azure CLI 2.76.0 或更高版本。 若要查找 CLI 版本,请运行
az --version命令。 如果需要进行安装或升级,请参阅安装 Azure CLI。 - 现有的 AKS 群集,也可以创建配置了节点中断策略的新群集。
-
安装
aks-previewAzure CLI扩展并注册节点中断策略预览功能。
Important
AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:
安装 aks-preview Azure CLI 扩展
使用
aks-preview命令安装az extension add扩展。az extension add --name aks-preview使用
az extension update命令更新到扩展的最新版本。az extension update --name aks-preview
注册“节点中断策略”预览功能
使用 az feature register 命令注册节点中断策略预览功能。
az feature register --namespace “Microsoft.ContainerService“ --name ”NodeDisruptionProfile”
要过几分钟,状态才会显示为已注册。
在新群集上配置节点中断策略
使用 az aks create 命令创建新的 AKS 群集,并将 --node-disruption-policy 参数设置为以下策略配置之一,以配置节点中断策略:Allow(默认值)、AllowDuringMaintenanceWindow 或 Block。
随时允许中断操作(默认值)
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 3 \
--node-disruption-policy Allow \
--generate-ssh-keys
仅允许在维护时段内执行可能造成中断的操作
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 3 \
--node-disruption-policy AllowDuringMaintenanceWindow \
--generate-ssh-keys
Important
使用 AllowDuringMaintenanceWindow 时,请确保配置 aksManagedNodeOSUpgradeSchedule维护窗口。 否则,将无限期允许干扰性操作。 有关详细信息,请参阅使用计划内维护来计划和控制Azure Kubernetes 服务群集的升级。
禁止所有干扰性操作
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 3 \
--node-disruption-policy Block \
--generate-ssh-keys
更新现有群集上的节点中断策略
使用 az aks update 命令,将 --node-disruption-policy 参数设置为以下策略配置之一,以更新现有 AKS 群集的节点中断策略:Allow(默认值)、AllowDuringMaintenanceWindow 或 Block。
更改策略以在维护时段期间允许操作
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-disruption-policy AllowDuringMaintenanceWindow
更改策略以阻止所有中断性操作
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-disruption-policy Block
将策略改回为允许在任何时间进行操作
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-disruption-policy Allow
验证节点中断策略配置
使用 az aks show 命令验证节点中断策略配置。
az aks show \
--resource-group myResourceGroup \
--name myAKSCluster \
--query "nodeDisruptionProfile.nodeDisruptionPolicy" \
--output tsv
输出显示当前策略设置,例如 Allow, AllowDuringMaintenanceWindow或 Block。
处理被阻止的操作
当节点中断策略阻止中断操作时,可以 等待维护时段 或 暂时更改策略。
等待维护窗口
如果您使用 AllowDuringMaintenanceWindow,请将该操作安排在下一个维护窗口期间进行。 您可以使用 az aks maintenanceconfiguration list 命令查看已配置的维护时段。
az aks maintenanceconfiguration list \
--resource-group myResourceGroup \
--cluster-name myAKSCluster
暂时更改策略
使用
Allow命令将az aks update设为--node-disruption-policy,把策略更新为Allow。az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-disruption-policy Allow执行中断性操作。 以下示例使用
az aks update命令更新自定义 CA 证书:az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --custom-ca-trust-certificates <path-to-certificate-file>使用
az aks update命令还原原始策略。 以下示例还原--node-disruption-policy到Block:az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-disruption-policy Block
需要手动节点池升级的操作
节点中断策略 无法控制的 一些操作需要在进行任何配置更改后进行手动节点池升级。 这些操作包括:
- SSH 配置更改,例如更改 SSH 访问方法或更新 SSH 公钥。
- IMDS 限制更改,例如启用或禁用 IMDS 限制。
- 网络隔离群集的引导配置文件 ACR 名称变更。
- 出站类型更改,例如更改群集出口路由。
对于这些操作,在进行配置更改后,必须手动运行 az aks nodepool upgrade 命令。 例如:
az aks nodepool upgrade \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name <nodepool-name> \
--node-image-only
有关节点中断策略涵盖的操作的详细信息,请参阅 节点中断策略概述。
排查节点中断策略问题
操作被意外阻止
如果操作意外阻止,请使用以下步骤排查问题:
使用
az aks show命令检查当前策略设置。az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query "nodeDisruptionProfile.nodeDisruptionPolicy" \ --output tsv如果您使用
AllowDuringMaintenanceWindow,请使用az aks maintenanceconfiguration show命令来验证维护时段配置。az aks maintenanceconfiguration show \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name aksManagedNodeOSUpgradeSchedule检查当前时间是否在维护时段内。
未配置维护时段
如果将该策略设为 AllowDuringMaintenanceWindow,但未配置维护窗口,则 允许执行所有中断性操作。
使用 az aks maintenanceconfiguration add 命令配置维护窗口。
az aks maintenanceconfiguration add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name aksManagedNodeOSUpgradeSchedule \
--schedule-type Weekly \
--day-of-week Sunday \
--interval-weeks 1 \
--duration 4 \
--start-hour 2