将 Azure 专用主机添加到 Azure Kubernetes 服务 (AKS) 群集

Azure 专用主机是一种提供物理服务器(能够托管一个或多个虚拟机)的服务,专用于一个 Azure 订阅。 专用主机是数据中心使用的物理服务器并作为资源提供。 你可以在区域、可用性区域和容错域中预配专用主机。 然后,可以按照最能满足你的需要的配置将 VM 直接放入预配的主机中。

将 Azure 专用主机用于具有 AKS 群集的节点具有以下优势:

  • 物理服务器级别的硬件隔离。 不会在你的主机上放置任何其他 VM。 专用主机部署在相同的数据中心,与其他非隔离主机共享相同的网络和底层存储基础结构。
  • 控制 Azure 平台发起的维护事件。 尽管大多数维护事件对虚拟机的影响极小甚至没有任何影响,但对于某些敏感工作负荷而言,每暂停一秒都可能会造成影响。 在使用专用主机的情况下,可以选择维护时段,以降低对服务的影响。

准备阶段

  • Azure 订阅。 如果你没有 Azure 订阅,可以创建一个试用版订阅
  • 在启动之前,请确保 Azure CLI 的版本为 2.39.0 或更高版本。 如果它是更早的版本,请安装最新版本

限制

将 Azure 专用主机与 Azure Kubernetes 服务集成时,存在以下限制:

  • 现有的代理池无法从非 ADH 转换为 ADH 或从 ADH 转换为非 ADH。
  • 不支持将代理池从主机组 A 更新到主机组 B。
  • 跨订阅使用 ADH。

针对 AKS 上的 ADH 容量进行规划

并非所有主机 SKU 都适用于所有区域和可用性区域。 在开始预配专用主机之前,可以列出主机可用性和任何套餐限制。

az vm list-skus -l chinaeast2  -r hostGroups/hosts  -o table

注意

首先,在使用主机组时,节点池容错域计数始终与主机组容错域计数相同。 若要使用群集自动缩放来处理 ADH 和 AKS,请确保主机组容错域计数和容量足够。 其次,如果知道容错域在做什么,那么只需将容错域计数从默认值 1 更改为任何其他数字,因为错误配置可能会导致无法缩放的配置。

根据预期的 VM 利用率确定所需的主机数

在部署之前,评估主机利用率以确定可以(按大小)分配的 VM 的数量。

az vm host get-instance-view -g myDHResourceGroup --host-group MyHostGroup --name MyHost

将专用主机组添加到 AKS 群集

主机组是表示专用主机集合的资源。 可在区域和可用性区域中创建主机组,并向其添加主机。 规划高可用性时,有其他选项。 你可以将以下一个或两个选项与专用主机一起使用:

  • 跨多个可用性区域。 在这种情况下,需要在要使用的每个区域中都有一个主机组。
  • 跨多个容错域,这些域映射到物理机架。

在任一情况下,都需要为主机组提供容错域计数。 如果不希望跨组中的容错域,请使用容错域计数 1。

还可以决定使用可用性区域和容错域。

创建主机组

现在,在主机组中创建一个专用主机。 除了主机名称外,还需要提供主机的 SKU。 主机 SKU 捕获受支持的 VM 系列以及专用主机的硬件代系。

有关主机 SKU 和定价的详细信息,请参阅 Azure 专用主机定价

使用 az vm host create 可创建主机。 如果为主机组设置了容错域计数,则系统会要求你为主机指定容错域。

在此示例中,我们将通过 az vm host group create 使用可用性区域和容错域创建主机组。

az vm host group create \
--name myHostGroup \
-g myDHResourceGroup \
-z 1 \
--platform-fault-domain-count 1 \
--automatic-placement true

创建专用主机

现在,在主机组中创建一个专用主机。 除了主机名称外,还需要提供主机的 SKU。 主机 SKU 捕获受支持的 VM 系列以及专用主机的硬件代系。

如果为主机组设置了容错域计数,则需要为主机指定容错域。

az vm host create \
--host-group myHostGroup \
--name myHost \
--sku DSv3-Type1 \
--platform-fault-domain 1 \
-g myDHResourceGroup

使用用户分配的标识

重要

一个在主机组的资源组上具有“参与者”角色的用户的分配标识是必需的。

首先,创建托管标识

az identity create -g <Resource Group> -n <Managed Identity name>

分配托管标识

az role assignment create --assignee <id> --role "Contributor" --scope <Resource id>

使用主机组创建 AKS 群集

创建 AKS 群集,并添加刚配置的主机组。

az aks create -g MyResourceGroup -n MyManagedCluster --location chinaeast2 --nodepool-name agentpool1 --node-count 1 --host-group-id <id> --node-vm-size Standard_D2s_v3 --enable-managed-identity --assign-identity <id>

将专用主机节点池添加到现有 AKS 群集

将主机组添加到已存在的 AKS 群集。

az aks nodepool add --cluster-name MyManagedCluster --name agentpool3 --resource-group MyResourceGroup --node-count 1 --host-group-id <id> --node-vm-size Standard_D2s_v3

从 AKS 群集中删除专用主机节点池

az aks nodepool delete --cluster-name MyManagedCluster --name agentpool3 --resource-group MyResourceGroup

后续步骤

本文介绍了如何使用专用主机创建 AKS 群集,以及如何将专用主机添加到现有群集。 有关专用主机的详细信息,请参阅专用主机