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

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

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

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

重要

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

已知的限制

  • 当托管机群命名空间采用单个群集 托管 Kubernetes 命名空间 ,反之亦然时,可能会导致所有权冲突。 为避免这种情况,请对托管机队和 Kubernetes 命名空间使用删除策略 keep
  • 群集必须是托管机群命名空间的机群管理器管理的成员。
  • 群集的 Kubernetes 版本必须至少为 1.30.0。 此版本以下的群集 不会 阻止群集上的用户修改已放置的 Kubernetes 资源。
  • 分配给托管机群命名空间范围的 RBAC 角色同样会授予对成员群集中具有相同名称的任何非托管 Kubernetes 命名空间的访问权限。

在您开始之前

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

  • 需要 fleet Azure CLI 扩展 1.8.0 或更高版本。 您可以使用az extension addaz 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

注释

这些设置是可选的:网络策略、计算配额、删除和采用策略、标签和注释。

使用网络策略时,具备 Microsoft.ContainerService/managedClusters/networking.k8s.io/networkpolicies/write 操作权限(例如 Azure Kubernetes Service RBAC Writer)的用户,被分配了 Microsoft Entra ID 角色后,可以通过 Kubernetes API 添加更多网络策略。

例如,如果管理员为入口/出口应用 Deny All 策略,并且用户通过 Kubernetes API 为命名空间应用 Allow 策略,则 Allow 策略优先于 Deny All 策略,并允许流量流向命名空间。 此累加行为是网络策略的标准。

分配用户或组访问权限

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

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

以下示例为用户在任何接收托管机群命名空间的群集上,分配成员群集的 Azure Kubernetes Fleet Manager RBAC Writer 角色。

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 参数。 托管命名空间将传播到列表中的所有群集。

在此示例中,托管命名空间部署到contoso-prd-01-fmcontoso-prd-02-fm

az fleet namespace create \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name my-managed-namespace \
    --member-cluster-names contoso-prd-01-fm contoso-prd-02-fm

删除成员群集

可以从托管机群命名空间中删除成员群集,方法是将其从所需的命名空间列表中排除。

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

在此示例中,从中删除托管命名空间 contoso-prd-02-fm

az fleet namespace create \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name my-managed-namespace \
    --member-cluster-names contoso-prd-01-fm

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

使用 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   chinanorth3    my-managed-namespace  Succeeded           test-rg

删除托管舰队命名空间

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

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

警告

删除一个设置为DeletePolicy 的车队管理命名空间是一个永久的行为。 如果不确定,应更新策略以 keep 保留命名空间。

始终删除 Azure RBAC 分配以避免出现无效权限。

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

可以从 Fleet Manager 内部或通过 Kubernetes 中心创建新的托管机群命名空间。

从Fleet Manager开始:

  • 在 Azure 门户中,导航到 Azure Kubernetes 舰队管理器资源。
  • 在左侧菜单中的 “舰队资源”下,选择 “命名空间”。
  • 从菜单中选择“ + 创建”,然后选择 “托管机群命名空间”。

用于在 Azure Kubernetes Fleet Manager 中创建托管机群命名空间的 Azure 门户菜单的屏幕截图。

从 Kubernetes 中心开始:

  • 在 Azure 门户中打开 Kubernetes 中心 - 托管命名空间
  • 从菜单中选择“ + 创建”,然后选择 “托管机群命名空间”。
  • 选择 订阅机群管理器 实例。

用于创建托管机群命名空间的 Azure 门户 Kubernetes 中心菜单的屏幕截图。

  • 范围选择以下选项之一:
    • 新建 - 创建新的 Kubernetes 命名空间,该命名空间在 Fleet Manager 中心群集上不存在。 输入新命名空间 的名称
    • 转换为托管 - 在 Fleet Manager 中心群集上使用现有的 Kubernetes 命名空间。 在 Fleet Manager 中心群集上的命名空间列表中选择命名空间

Azure 门户的屏幕截图,其中显示了“基本信息”选项卡,其中已完成新的托管机群命名空间的项目详细信息。

分配用户或组访问权限

选择访问其分发到的群集上的托管机群命名空间的 Microsoft Entra 用户和组。

Azure 门户的屏幕截图,其中显示了新托管机群命名空间的已完成访问详细信息。

注释

此步骤是可选的。 无需分配用户或组即可创建和分发托管机队命名空间。 这样,就可以在不立即授予访问权限的情况下分发命名空间。

添加网络策略和计算配额

控制其分发到的每个群集上进出命名空间的网络流量流,以及为命名空间定义 CPU 和内存资源配额。

Azure 门户的屏幕截图,显示完成的新托管群组命名空间的网络策略和计算配额。

注释

这些设置是可选的。 无需应用网络策略或配额控制,即可创建和分发托管机队命名空间。

对所分配的 Microsoft Entra ID 角色执行 Microsoft.ContainerService/managedClusters/networking.k8s.io/networkpolicies/write 操作(例如 Azure Kubernetes Service RBAC Writer)的用户可以通过 Kubernetes API 添加更多网络策略。

例如,如果管理员为入口/出口应用 Deny All 策略,并且用户通过 Kubernetes API 为命名空间应用 Allow 策略,则 Allow 策略优先于 Deny All 策略,并允许流量流向命名空间。 此累加行为是网络策略的标准。

选择成员群集

通过按如下所示添加托管命名空间来定义要向其分发托管命名空间的成员群集。

  • 从菜单中选择“ + 添加”。
  • “选择成员群集 ”对话框中,搜索成员群集,选中该框以选中它们。
  • 最后,选择 “选择” 以添加成员群集。

Azure 门户的屏幕截图,其中显示了选择托管新的托管机群命名空间的两个成员群集。

注释

此步骤是可选的。 如果未提供任何成员群集,则托管机队命名空间仅部署到 Fleet Manager 中心群集。 稍后可以添加成员群集。

设置标签、批注和标记

定义可选的 Kubernetes 标签和注释,以及 Azure 资源管理器 (ARM) 标记,这些标记提供可用于自动化和资源管理的元数据。

Azure 门户的屏幕截图,其中显示了新托管机队命名空间的标签和注释的设置。

注释

此步骤是可选的。 稍后可以管理标签、批注和标记。

创建托管车队命名空间

为新的托管机群命名空间配置所有属性后,可以通过选择“ 创建”来确认创建命名空间之前的详细信息。

立即启动 Azure 资源管理器部署,这会启动 Fleet Manager 工作负荷放置,以便将命名空间分发到所选群集。

部署完成后,可以在机群管理器的命名空间列表中找到托管机群命名空间。

Azure 门户的屏幕截图,其中新的托管机队命名空间与其他命名空间一起列在中心集群中。

若要查看跨集群推出 Kubernetes 命名空间,请使用 资源分配,查找与托管集群命名空间同名的资源分配。

Azure 门户的屏幕截图,其中显示了新托管机队命名空间的资源放置状态。

配置现有的托管机群命名空间

可以从 Fleet Manager 中或通过 Kubernetes 中心查找托管机群命名空间。

从Fleet Manager开始:

  • 在 Azure 门户中,导航到 Azure Kubernetes 舰队管理器资源。
  • 在左侧菜单中的 “舰队资源”下,选择 “命名空间”。

从 Kubernetes 中心开始:

修改配置

通过在“托管集群命名空间”概览页面中,选择相应项旁边的编辑,以修改网络策略、资源配额、标签、注释和标记。

选择标签、批注或标记旁边的 编辑 将打开一个对话框,可在其中修改这三个项目中的任何一项。

选择任何网络策略或资源配额选项旁边的 编辑 将打开一个对话框,可在其中修改其中任何项。

Azure 门户的屏幕截图,显示了托管的机队命名空间的概述屏幕,并以红色框突出显示编辑选项。

修改用户或组访问权限

托管机群命名空间是一种 Azure 资源管理器(ARM)资源,因此可以通过在“管理机群命名空间概述”屏幕的左侧导航中选择 访问控制(IAM) 来实现管理用户和组访问。

修改成员群集

在托管机群命名空间概述中,选择左侧导航中的 成员群集

若要删除成员群集,请执行以下作:

  • 通过勾选行左侧框来选择要删除的群集。
  • 在顶部导航中选择“ 删除”。
  • 确认作并选择“ 删除”。

添加成员群集:

  • 从菜单中选择“ + 添加”。
  • “添加成员群集 ”对话框中,搜索成员群集,选中该框以选中它们。
  • 最后,选择 “添加” 以添加成员群集。

Azure 门户的屏幕截图,其中显示了已选择要从托管机群命名空间中删除的单个成员群集。

修改托管机群命名空间的群集后,将更新概述以显示主动托管命名空间的群集。

删除托管舰队命名空间

在托管机群命名空间概述上,选择顶部导航中的 “删除 ”。

删除托管群命名空间 确认中,选择您所需的选项:

  • 保留命名空间,删除管理功能: 托管机队命名空间转换为标准 Kubernetes 命名空间,保留在 Fleet Manager 中心群集和成员群集上,但不再由 Azure 资源管理器(ARM)管理。
  • 删除命名空间和所有关联的资源: 删除托管机队命名空间 ARM 资源,以及 Fleet Manager 中心群集和成员群集上的 Kubernetes 命名空间。

警告

删除命名空间和所有关联资源是一个永久性操作。 如果不确定,应选择保留命名空间。

在这两种情况下,将删除 Azure RBAC 分配项以避免无效权限。

后续步骤