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

创建和配置托管机群命名空间(预览版)

适用于: ✔️具有中心群集的 Fleet Manager

本文介绍如何使用 Fleet Manager 创建和配置托管机群命名空间,该命名空间定义多个群集上命名空间的资源配额、网络策略和委派用户访问。

如果要查看或访问有权访问的现有托管机群命名空间,请参阅 查看和访问托管机群命名空间

重要

Azure Kubernetes 舰队管理器预览功能可以通过自助服务方式选择性启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 客户支持部门会尽力为 Azure Kubernetes 舰队管理器预览功能提供部分支持。 因此,这些功能并不适合用于生产。

已知的限制

  • 当托管舰队命名空间采用某个群集托管 Kubernetes 命名空间,或出现反之情况时,可能会导致所有权出现冲突。 要避免这种情况,需对托管舰队和 Kubernetes 命名空间都使用删除策略 keep
  • 你指定的群集必须是由同一舰队管理器管理的舰队成员,该管理器同时也控制着托管舰队命名空间。
  • 群集的 Kubernetes 版本必须至少为 1.30.0。 此版本以下的群集 不会 阻止群集上的用户修改已放置的 Kubernetes 资源。
  • 分配给托管舰队命名空间范围的 RBAC 角色将授予对成员群集上具有相同名称的任何非托管 Kubernetes 命名空间的等效访问权限。

在您开始之前

  • 需要一个具有活动订阅的 Azure 帐户。 免费创建帐户

  • 需要具有中心群集的机群管理器。 如果没有,请参阅 创建至少一个 Azure Kubernetes 服务(AKS)群集并将其加入机群

  • 阅读概述,了解托管机群命名空间的概念。

  • 需要安装 Azure CLI 2.78.0 或更高版本才能完成本文。 若要安装或升级,请参阅安装 Azure CLI

  • 需要 fleet Azure CLI 扩展 1.8.0 或更高版本。 可以使用 [az extension add][az-extension-add] 和 az extension update 命令安装并更新到最新版本。

    # Install the extension
    az extension add --name fleet
    
    # Update the extension
    az extension update --name fleet
    
  • 使用 az extension show 命令确认机群扩展版本至少为 1.8.0。

    az extension show --name fleet
    
  • 为订阅 ID、资源组、机队和机群成员设置以下环境变量:

    export SUBSCRIPTION_ID=<subscription-id>
    export GROUP=<resource-group-name>
    export FLEET=<fleet-name>
    export FLEET_ID=<fleet-id>
    
  • 使用 az account set 命令设置默认 Azure 订阅。

    az account set --subscription ${SUBSCRIPTION_ID}
    

创建新的托管的车队命名空间

使用 az fleet namespace create 命令创建新的多群集托管命名空间。

    az fleet namespace create \
        --resource-group $GROUP \
        --fleet-name $FLEET \
        --name my-managed-namespace \ 
        --annotations annotation1=value1 annotation2=value2 \
        --labels team=myTeam label2=value2 \
        --cpu-requests 1m \
        --cpu-limits 4m \
        --memory-requests 1Mi \
        --memory-limits 4Mi \
        --ingress-policy allowAll \
        --egress-policy allowAll \
        --delete-policy keep \
        --adoption-policy never

委托访问托管集群命名空间的权限

现在,您可以使用其中一个内置角色,在成员群集中授予用户对托管群集命名空间的访问权限。

使用 az role assignment create 命令创建角色分配。

以下示例将为用户分配“适用于成员群集的 Azure Kubernetes 舰队管理器 RBAC 编写者”角色,该角色适用于任何接收 my-managed-namespace 托管舰队命名空间的群集

az role assignment create \
    --role "Azure Kubernetes Fleet Manager RBAC Writer for Member Clusters" \
    --assignee <USER-ENTRA-ID> \
    --scope "$FLEET_ID/managedNamespaces/my-managed-namespace"

将成员群集添加到托管机群命名空间

可以通过指定成员群集名称的所需列表来控制要将托管命名空间部署到哪个成员群集。 在不在指定列表中的成员群集上,具有相同名称的任何未管理的命名空间将保持不变。

指定要将托管命名空间部署到成员群集的完整列表,使用 az fleet namespace create 命令和 --member-cluster-names 参数。 托管命名空间将传播到列表中的所有群集。

在此示例中,托管命名空间部署到 clusterAclusterB以及 clusterC

az fleet namespace create \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name my-managed-namespace \
    --member-cluster-names clusterA clusterB clusterC

从托管机群命名空间中删除成员群集

你可从托管舰队命名空间中删除成员群集,方法是将其从需部署该命名空间的成员群集列表中排除。

使用带有 az fleet namespace create 参数的 --member-cluster-names 命令,指定托管命名空间需保留的成员集群列表。 从列表中被排除的任意群集中删除托管命名空间。

在此示例中,从中删除托管命名空间 clusterC

az fleet namespace create \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name my-managed-namespace \
    --member-cluster-names clusterA clusterB

查看受管群集命名空间的配置

使用 az fleet namespace show 命令查看特定多群集托管命名空间的详细信息。

az fleet namespace show \ 
    --resource-group $GROUP \ 
    --fleet-name $FLEET \ 
    --name my-managed-namespace \ 
    -o table 

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

AdoptionPolicy  DeletePolicy   ETag                                    Location   Name                  ProvisioningState   ResourceGroup
--------------  ------------   -------------------------------------   --------   --------------------  -----------------   -------------
Always          Delete         "aaaaaaaa-0b0b-1c1c-2d2d-333333333333   westus2    my-managed-namespace  Succeeded           test-rg

删除托管舰队命名空间

使用 az fleet namespace delete 命令删除多群集托管命名空间。

az fleet namespace delete \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name my-managed-namespace 

重要

删除托管命名空间时,将删除托管命名空间上放置的 RBAC 角色,而不考虑删除策略配置。

后续步骤