停止AKS中的所有计算(Azure Managed Kubernetes)

Dan*_*ary 18 azure kubernetes azure-kubernetes azure-aks

我在Azure中创建了一个托管的Kubernetes集群,但它仅用于学习目的,因此我只想在我实际使用它时为计算付费.

有没有一种简单的方法可以优雅地关闭和启动VM,可用性集和负载平衡器?

off*_*cer 15

您可以使用Azure CLI通过Powershell停止虚拟机:

az vm deallocate --ids $(az vm list -g MC_my_resourcegroup_westeurope --query "[].id" -o tsv)
Run Code Online (Sandbox Code Playgroud)

替换MC_my_resourcegroup_westeurope为包含VM的资源组的名称.

如果要再次启动VM,请运行:

az vm start --ids $(az vm list -g MC_my_resourcegroup_westeurope --query "[].id" -o tsv)
Run Code Online (Sandbox Code Playgroud)


4c7*_*b41 11

只有虚拟机从所有AKS资源中获利(嗯,VHD也是如此,但你无法真正阻止它们).所以你只需要照顾那些.编辑:公共Ips也花钱,但你也不能阻止它们.

对于我的AKS集群,我只使用portal并发出stop\deallocate命令.当我需要它们时开始那些(一切似乎工作正常).

您可以使用REST API\powershell\cli \各种SKD以自动方式实现相同的结果.

  • 基本上按门户上的“解除分配”按钮。参考:https://blogs.technet.microsoft.com/gbanin/2015/04/22/difference-between-the-states-of-azure-virtual-machines-stopped-and-stopped-deallocated/@TallOrderDev (3认同)

Joo*_*ost 5

上述方法 ( 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}

Run Code Online (Sandbox Code Playgroud)