适用于 ✔️ 配备中心群集的车队管理器
本文提供多群集托管命名空间的概念性概述。
重要
Azure Kubernetes 舰队管理器预览功能可以通过自助服务方式选择性启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 客户支持部门会尽力为 Azure Kubernetes 舰队管理器预览功能提供部分支持。 因此,这些功能并不适合用于生产。
什么是多群集托管命名空间?
使用目标成员群集上的多群集托管命名空间,平台管理员可以定义资源配额、网络策略、标签、注释和控制对命名空间资源的访问。 然后,Fleet Manager 会自动将命名空间及其关联的资源放置在指定的成员群集上。 这扩展了 AKS 托管命名空间的功能,这提供了在单个群集中逻辑隔离工作负荷的方法。
如果平台管理员在创建或更新命名空间期间指定成员群集,则托管命名空间会生成一个只读群集资源放置(CRP)对象,其中包含 PickFixed 放置策略,以将命名空间传播到所选成员群集。
管理员还可以控制两个关键行为:
- 采用策略:当托管命名空间放置在具有同名非托管命名空间的成员群集上时,如何解决冲突
- 删除策略:是否在删除托管命名空间时删除 Kubernetes 资源
资源配额
平台管理员可以使用 资源配额 来限制命名空间层的 CPU 和内存消耗。
- CPU 请求和限制:设置命名空间中工作负荷可以请求或使用的最小和最大 CPU 资源。
- 内存请求和限制:设置命名空间中工作负荷可以请求或使用的最小和最大内存资源。
注释
为命名空间设置的配额将单独应用于每个单独的成员群集,而不是在命名空间中的所有群集之间共享。
网络策略
网络策略 控制命名空间中 Pod 允许的流量。 可以独立选择三个内置网络策略之一用于入口和出口流量。 如果省略,则不会对命名空间应用任何网络策略。
网络策略分别应用于每个群集,并且不控制命名空间的跨群集网络流量。 每个成员群集在其本地命名空间实例中独立地强制实施自己的网络策略。 网络策略包括:
- 允许所有流量:允许所有网络流量,包括 Pod 与外部终结点之间的流量。
- 允许同一命名空间:允许同一命名空间中的 Pod 之间的所有网络流量。
- 拒绝全部:拒绝所有网络流量,包括 Pod 与外部终结点之间的流量。
注释
虽然平台管理员可以通过托管命名空间配置设置默认网络策略,但拥有足够权限的用户可以创建额外的策略来放宽命名空间的整体网络策略。
标签和批注
平台管理员可以将 Kubernetes 标签 和注释应用到托管命名空间。 默认情况下,每个托管命名空间都有一个内置标签,指示它由 ARM 管理。
采纳政策
创建托管命名空间时,采用策略确定现有非托管命名空间的处理方式(如果目标群集上已存在)。 与 单个群集命名空间类似,可以使用以下选项:
- 从不:如果群集中已存在同名的命名空间,则托管命名空间创建会失败。
- IfIdentical:如果群集中已存在同名的命名空间,则托管命名空间创建会失败,除非命名空间相同。 如果命名空间相同,Fleet 将接管要管理的现有命名空间。
- 始终:托管命名空间始终接管现有命名空间,即使命名空间中的某些资源被覆盖。
在采用期间,托管命名空间可能会接管成员群集上命名空间上的字段,但它不会从命名空间中删除资源。
删除策略
删除策略控制删除托管命名空间资源时 Kubernetes 命名空间的处理方式。 有两个内置选项:
-
保留:在成员群集上维持 Kubernetes 命名空间不变,但删除了
ManagedByARM标签。 - 删除:从成员群集中删除 Kubernetes 命名空间及其中的所有资源。
注释
删除策略“ 删除 ”会完全从目标成员群集中删除 Kubernetes 命名空间资源和其中的资源,即使它之前存在,并由多群集托管命名空间采用。
多群集托管命名空间内置角色
多群集托管命名空间使用现有的 Azure 基于角色的访问控制(RBAC) 控制平面角色 来管理和访问托管命名空间。 现有 数据平面 RBAC 角色 应用于与在 Fleet Manager 中心群集上创建的托管命名空间进行交互。
若要控制对成员群集上托管命名空间的访问,托管命名空间使用以下内置角色,可在命名空间范围内应用这些角色:
| 角色 | Description |
|---|---|
| 适用于成员群集的 Azure Kubernetes Fleet Manager RBAC 读取器 | • 对成员群集上命名空间中大多数对象的只读访问权限。 • 无法查看角色或角色绑定。 • 无法查看机密(阻止通过 ServiceAccount 凭据提升特权)。 |
| 适用于成员群集的 Azure Kubernetes Fleet Manager RBAC 编写器 | • 对命名空间中大多数 Kubernetes 资源的读取和写入访问权限。 • 无法查看或修改角色或角色绑定。 • 可以读取机密(并且可以假定 ServiceAccount 命名空间中的任何机密)。 |
| Azure Kubernetes Fleet Manager 成员群集 RBAC 管理员 | • 对成员群集上命名空间中的 Kubernetes 资源的读取和写入访问权限。 |
| 适用于成员群集的 Azure Kubernetes Fleet Manager RBAC 群集管理员 | • 对成员群集上所有 Kubernetes 资源的完全读/写访问权限。 |
例如,team-A中的开发人员如果拥有托管的team-A命名空间,则需要在中心集群的命名空间中读取和写入 Kubernetes 资源。 它们还需要读取其所在的成员群集上的命名空间中的 team-A 对象。 因此,平台管理员会在机群范围内为其分配 Azure Kubernetes Fleet Manager RBAC 编写器 ,并在托管命名空间范围内 为成员群集分配 Azure Kubernetes Fleet Manager RBAC 读取器 ,以满足这些各自的要求。
后续步骤
- 了解如何 创建和使用多群集托管命名空间。
- 了解如何 查看你有权访问的托管命名空间。