Fleet Manager 中心群集概述

启用后,Fleet Manager 中心群集充当使用 资源放置跨成员群集进行 Kubernetes 资源传播的中心管理点。

什么是 Fleet Manager 中心群集?

在 Azure Kubernetes Fleet Manager 中,中心群集在管理多个成员群集方面发挥着重要作用,但它们是可选的。

中心群集通过 KubeFleet 的托管版本促进资源放置和机群托管命名空间。

在此配置中,机队由以下组件组成:

配置中心群集时的机群资源图,包括中心群集代理和成员群集代理。

  • 舰队中心代理:一个 Kubernetes 控制器,用于创建和协调中心群集中所有与舰队相关的自定义资源 (CR)。
  • 舰队成员代理:一个 Kubernetes 控制器,用于创建和协调成员群集中所有与舰队相关的 CR。 此控制器从中心群集拉取最新的 CR,并一致地协调成员群集以匹配所需状态。

中心群集配置

Fleet Manager 中心群集是一个完全托管的 Azure Kubernetes 服务 (AKS) 群集,具有以下属性:

  • 群集名称和位置: 中心群集始终命名 hub ,并在与机群管理器相同的 Azure 区域中创建。
  • 中心群集的 Azure 资源组:中心群集 AKS 资源以命名格式 FL_{fleet_manager_resource_group}_{fleet_manager_name}_{azure_region}在托管资源组中创建。
  • 中心群集资源的 Azure 资源组: 与任何 AKS 群集一样,中心群集具有 Azure 资源,例如代理节点池虚拟机规模集和以命名格式 MC_FL_{fleet_manager_resource_group}_{fleet_manager_name}_{azure_region}在托管资源组中创建的虚拟网络。
  • 中心群集节点: 中心群集有一个节点池,其中包含运行 Azure Linux 的单个节点。 节点不会运行任何 Pod,并且不会影响中心群集性能。 从 Azure CLI 创建中心群集时,可以使用参数选择节点虚拟机 (VM) SKU 类型 --vm-size 。
  • 网络配置: 公共中心群集具有具有关联的公共 IP 地址的公共 API 服务器。 配置为专用访问时,只能通过 Azure 虚拟网络访问 API 服务器。

中心群集限制

中心群集具有以下限制,确保它按资源传播和管理所需的方式运行:

  • 使用 Azure CLI (az aks command invoke) 进行命令调用已在中心集群中禁用。
  • 本地身份验证已禁用: 禁用通过管理员 kubeconfig 进行访问,确保通过 Microsoft Entra ID 专门处理身份验证,通过集中访问控制增强安全性。 使用 az fleet get-credentials 获取 kubeconfig 中心群集。
  • 拒绝分配: 通过 Azure 拒绝分配阻止对中心群集的 Azure 配置和关联的资源的更改。 已应用以下拒绝分配规则:
    • FLRG-DenyAssignments-{guid}:应用于中心群集资源组,阻止用户修改中心群集。
    • kubernetes.azure.com/{guid} (可选):此拒绝分配可防止用户修改中心群集 AKS 资源(虚拟机规模集、网络),如 AKS 节点资源组锁定中所述。
  • 未实例化已应用的资源: 中心群集不会将应用的 Kubernetes 资源计划到中心群集节点上。 必须使用信封对象应用某些 Kubernetes 资源,以避免对中心群集产生副作用。 有关信封对象的详细信息,请参阅 信封对象的文档。

受保护资源访问限制

Important

从 2027 年 1 月 31 日起,Fleet Manager hub 集群拒绝访问受保护的服务托管资源和特权接口。 除了Azure基于角色的访问控制(Azure RBAC)外,还适用这些限制。 之前允许某个请求的 Azure 角色分配不会覆盖这些限制。

以下 Kubernetes API 请求被拒绝:

  • 所有身份仿冒请求。
  • 名称以 fleet- 或 kube- 开头的命名空间中,除 list、get 和 watch 之外的所有操作。
  • get、list 和 watch 对名称以 fleet- 或 kube- 开头的命名空间中的 Pod、Secret、服务账户、角色和角色绑定的请求。
  • 跨命名空间 list 和 watch Pod、机密、服务帐户、角色和角色绑定的请求。
  • 编写群集角色和群集角色绑定请求。
  • 读取和写入对 nodes/proxy 子资源的请求。
  • 编写名称以 fleet-builtin- 开头的验证准入策略、验证准入策略绑定以及验证 Webhook 配置的请求。
  • 用于验证准入策略、验证准入策略绑定和验证 Webhook 配置的集合删除请求。

客户管理的命名空间中的其他支持操作仍然可用。

确定受影响的 Fleet Manager 资源和自动化

如果启用了中心群集,则 Fleet Manager 资源可能会受到影响。 使用Azure Resource Graph Explorer查找以下资源:

Resources
| where type =~ "microsoft.containerservice/fleets"
| where isnotnull(properties.hubProfile)
| project id, name, subscriptionId, resourceGroup, location

拥有中心群集并不一定意味着需要采取措施。 仅当你的用户、脚本、控制器或 CI/CD 管道将其中一个受限请求发送到中心群集时,你才会受到影响。

审查访问中心群集的自动化,用于以下情况:

  • 模拟选项或标头,包括 --as 和 --as-group。
  • 向nodes/proxy发出的请求。
  • 对名称以 fleet- 或 kube- 开头的命名空间的访问。
  • 群集范围或 --all-namespaces 列出并监视受保护资源的请求。
  • 对群集角色或群集角色绑定的更改。
  • 对名称以 fleet-builtin-开头的验证资源的更改。
  • 删除验证资源集合

更新受影响的自动化

2027 年 1 月 31 日之前:

  • 将客户拥有的资源和自动化移出命名空间,其名称以 fleet- 或 kube-开头。
  • 将对 Pod、机密、服务帐户、角色和角色绑定的列出和监视请求限定到客户托管命名空间。
  • 对于资源放置,请将群集角色和群集角色绑定包装在一个 ClusterResourceEnvelope中。 有关详细信息,请参阅 使用信封对象安全地放置资源。
  • 若要以编程方式访问中心群集,请使用专用Microsoft Entra标识,为其分配所需的最低特权的 Fleet Manager RBAC 角色,并且不使用标识模拟。
  • 停止使用 nodes/proxy 子资源。
  • 不要修改名称以fleet-builtin-开头的验证资源。
  • 将对验证资源集合的删除替换为仅限于客户管理资源的请求。
  • 在生效日期之前测试更新后的自动化流程。

如果在 2027 年 1 月 31 日之前未更新受影响的自动化,则其受限请求会返回“授权被拒绝”响应。 依赖于这些请求的脚本、控制器、部署或操作工作流可能会失败或反复重试。 如果不使用任何受限操作,则无需执行任何操作。

客户的要求

为了使 Fleet Manager 创建并保持中心群集使用最新修补程序,请确保:

  • Azure 策略不会阻止群集创建。 中心群集是托管的 AKS 群集。 如果无法创建 AKS 群集,则无法创建 Fleet Manager 中心群集。

  • 中心群集具有 Internet 访问权限。 需要出站连接才能安装更新。 具有用户定义的路由(UDR)或防火墙规则的网络上的专用中心可能会阻止出站连接。 若要详细了解出站连接,请参阅有关 AKS 出站网络的文档。

  • 无需管理 Fleet Manager 中心群集的更新。 Microsoft 会在 AKS 提供时,自动将中心群集更新到最新版本的 Kubernetes 或节点映像。 可以在 AKS 发布跟踪器上跟踪更新版本。