你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

升级 Azure Kubernetes 舰队管理器资源的中心群集类型

在本文中,你将了解如何将没有中心群集的 Azure Kubernetes 舰队管理器(Kubernetes 舰队)资源升级到具有中心群集的 Kubernetes 舰队资源。 在没有中心群集的情况下创建 Kubernetes 舰队资源时,不会为 Kubernetes 舰队资源创建中心 Azure Kubernetes 服务 (AKS) 群集。 创建包含中心群集的 Kubernetes 舰队资源时,会创建一个中心托管 AKS 群集,以启用工作负载业务流程和第 4 层负载均衡等方案。

有关详细信息,请参阅选择 Azure Kubernetes 舰队管理器选项

先决条件和限制

如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户

重要

可以将不带中心群集的 Kubernetes 舰队资源升级到具有中心群集的 Kubernetes 舰队资源。 但已有中心群集的 Kubernetes 舰队资源无法降级到不带中心群集的 Kubernetes 舰队资源。 与具有中心群集的 Kubernetes 舰队资源关联的所有配置选项和设置是不可变的,并且在创建或升级时间后无法更改。 只能通过 Azure CLI 将不带中心群集的 Kubernetes 舰队资源升级到具有中心群集的资源。 目前没有等效的 Azure 门户体验。

初始设置

首先,创建资源组和不带中心群集的 Kubernetes 舰队资源,并将现有 AKS 群集加入为成员。 需要对要与舰队资源关联的每个成员群集重复使用 az fleet member create 命令。

RG=myResourceGroup
LOCATION=eastus
FLEET=myKubernetesFleet
FLEET_MEMBER=<name-identifying-member-cluster>
SUBSCRIPTION_ID=<your-subscription-id>
CLUSTER=<your-aks-cluster-name>

# Create resource group
az group create -n $RG -l $LOCATION

# Create a hubless fleet resource 
az fleet create -g $RG -n $FLEET

# Join member cluster to hubless fleet resource
az fleet member create --name $FLEET_MEMBER --fleet-name $FLEET --resource-group $RG --member-cluster-id /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RG/providers/Microsoft.ContainerService/managedClusters/$CLUSTER

升级 Kubernetes 舰队资源的中心群集类型

要升级 Kubernetes 舰队资源的中心群集类型,请将 az fleet create 命令与 --enable-hub 标志集一起使用。 请务必包括任何其他相关配置选项,因为舰队资源在完成此操作后将处于不可变状态。

# Upgrade the Kubernetes fleet resource without a hub cluster to one with a hub cluster
az fleet create --name $FLEET --resource-group $RG --enable-hub 

验证升级

运行 az fleet create 命令以升级舰队资源后,通过查看输出来验证升级是否成功。 provisioningState 读取 Succeeded,并且 hubProfile 字段应存在。 例如,请参阅下列输出:

{
  ...
  "hubProfile": {
    "agentProfile": {
      "subnetId": null,
      "vmSize": null
    },
    "apiServerAccessProfile": {
      "enablePrivateCluster": false,
      "enableVnetIntegration": false,
      "subnetId": null
    },
    "dnsPrefix": "contoso-user-xxxx-xxxxxxx",
    "fqdn": "contoso-user-flth-xxxxxx-xxxxxxxx.hcp.eastus.azmk8s.io",
    "kubernetesVersion": "1.28.5",
    "portalFqdn": "contoso-user-flth-xxxxxxx-xxxxxxxx.portal.hcp.eastus.azmk8s.io"
  },
  "provisioningState": "Succeeded"
  ...
}

重新加入成员群集

要将成员群集重新加入到新升级的舰队资源,请对每个成员群集使用 az fleet member reconcile 命令。

az fleet member reconcile -g $RG -f $FLEET -n $FLEET_MEMBER

注意

升级后首次加入舰队资源的任何 AKS 群集无需使用 az fleet member reconcile 进行协调。

验证成员群集是否已成功加入

对于重新加入新升级舰队的每个成员群集,查看输出并验证 provisioningState 是否会读取 Succeeded。 例如:

{
  ...
  "provisioningState": "Succeeded"
  ...
}

验证功能

需要访问中心群集的 Kubernetes API。 如果你没有访问权限,请参阅访问舰队中心群集 Kubernetes API

要验证新升级的 Kubernetes 舰队资源是否正常运行,以及成员群集是否已成功加入,请确认你能够使用 kubectl get memberclusters 命令访问中心群集的 API 服务器。

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

NAME           JOINED   AGE
aks-member-1   True     2m
aks-member-2   True     2m
aks-member-3   True     2m

清理资源

完成后,可以通过删除资源组来移除舰队资源和相关资源。 请记住,如果 AKS 群集驻留在不同的资源组中,则此操作不会移除这些群集。

az group delete -n $RG

后续步骤

现在,Kubernetes 舰队资源已升级为具有中心群集,你可以利用以前不可用的功能。 有关示例,请参阅: