默认情况下,由手动操作或群集自动缩放程序执行的扩展操作需要分配和配置新节点,而缩小操作则删除节点。 通过缩减模式,可以决定是否在纵向缩减时删除或解除分配 Azure Kubernetes 服务 (AKS) 群集中的节点。
当 Azure VM 处于 Stopped (已解除分配)状态时,不会为 VM 计算资源付费。 但是,仍需要为附加到 VM 的任何 OS 和数据存储磁盘付费。 这也意味着容器映像将保留在这些节点上。 有关详细信息,请参阅 Azure 虚拟机的状态和计费。 此行为允许更快的操作速度,由于您的部署使用缓存的映像。 缩减模式无需预先配置节点和预先拉取容器镜像,从而节省计算成本。
在您开始之前
警告
若要保留任何已解除分配的 VM,必须将缩减模式设置为“解除分配”模式。 这包括已使用 IaaS API接口解除分配的虚拟机,以及使用虚拟机规模集API接口解除分配的虚拟机。 将缩减模式设置为“删除”将移除所有已解除分配的虚拟机。 应用解除分配模式并发生缩减作后,这些节点将保留在 APIerver 中注册,并显示为 NotReady 状态。
本文假定你拥有现有的 AKS 群集。
局限性
- 不支持临时 OS 磁盘。 请务必通过在创建群集或节点池时包括参数
--node-osdisk-type Managed来指定托管 OS 磁盘。
注释
以前,虽然缩减模式处于预览状态,但 不支持现成节点池 。 现在,缩减模式已正式发布,此限制已不再适用。
使用缩减模式在缩减时解除节点分配
通过设置 --scale-down-mode Deallocate,节点将在群集/节点池的缩减过程中解除分配。 所有解除分配的节点都会停止。 当群集/节点池需要纵向扩展时,在预配任何新节点之前,首先启动解除分配的节点。
在此示例中,我们将创建一个包含 20 个节点的新节点池,并指定在缩减时,将使用参数 --scale-down-mode Deallocate解除分配节点。
az aks nodepool add --node-count 20 --scale-down-mode Deallocate --node-osdisk-type Managed --max-pods 10 --name nodepool2 --cluster-name myAKSCluster --resource-group myResourceGroup
通过缩放节点池并将节点计数更改为 5,我们将释放 15 个节点。
az aks nodepool scale --node-count 5 --name nodepool2 --cluster-name myAKSCluster --resource-group myResourceGroup
若要在缩减期间解除分配 Windows 节点,请运行以下命令。 默认行为与 Linux 节点保持一致,即 在纵向缩减期间删除节点。
az aks nodepool add --node-count 20 --scale-down-mode Deallocate --os-type Windows --node-osdisk-type Managed --max-pods 10 --name npwin2 --cluster-name myAKSCluster --resource-group myResourceGroup
删除以前解除分配的节点
若要删除已解除分配的节点,可以通过设置--scale-down-mode Delete将缩减模式更改为 Delete 。 现在将删除 15 个已解除分配的节点。
az aks nodepool update --scale-down-mode Delete --name nodepool2 --cluster-name myAKSCluster --resource-group myResourceGroup
注释
将缩减模式从 Deallocate 更改为 Delete 后,再变为 Deallocate,这将删除所有已解除分配的节点,同时保持节点池处于 Deallocate 缩减模式。
使用缩减模式在缩减时删除节点
不使用缩减模式的 AKS 默认行为是缩小群集时删除节点。 使用缩减模式,可以通过设置 --scale-down-mode Delete 来明确实现这种行为。
在此示例中,我们将创建新的节点池,并指定使用参数 --scale-down-mode Delete向下缩放时,将删除节点。 将使用群集自动缩放程序处理缩放操作。
az aks nodepool add --enable-cluster-autoscaler --min-count 1 --max-count 10 --max-pods 10 --node-osdisk-type Managed --scale-down-mode Delete --name nodepool3 --cluster-name myAKSCluster --resource-group myResourceGroup
后续步骤
- 若要了解有关升级 AKS 群集的详细信息,请参阅 升级 AKS 群集
- 若要了解有关群集自动缩放程序的详细信息,请参阅 自动缩放群集以满足 AKS 上的应用程序需求