快速入门:使用 Azure CLI 创建 Azure Kubernetes 舰队管理器资源并加入成员群集
开始使用 Azure Kubernetes 舰队管理器(舰队),方法是使用 Azure CLI 创建舰队资源,稍后将 Azure Kubernetes 服务 (AKS) 群集作为成员群集进行连接。
先决条件
如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅。
阅读有关此功能的概念性概述,其中提供了有关本文档中引用的舰队和成员群集的说明。
一个 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 CLI 至
2.53.1
或更高版本。使用
az extension add
命令安装舰队 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
命令安装kubectl
和kubelogin
。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 群集作为成员群集加入。
为成员群集设置以下环境变量:
export MEMBER_NAME_1=aks-member-1 export MEMBER_CLUSTER_ID_1=/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${GROUP}/providers/Microsoft.ContainerService/managedClusters/${MEMBER_NAME_1}
使用
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" }
使用
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>