启用后,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和watchPod、机密、服务帐户、角色和角色绑定的请求。 - 编写群集角色和群集角色绑定请求。
- 读取和写入对
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 发布跟踪器上跟踪更新版本。