如何在AKS(Azure托管Kubernetes)中按需启停计算资源以节省成本?
优雅启停AKS计算资源(学习场景省钱方案)
嗨,针对你这种仅用于学习的AKS集群,想要按需付费、不用的时候彻底停掉计算资源,我整理了几个实用又简便的方案,操作起来都不复杂:
一、手动快速操作(适合临时启停)
首先得说清楚:AKS的工作节点是基于**虚拟机规模集(VMSS)**的(不是传统的可用性集),核心成本就是这些VM,再加上配套的负载均衡器费用。手动操作分两步走:
1. 停止计算资源(不使用时)
- 先把节点池缩放到0,这样所有VM都会被停止并释放,彻底终止VM费用:
az aks nodepool scale --resource-group <你的资源组名> --cluster-name <AKS集群名> --name <节点池名称,默认是nodepool1> --node-count 0 - 然后处理负载均衡器:AKS创建的负载均衡器按小时收费,哪怕没有后端节点也会产生费用。你可以把它设置为停止状态(比删除更稳妥,下次启动不用重新创建):
# 先查LB名称:az network lb list --resource-group <你的资源组名> az network lb stop --resource-group <你的资源组名> --name <AKS的LB名称,格式一般是aks-<集群名>-xxxx>
2. 恢复计算资源(使用时)
- 先启动负载均衡器:
az network lb start --resource-group <你的资源组名> --name <AKS的LB名称> - 再把节点池缩回到需要的节点数(学习用1个节点足够):
az aks nodepool scale --resource-group <你的资源组名> --cluster-name <AKS集群名> --name <节点池名称> --node-count 1
小贴士:AKS的控制平面是Azure托管的,目前完全免费,所以即使节点池缩到0,控制平面依然正常运行,不会产生额外费用,下次恢复时直接用就行。
二、自动化启停(适合固定时段学习)
如果不想每次手动敲命令,可以用Azure Automation Runbook来定时执行启停脚本,彻底解放双手:
- 先在Azure门户创建一个Automation账户,然后新建两个Runbook(选Bash或PowerShell都可以):
- 停止脚本:包含节点池缩0和LB停止的命令
- 启动脚本:包含LB启动和节点池扩容的命令
- 给每个Runbook配置定时触发器,比如设置每周一到周五早8点启动、晚6点停止,完全不用操心。
三、进阶自动方案:Cluster Autoscaler
如果你的学习时间不固定,偶尔才需要用集群,可以开启AKS的Cluster Autoscaler,设置最小节点数为0,最大节点数为2:
az aks update --resource-group <你的资源组名> --name <AKS集群名> --enable-cluster-autoscaler --min-count 0 --max-count 2
这样当你部署Pod到集群时,Autoscaler会自动扩容节点;当所有Pod都删除后,它会自动把节点缩到0,完全自动化,特别适合临时测试场景。
内容的提问来源于stack exchange,提问作者Dan O'Leary
相关产品推荐
相关产品推荐

