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

Posted

技术标签:

【中文标题】停止 AKS(Azure 托管 Kubernetes)中的所有计算【英文标题】:Stop all compute in AKS (Azure Managed Kubernetes) 【发布时间】:2018-06-30 06:40:15 【问题描述】:

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

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

【问题讨论】:

请记住,如果可以,请始终使用 kubectl scale-down 或 remove node-pools 命令。直接使用 az vm/az vmms 命令可能会破坏您的集群。我发生在我身上。不要在产品上这样做。 【参考方案1】:

在所有 AKS 资源中,只有 VM 会花钱(当然,VHD 也是如此,但您无法真正阻止这些资源)。所以你只需要照顾那些。编辑:公共 Ips 也需要花钱,但您也无法阻止这些。

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

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

【讨论】:

"发出停止\解除分配命令。"...你能详细说明一下吗?我对 Azure 门户不太熟悉。 基本上按门户上的deallocate 按钮。参考:blogs.technet.microsoft.com/gbanin/2015/04/22/…@TallOrderDev【参考方案2】:

您可以使用Azure CLI 到stop the the entire cluster:

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 的资源组的名称。

当你想再次启动虚拟机时,运行:

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

【讨论】:

如果您正在寻找 CLI 的自动化,那么您还可以利用这个自动启动停止的市场解决方案。效果很好 - azuremarketplace.microsoft.com/en-in/marketplace/apps/…【参考方案3】:

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

【讨论】:

重要的是要澄清这不是官方支持的。如果集群无法重新启动,Microsoft 支持将尽最大努力帮助您。因此,最好将其视为失去支持【参考方案4】:

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

【讨论】:

如果使用 VM 规模集,还需要使用 az vmss 而不是 az vm【参考方案5】:

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

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

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

【讨论】:

以上是关于停止 AKS(Azure 托管 Kubernetes)中的所有计算的主要内容,如果未能解决你的问题,请参考以下文章

使用托管标识进行 AKS 文件共享持久挂载 - 密钥轮换后出现问题

从 AKS 访问 Azure Blob 存储

Azure Kubernetes 服务中的 AAD 身份验证

错误:在 Azure Kubernetes 服务 (AKS) 中轮换证书

是否有用于 Azure AKS(Azure kubernetes 服务)集群的 API 网关

AKS(Azure Kubernetes 服务)和 SQL