准备将管理集群部署到 Microsoft Azure

本主题介绍了如何准备 Microsoft Azure 以运行 Tanzu Kubernetes Grid。

如果要在 Azure VMware 解决方案 (AVS) 上安装 Tanzu Kubernetes Grid,则您将安装到 vSphere 环境中。请参见《准备部署管理集群到 VMware Cloud 环境》中的准备 Microsoft Azure 上的 Azure VMware 解决方案以准备环境,以及准备部署管理集群到 vSphere 以部署管理集群。

为方便起见,此页面末尾提供了准备检查表,以确保您已准备好将 Tanzu Kubernetes Grid 管理集群部署到 Azure。

重要

Tanzu Kubernetes Grid v2.4.x 是支持在 Azure 上创建独立 TKG 管理集群的上一个 TKG 版本。Tanzu Kubernetes Grid v2.5 版本中将移除在 Azure 上创建独立 TKG 管理集群的功能。

从现在开始,VMware 建议您使用 Tanzu Mission Control 创建本机 Azure AKS 集群,而不是在 Azure 上创建新的 TKG 管理集群。有关如何使用 Tanzu Mission Control 创建本机 Azure AKS 集群的信息,请参见《Tanzu Mission Control》文档中的管理 Azure AKS 集群的生命周期

有关详细信息,请参见《VMware Tanzu Kubernetes Grid v2.4 发行说明》中的弃用 AWS 和 Azure 上的 TKG 管理和工作负载集群

常规要求

  • Tanzu CLI 本地安装。请参见安装 Tanzu CLI 和 Kubernetes CLI 以与独立管理集群配合使用
  • 具有以下条件的 Microsoft Azure 帐户:

    • 创建服务主体并为其分配 Owner 角色所需的权限。
      有关角色的详细信息,请参见 Azure 内置角色
    • 集群具有足够的虚拟机内核 (vCPU) 配额。标准 Azure 帐户的配额为每个区域 10 个 vCPU。vCPU 要求将取决于您将使用 prod 还是 dev 计划。要了解有关计划的更多信息,请参见工作负载集群计划
      Tanzu Kubernetes Grid 集群要求每个节点有 2 个 vCPU,这意味着:
    • 管理集群:
      • dev 计划:4 个 vCPU(1 个主节点、1 个工作节点)
      • prod 计划:8 个 vCPU(3 个主节点、1 个工作节点)
    • 每个工作负载集群:
      • dev 计划:4 个 vCPU(1 个主节点、1 个工作节点)
      • prod 计划:12 个 vCPU(3 个主节点、3 个工作节点)
    • 例如,假设单个管理集群以及具有相同计划的所有集群:

      计划 工作负载集群 用于工作负载的 vCPU 用于管理的 vCPU 总 vCPU
      开发 1 4 个 4 个 8
      5 20 24
      生产 1 12 8 20
      5 60 68

    • 集群具有足够的公用 IP 地址配额,包括公用 IP 地址 - 标准公用 IP 地址 - 基本静态公用 IP 地址的配额。标准 Azure 帐户的配额为每个区域 10 个公用 IP 地址。每个 Tanzu Kubernetes Grid 集群都需要 2 个公用 IP 地址,而无论它有多少个控制平面节点和工作节点。对于类型为 LoadBalancer 的每个 Kubernetes 服务对象,需要 1 个公用 IP 地址。

  • 对于 TCP,允许在本地引导计算机与管理集群物料清单 (BoM) 文件中列出的映像存储库之间通过端口 443 传输流量。*
    • BoM 文件位于 ~/.config/tanzu/tkg/bom/ 下,其名称包含 Tanzu Kubernetes Grid 版本。例如,tkg-bom-v2.4.0+vmware.1 .yaml
    • 对所有 imageRepository 值运行 DNS 查找以查找其 CNAME。
  • (可选)OpenSSL 已在本地安装,用于创建新的密钥对或验证下载软件包指纹。请参见 OpenSSL
  • (可选)虚拟网络 (VNet),具有:

    • 管理集群控制平面节点的子网
    • 集群的 VNet 资源组中的网络安全组 (NSG) 位于控制平面子网上并具有以下入站安全规则,用于启用 SSH 和 Kubernetes API 服务器连接:
      • 允许任何源和目标进行基于端口 22 的 TCP 传输
      • 允许任何源和目标进行基于端口 6443 的 TCP 传输 端口 6443 是在您所创建的集群中的虚拟机上公开 Kubernetes API 的位置。要更改管理集群或工作负载集群的此端口,请在部署集群时设置 CLUSTER_API_SERVER_PORT 变量。
    • 管理集群工作节点的子网
    • 管理集群工作节点的 NSG,该节点位于 VNet 资源组中且位于集群的工作节点子网上

    如果不使用现有 VNet,安装过程将创建一个新 VNet。

  • Azure CLI 本地安装。请参见 Microsoft Azure 文档中的安装 Azure CLI

  • 如果要将 LoadBalancer 类型的服务部署到基于类的工作负载集群,请按照 Azure上基于类的工作负载集群的 LoadBalancer 服务需要手动配置网关或前端中所述,配置 NAT 网关和其他前端。

*或者参见准备 Internet 受限环境以便在无法访问外部网络的情况下可以进行安装。

管理集群大小调整示例

下表介绍了 Azure 上的管理集群的大小调整示例。使用此数据作为指导,确保扩展管理集群以处理您计划部署的工作负载集群数量。工作负载集群虚拟机大小列中列出了用于可以管理…列中示例的虚拟机大小。

管理集群计划 管理集群虚拟机大小 可以管理 … 工作负载集群虚拟机大小
3 个控制平面节点和 3 个工作节点
  • 控制平面节点:Standard_D2s_v3(CPU:2;内存:8 GB;SSD:16 GB)
  • 工作节点:Standard_D2s_v3(CPU:2;内存:8 GB;SSD:16 GB)
示例:
  • 5 个工作负载集群,每个集群部署 3 个控制平面和 200 个工作节点;或
  • 10 个工作负载集群,每个集群部署有 3 个控制平面和 50 个工作节点
  • 控制平面节点:Standard_D2s_v3(CPU:2;内存:8 GB;SSD:16 GB)
  • 工作节点:Standard_D2s_v3(CPU:2;内存:8 GB;SSD:16 GB)
3 个控制平面节点和 3 个工作节点
  • 控制平面节点:Standard_D2s_v3(CPU:2;内存:8 GB;SSD:16 GB)
  • 工作节点:Standard_D2s_v3(CPU:2;内存:8 GB;SSD:16 GB)
例如:一个工作负载集群,部署有 3 个控制平面和 250 个工作节点
  • 控制平面节点:Standard_D4s_v3(CPU:4;内存:16 GB;SSD:32 GB)
  • 工作节点:Standard_D2s_v3(CPU:2;内存:8 GB;SSD:16 GB)
3 个控制平面节点和 3 个工作节点
  • 控制平面节点:Standard_D4s_v3(CPU:4;内存:16 GB;SSD:32 GB)
  • 工作节点:Standard_D4s_v3(CPU:4;内存:16 GB;SSD:32 GB)
例如:199 个工作负载集群,每个集群部署有 3 个控制平面和 3 个工作节点
  • 控制平面节点:Standard_D2s_v3(CPU:2;内存:8 GB;SSD:16 GB)
  • 工作节点:Standard_D2s_v3(CPU:2;内存:8 GB;SSD:16 GB)

为现有 VNet 创建 Azure NSG

Azure 上的 Tanzu Kubernetes Grid 管理集群和工作负载集群要求在其 VNet 和 VNet 资源组中定义两个网络安全组 (NSG):

  • 名为 CLUSTER-NAME-controlplane-nsg 并与集群的控制平面子网相关联的 NSG
  • 名为 CLUSTER-NAME-node-nsg 并与集群的工作节点子网关联的 NSG

    其中,CLUSTER-NAME 是集群的名称。

    注意

    提供不遵循上述格式的 NSG 名称可能会阻止部署。

如果为管理集群指定现有 VNet,则必须按照上述常规要求中所述创建这些 NSG。为管理集群指定现有 VNet 时,在安装程序界面中选择现有 VNet 或在其配置文件中选择 AZURE_VNET_NAME

如果没有为集群指定现有 VNet,部署过程将创建新的 VNet 和所需的 NSG。

有关如何配置集群的 Vnet、资源组和子网,请参见《配置文件变量参考》中的 Microsoft Azure

将 Tanzu Kubernetes Grid 注册为 Azure 客户端应用

Tanzu Kubernetes Grid 将 Azure 资源作为通过服务主体访问 Azure 的已注册客户端应用程序进行管理。要创建服务主体并配置其对 Azure 资源的访问权限,可以使用 az ad sp create-for-rbac 命令。

  1. 通过运行 az login 登录到 Azure CLI。

  2. 创建服务主体,并为其分配 Owner 角色:

    az ad sp create-for-rbac --role "Owner" --name "APP-NAME" --scopes /subscriptions/SUBSCRIPTION-ID/resourceGroups/RESOURCE-GROUP
    az role assignment create --assignee APP-ID --role "Owner"
    

    其中:

    • APP-NAME 是提供给服务主体的任何名称
    • SUBSCRIPTION-IDRESOURCE-GROUP 是 Azure 订阅 ID 和 VNet 资源组
    • APP-ID 是从 daz ad sp create-for-rbac 返回的 appId

    例如,要创建 Owner 角色并将其分配给名为 tkg 的服务主体:

    $ az ad sp create-for-rbac --role "Owner" --name "tkg" --scopes /subscriptions/c789uce3-aaaa-bbbb-cccc-a51b6b0gb405/resourceGroups/myrg
    Creating 'Owner' role assignment under scope '/subscriptions/c789uce3-aaaa-bbbb-cccc-a51b6b0gb405'
    The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli
    'name' property in the output is deprecated and will be removed in the future. Use 'appId' instead.
    {
     "appId": "c407cfd4-aaaa-bbbb-cccc-80af703eb0ed",
     "displayName": "tkg",
     "name": "c407cfd4-aaaa-bbbb-cccc-80af703eb0ed",
     "password": "R6yM_.aaaabbbbccccdddd111122223333",
     "tenant": "9c117323-aaaa-bbbb-cccc-9ee430723ba3"
    }
    $ az role assignment create --assignee c407cfd4-aaaa-bbbb-cccc-80af703eb0ed --role "Owner"
    

    记录输出。将在以下接受基础映像许可证步骤中以及稍后部署管理集群时使用此信息。有关 az ad sp create-for-rbac 支持的选项的完整列表,请参见 Azure 文档中的 az ad sp create-for-rbac

接受基础映像许可证

要在 Azure 上运行管理集群虚拟机,请接受其基本 Kubernetes 版本和计算机操作系统的许可证。

运行 az vm image terms accept 命令,指定 --plan 和订阅 ID。

在 Tanzu Kubernetes Grid v2.4.0 中,默认集群映像 --plan 值为 k8s-1dot27dot5-ubuntu-2004,具体取决于 Kubernetes 版本 1.27.5 和计算机操作系统 Ubuntu 20.04。运行下列命令:

az vm image terms accept --publisher vmware-inc --offer tkg-capi-2022-06-24 --plan k8s-1dot27dot5-ubuntu-2004 --subscription AZURE_SUBSCRIPTION_ID

其中,AZURE_SUBSCRIPTION_ID 是 Azure 订阅 ID。

必须重复此操作,以便接受要在部署集群时以及每次升级到新版本的 Tanzu Kubernetes Grid 时要使用的每个 Kubernetes 版本或操作系统的基础映像许可证。

创建 SSH 密钥对(可选)

使用 Tanzu CLI 从称为引导计算机的计算机部署管理集群。要连接到 Azure,引导计算机必须提供 SSH 密钥对的公钥部分。如果引导计算机还没有 SSH 密钥对,您可以使用 ssh-keygen 等工具生成一个密钥对。

  1. 在引导计算机上,运行以下 ssh-keygen 命令。

    ssh-keygen -t rsa -b 4096 -C "[email protected]"
    
  2. 出现提示 Enter file in which to save the key (/root/.ssh/id_rsa): 时,按 Enter 以接受默认值。

  3. 输入并重复密钥对的密码。
  4. 将私钥添加到计算机上运行的 SSH 代理,然后输入在上一步中创建的密码。

    ssh-add ~/.ssh/id_rsa
    
  5. 在文本编辑器中打开文件 .ssh/id_rsa.pub,以便在部署管理集群时轻松复制和粘贴该文件。

准备检查表

使用以下检查表确保您准备好将 Tanzu Kubernetes Grid 管理集群部署到 Azure:

  • 已安装 Tanzu CLI

    • 运行 tanzu version。有关与 Tanzu Kubernetes Grid v2.4 兼容的 CLI 版本列表,请参见产品互操作性矩阵
  • Azure 帐户

    • 登录到 Azure Web 门户(网址:https://portal.azure.com)。
  • 已安装 Azure CLI

    • 运行 az version。输出应列出 Azure CLI 的当前版本,如 Microsoft Azure 文档中的安装 Azure CLI 中所列。
  • 已注册 tkg 应用

  • 已接受基础虚拟机映像许可证

    • 运行 az vm image terms show --publisher vmware-inc --offer tkg-capi-2022-06-24 --plan k8s-1dot27dot5-ubuntu-2004。输出应包含 "accepted": true

下一步操作

对于生产部署,强烈建议为集群启用身份管理:*有关部署管理集群之前要执行的准备步骤的信息,请参阅配置身份管理中的获取您的身份提供程序详细信息。* 有关 Tanzu Kubernetes Grid 中的身份管理和访问控制的概念信息,请参见关于身份和访问管理

如果在具有外部 Internet 连接的环境中使用 Tanzu Kubernetes Grid,在设置身份管理后,即可将管理集群部署到 Azure。

check-circle-line exclamation-circle-line close-line
Scroll to top icon