停止和启动 Azure Kubernetes 服务 (AKS) 群集
可能不需要持续运行 Azure Kubernetes 服务 (AKS) 工作负载。 例如,可能有只在营业时间使用的开发群集。 这表示有时群集可能处于空闲状态,只运行系统组件。 可以通过将所有 User
节点池缩放为 0 来减少群集内存占用量,但当该群集运行时,仍需要 System
池来运行系统组件。
为了在这段时间内更好地优化成本,可以关闭或停止群集。 此操作将停止控制平面和代理节点,从而节省所有计算成本,同时保持除独立 pod 之外的所有对象。 存储群集状态,以备再次启动时可从中断的位置重新开始。
开始之前
本文假设你有现有 AKS 群集。 如果需要 AKS 群集,可以使用 Azure CLI、Azure PowerShell 或 Azure 门户 创建一个。
关于群集停止/启动功能
当使用群集停止/启动功能时,以下条件适用:
- 只有虚拟机规模集支持的群集才支持此功能。
- 不能停止使用 节点自动预配 (NAP) 功能的群集。
- 已停止的 AKS 群集的群集状态将最多保留 12 个月。 如果群集停止时间超过 12 个月,则无法恢复状态。 有关详细信息,请参阅 AKS 支持策略。
- 在已停止的 AKS 群集上只能执行启动或删除操作。 要执行其他操作,如缩放或升级,需要首先启动群集。
- 如果预配了链接到专用群集的 PrivateEndpoints,则在启动已停止的 AKS 群集时需要删除并重新创建它们。
- 由于停止进程会清空所有节点,因此,任何独立 Pod(例如,不由 Deployment、StatefulSet、DaemonSet、Job 等管理的 Pod)将被删除。
- 启动群集备份时,预期会出现以下行为:
- API 服务器的 IP 地址可能会更改。
- 如果使用的是群集自动缩放程序,则在启动群集时,当前节点计数可能不在所设置的最小范围值和最大范围值之间。 群集以运行其工作负载所需的节点数(不受自动缩放程序设置影响)开始。 当群集执行缩放操作时,最小值和最大值将影响当前节点计数,并且群集最终将进入并保持在所需范围内,直到停止群集为止。
停止 AKS 群集
使用
az aks stop
命令可以停止正在运行的 AKS 群集,包括节点和控制平面。 以下示例停止名为 myAKSCluster 的群集:az aks stop --name myAKSCluster --resource-group myResourceGroup
验证群集是否已停止使用
az aks show
命令,并确认powerState
显示为Stopped
。az aks show --name myAKSCluster --resource-group myResourceGroup
输出应该类似于以下简洁示例输出:
{ [...] "nodeResourceGroup": "MC_myResourceGroup_myAKSCluster_chinaeast2", "powerState":{ "code":"Stopped" }, "privateFqdn": null, "provisioningState": "Succeeded", "resourceGroup": "myResourceGroup", [...] }
如果
provisioningState
显示Stopping
,则群集尚未完全停止。
重要
如果使用的是 Pod 中断预算,停止操作可能需要更长的时间,因为清空过程将花费更多的时间才能完成。
启动 AKS 群集
注意
请勿重复停止和启动群集。 这可能导致错误。 停止群集后,应至少等待 15-30 分钟,然后再次启动它。
使用
az aks start
命令以启动已停止的 AKS 群集。 群集将以先前的控制平面状态和代理节点数重新启动。 以下示例启动名为 myAKSCluster 的群集:az aks start --name myAKSCluster --resource-group myResourceGroup
验证群集是否已开始使用
az aks show
命令,并确认powerState
显示Running
。az aks show --name myAKSCluster --resource-group myResourceGroup
输出应该类似于以下简洁示例输出:
{ [...] "nodeResourceGroup": "MC_myResourceGroup_myAKSCluster_chinaeast2", "powerState":{ "code":"Running" }, "privateFqdn": null, "provisioningState": "Succeeded", "resourceGroup": "myResourceGroup", [...] }
如果
provisioningState
显示Starting
,则群集尚未完全启动。
后续步骤
- 若要了解如何将
User
池缩放为 0,请参阅将User
池缩放为 0。 - 若要了解如何使用现成 VM 实例节省成本,请参阅将现成节点池添加到 AKS。
- 若要了解有关 AKS 支持策略的详细信息,请参阅 AKS 支持策略。