快速入门:使用 Azure CLI 创建 Azure Kubernetes 舰队管理器资源并加入成员群集

开始使用 Azure Kubernetes 舰队管理器(舰队),方法是使用 Azure CLI 创建舰队资源,稍后将 Azure Kubernetes 服务 (AKS) 群集作为成员群集进行连接。

先决条件

  • 阅读有关此功能的概念性概述,其中提供了有关本文档中引用的舰队和成员群集的说明。

  • 一个 Azure 帐户和一个有效的订阅。 创建帐户

  • 标识(用户或服务主体),可用于登录到 Azure CLI。 此标识需要对舰队和 AKS 资源类型具有以下权限,才能完成本快速入门中列出的步骤:

    • Microsoft.ContainerService/fleets/read
    • Microsoft.ContainerService/fleets/write
    • Microsoft.ContainerService/fleets/members/read
    • Microsoft.ContainerService/fleets/members/write
    • Microsoft.ContainerService/fleetMemberships/read
    • Microsoft.ContainerService/fleetMemberships/write
    • Microsoft.ContainerService/managedClusters/read
    • Microsoft.ContainerService/managedClusters/write
  • 安装或升级 Azure CLI2.53.1 或更高版本。

  • 安装舰队 Azure CLI 扩展。 确保版本至少为 1.0.0

    az extension add --name fleet
    
  • 设置以下环境变量:

    export SUBSCRIPTION_ID=<subscription_id>
    export GROUP=<your_resource_group_name>
    export FLEET=<your_fleet_name>
    
  • 使用 az aks install-cli 命令安装 kubectlkubelogin

    az aks install-cli
    
  • 要作为成员群集加入舰队资源的 AKS 群集需要位于受支持的 AKS 版本中。 请在此处详细了解 AKS 版本支持策略。

创建资源组

Azure 资源组是用于部署和管理 Azure 资源的逻辑组。 创建资源组时,系统会提示你指定一个位置。 此位置是资源组元数据的存储位置,也是资源在 Azure 中运行的位置(如果你在创建资源期间未指定其他位置)。

设置 Azure 订阅并使用 az group create 命令创建资源组。

az account set -s ${SUBSCRIPTION_ID}
az group create --name ${GROUP} --location chinanorth3

以下输出示例类似于成功创建资源组:

{
  "id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/fleet-demo",
  "location": "chinanorth3",
  "managedBy": null,
  "name": "fleet-demo",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}

创建舰队资源

可以创建舰队资源,以便之后将 AKS 群集分组为成员群集。 默认情况下,此资源会启用成员群集分组和更新编排。 如果启用了舰队中心,则会启用其他预览版功能,例如,到成员群集的 Kubernetes 对象传播,以及跨多个成员群集的 L4 服务负载均衡。

重要

目前,一旦创建了舰队资源,就无法更改舰队资源的中心模式。

选项 1 - 创建无中心群集的舰队

如果只想将舰队用于更新业务流程(这是创建新舰队资源时的默认体验),则可以使用 az fleet create 命令创建不含中心群集的舰队资源。 有关详细信息,请参阅什么是中心群集(预览版)?

az fleet create --resource-group ${GROUP} --name ${FLEET} --location chinanorth3

输出应类似于以下示例输出:

{
  "etag": "...",
  "hubProfile": null,
  "id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/fleet-demo/providers/Microsoft.ContainerService/fleets/fleet-demo",
  "identity": {
    "principalId": null,
    "tenantId": null,
    "type": "None",
    "userAssignedIdentities": null
  },
  "location": "chinanorth3",
  "name": "fleet-demo",
  "provisioningState": "Succeeded",
  "resourceGroup": "fleet-demo",
  "systemData": {
    "createdAt": "2023-11-03T17:15:19.610149+00:00",
    "createdBy": "<user>",
    "createdByType": "User",
    "lastModifiedAt": "2023-11-03T17:15:19.610149+00:00",
    "lastModifiedBy": "<user>",
    "lastModifiedByType": "User"
  },
  "tags": null,
  "type": "Microsoft.ContainerService/fleets"
}

选项 2 - 创建有中心群集的舰队

如果除了更新业务流程之外,还想要将舰队用于 Kubernetes 对象传播和多群集负载均衡,则需要在使用 az fleet create 命令时指定 --enable-hub 参数,以在创建舰队资源的同时启用集线器群集:

az fleet create --resource-group ${GROUP} --name ${FLEET} --location chinanorth3 --enable-hub

输出应该类似于上一部分中的示例输出。

加入成员群集

舰队当前支持将现有 AKS 群集作为成员群集加入。

  1. 为成员群集设置以下环境变量:

    export MEMBER_NAME_1=aks-member-1
    export MEMBER_CLUSTER_ID_1=/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${GROUP}/providers/Microsoft.ContainerService/managedClusters/${MEMBER_NAME_1}
    
  2. 使用 az fleet member create 命令将现有群集加入舰队资源。

    # Join the first member cluster
    az fleet member create \
        --resource-group ${GROUP} \
        --fleet-name ${FLEET} \
        --name ${MEMBER_NAME_1} \
        --member-cluster-id ${MEMBER_CLUSTER_ID_1}
    

    输出应类似于以下示例输出:

    {
      "clusterResourceId": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<GROUP>/providers/Microsoft.ContainerService/managedClusters/aks-member-x",
      "etag": "...",
      "id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<GROUP>/providers/Microsoft.ContainerService/fleets/<FLEET>/members/aks-member-x",
      "name": "aks-member-1",
      "provisioningState": "Succeeded",
      "resourceGroup": "<GROUP>",
      "systemData": {
        "createdAt": "2022-10-04T19:04:56.455813+00:00",
        "createdBy": "<user>",
        "createdByType": "User",
        "lastModifiedAt": "2022-10-04T19:04:56.455813+00:00",
        "lastModifiedBy": "<user>",
        "lastModifiedByType": "User"
      },
      "type": "Microsoft.ContainerService/fleets/members"
    }
    
  3. 使用 az fleet member list 命令验证成员群集是否已成功加入舰队资源。

    az fleet member list --resource-group ${GROUP} --fleet-name ${FLEET} -o table
    

    如果成功,输出应类似于以下示例输出:

    ClusterResourceId                                                                                                                                Name          ProvisioningState    ResourceGroup
    -----------------------------------------------------------------------------------------------------------------------------------------------  ------------  -------------------  ---------------
    /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<GROUP>/providers/Microsoft.ContainerService/managedClusters/aks-member-1  aks-member-1  Succeeded            <GROUP>
    /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<GROUP>/providers/Microsoft.ContainerService/managedClusters/aks-member-2  aks-member-2  Succeeded            <GROUP>
    /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<GROUP>/providers/Microsoft.ContainerService/managedClusters/aks-member-3  aks-member-3  Succeeded            <GROUP>
    

后续步骤