上面的方法(az vm <deallocate|start> --ids $(...))似乎不再起作用。 通过首先列出VM规模集并使用它们解除分配/启动来解决问题:
$ResourceGroup = "MyResourceGroup"
$ClusterName = "MyAKSCluster"
$Location = "westeurope"
$vmssResourceGroup="MC_${ResourceGroup}_${ClusterName}_${Location}"
# List all VM scale sets
$vmssNames=(az vmss list --resource-group $vmssResourceGroup --query "[].id" -o tsv | Split-Path -Leaf)
# Deallocate first instance for each VM scale set
$vmssNames | ForEach-Object { az vmss deallocate --resource-group $vmssResourceGroup --name $_ --instance-ids 0}
# Start first instance for each VM scale set
$vmssNames | ForEach-Object { az vmss start --resource-group $vmssResourceGroup --name $_ --instance-ids 0}
6条答案
按热度按时间mklgxw1f1#
您可以使用Azure CLI到stop the the entire cluster:
然后重新开始
在此功能之前,可以通过PowerShell停止虚拟机:
将
MC_my_resourcegroup_westeurope
替换为包含VM的资源组的名称。如果要再次启动VM,请运行:
rbl8hiat2#
只有虚拟机需要花费所有AKS资源(当然,VHD也是如此,但您无法真正阻止它们)。你只需要照顾这些。编辑:公共IP也需要花钱,但你也不能阻止它们。
对于我的AKS集群,我只是使用portal并发出stop\deallocate命令。并在我需要的时候启动那些回来(一切似乎都工作得很好)。
您可以使用REST API\powershell\cli\各种SKD以自动方式实现相同的结果。
dohp0rv53#
上面的方法(
az vm <deallocate|start> --ids $(...)
)似乎不再起作用。通过首先列出VM规模集并使用它们解除分配/启动来解决问题:
xzabzqsa4#
有一个新的功能刚刚添加到AKS:
现在公开预览的AKS停止/启动群集功能允许AKS客户完全暂停AKS群集,并通过按钮开关从稍后停止的位置继续,从而节省时间和成本。以前,客户必须采取多个步骤来停止或启动群集,从而增加了操作时间并浪费了计算资源。停止/启动功能可使群集配置保持在适当位置,客户无需重新配置群集即可从停止的位置继续。
https://learn.microsoft.com/en-gb/azure/aks/start-stop-cluster
stszievb5#
在AKS集群中,后藤属性并找到资源组名称。搜索资源组,当您选择它时,它将列出您的虚拟机。对于每个虚拟机,选择操作〉自动关闭选项并将其打开。这将关闭虚拟机,在您不进行开发时节省您的资金!要再次打开它们,您需要遵循以前答案的建议或答案here
bihw5rsg6#
是的,你可以做到这一点,我建议如果可能的话,自动化,这样你就可以关闭较低的环境集群过夜,并在周末,它节省了很多钱。
下面是一个使用Azure Pipelines在每个工作日的上午7点和下午7点关闭群集的示例。
参考:https://jimferrari.com/2023/04/25/auto-shutdown-azure-kubernetes-service-clusters-aks/