你当前正在访问 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 免费帐户。
- 安装或升级到 Azure CLI 的最新版本。
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- 必须具有不带中心群集的现有 Kubernetes 舰队资源。 本文中的步骤说明了如何创建不带中心群集的 Kubernetes 舰队资源。 如果已有一个,则可以跳过初始设置,并从升级 Kubernetes 舰队资源的升级中心群集类型开始。
- 本文还包括有关加入成员群集的步骤。 如果打算继续操作,则至少需要一个 AKS 群集。
重要
可以将不带中心群集的 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 舰队资源已升级为具有中心群集,你可以利用以前不可用的功能。 有关示例,请参阅: