28

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

有没有一种简单的方法可以优雅地关闭和启动虚拟机、可用性集和负载均衡器?

4

5 回答 5

20

您可以使用Azure CLI停止整个集群

az aks stop --name myAksCluster --resource-group myResourceGroup

然后重新开始

az aks start --name myAksCluster --resource-group myResourceGroup

在此功能之前,可以通过 Powershell 停止虚拟机:

az vm deallocate --ids $(az vm list -g MC_my_resourcegroup_westeurope --query "[].id" -o tsv)

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

当您想再次启动 VM 时,请运行:

az vm start --ids $(az vm list -g MC_my_resourcegroup_westeurope --query "[].id" -o tsv)
于 2018-08-31T17:05:23.153 回答
12

只有 VM 会从所有 AKS 资源中花钱(好吧,VHD 也是如此,但您无法真正停止这些资源)。所以你只需要照顾那些。编辑:公共 IP 也需要花钱,但你也不能阻止这些。

对于我的 AKS 集群,我只使用门户并发出 stop\deallocate 命令。并在我需要它们时重新启动它们(一切似乎都运行良好)。

您可以使用 REST API\powershell\cli\various SKD 以自动化方式实现相同的结果。

于 2018-01-21T14:36:17.667 回答
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}

于 2019-08-16T14:14:23.527 回答
4

AKS 中刚刚添加了一项新功能:

AKS 停止/启动群集功能现在在公共预览版中允许 AKS 客户完全暂停 AKS 群集,然后通过按钮切换从他们离开的地方继续,从而节省时间和成本。以前,客户必须采取多个步骤来停止或启动集群,从而增加操作时间并浪费计算资源。停止/启动功能使集群配置保持在原位,客户无需重新配置集群即可从中断处继续。

https://docs.microsoft.com/en-gb/azure/aks/start-stop-cluster

于 2020-09-23T07:27:14.283 回答
0

在 AKS 群集中,转到属性并找到您的资源组名称。搜索资源组,当您选择它时,它将列出您的虚拟机。对于每个虚拟机,选择操作 > 自动关闭选项并将其打开。这将在您不开发时关闭 VM,从而为您节省资金!要再次打开它们,您需要遵循先前答案的建议或此处的答案

于 2019-06-27T22:45:57.813 回答