快速入门:使用 Azure CLI 创建 Azure Kubernetes Fleet Manager 并加入成员群集

通过 Azure CLI 创建 Fleet Manager 并加入 支持的 Kubernetes 群集 作为成员,开始使用 Azure Kubernetes 机队管理器。

先决条件

如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅

  • 阅读 机群管理器的概念性概述,其中提供了本文档中引用的机队和成员群集的说明。

  • 阅读舰队类型的概念性概述,其中比较了不同的舰队配置选项。

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

  • 标识(用户或服务主体),可用于登录到 Azure CLI。 此身份需要以下集群资源权限,如果适用,还需要成员群集资源的权限:

  • 舰队权限:

    • Microsoft.ContainerService/fleets/read
    • Microsoft.ContainerService/fleets/write
    • Microsoft.ContainerService/fleets/members/read
    • Microsoft.ContainerService/fleets/members/write
    • Microsoft 容器服务/舰队成员资格/读取
    • Microsoft.ContainerService/fleetMemberships/write
  • 如果加入 AKS 成员群集:

    • Microsoft.ContainerService/managedClusters/read
    • Microsoft.ContainerService/managedClusters/write
    • Microsoft.ContainerService/managedClusters/listClusterUserCredential/action
  • 如果加入启用 Arc 功能的 Kubernetes 成员集群:

    • Microsoft.Kubernetes/connectedClusters/read,
    • Microsoft.KubernetesConfiguration/extensions/read,
    • Microsoft.KubernetesConfiguration/extensions/write,
    • Microsoft.KubernetesConfiguration/extensions/delete,
  • 安装 Azure CLI 2.70.0 或更高版本。 若要安装或升级,请参阅安装 Azure CLI

  • 还需要 fleet Azure CLI 扩展 1.6.2 或更高版本,可以通过运行以下命令进行安装:

    az extension add --name fleet
    

    运行以下命令以更新到已发布的最新扩展版本:

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

    export SUBSCRIPTION_ID=<subscription_id>
    export GROUP=<your_resource_group_name>
    export FLEET=<your_fleet_name>
    export LOCATION=<azure-region-name>
    
  • 使用kubectl命令安装az aks install-cli

    az aks install-cli
    
  • Kubernetes 群集要加入为 Fleet Manager 成员群集必须使用各自平台的支持版本:请参阅 AKS 群集版本支持策略已启用 Azure Arc 的 Kubernetes 验证

创建资源组

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

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

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

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

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

创建车队管理器资源

可以随时创建一个 Fleet Manager,选择以后添加 受支持的 Kubernetes 群集 作为成员。 默认情况下,通过 Azure CLI 创建时,Fleet Manager 会启用成员集群分组和更新协调。 如果使用中心群集创建 Fleet Manager,则有可能跨多个成员群集进行智能 Kubernetes 对象放置和负载均衡。 有关详细信息,请参阅舰队类型的概念性概述,其中比较了不同的舰队配置。

重要

可以将不带中心群集的 Fleet Manager 更改为具有中心群集的 Fleet Manager,但不能反过来变更。 对于具有中心群集的机队经理,选择专用或公共访问后,便无法更改。

如果只想将 Fleet Manager 用于 Kubernetes 或节点映像更新的协调工作,可以使用 az fleet create 命令创建不包含中心群集的 Fleet 资源。

az fleet create \
    --resource-group ${GROUP} \
    --name ${FLEET} \
    --location ${LOCATION} \
    --enable-managed-identity

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

{
  "etag": "...",
  "hubProfile": null,
  "id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/fleet-demo/providers/Microsoft.ContainerService/fleets/fleet-demo",
  "identity": {
    "principalId": <system-identity-id>,
    "tenantId": <entra-tenant-id>,
    "type": "SystemAssigned",
    "userAssignedIdentities": null
  },
  "location": "<LOCATION>",
  "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"
}

加入成员群集

群目前支持将现有 AKS 群集或已启用 Arc 的 Kubernetes 群集(预览版)加入为成员群集。

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

    export MEMBER_NAME_1=flt-member-cluster-1
    
    # For an AKS cluster
    export MEMBER_CLUSTER_ID_1=/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${GROUP}/providers/Microsoft.ContainerService/managedClusters/${MEMBER_NAME_1}
    
    # For an Arc-enabled cluster
    export MEMBER_CLUSTER_ID_1=/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${GROUP}/providers/Microsoft.Kubernetes/connectedClusters/${MEMBER_NAME_1}
    
  2. 使用 az fleet member create 命令将现有群集加入机群管理器。

    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>
    

后续步骤