KubeCube 多级租户模型
KubeCube (https://kubecube.io) 是由网易数帆近期开源的一个轻量化的企业级容器平台,为企业提供 kubernetes 资源可视化管理以及统一的多集群多租户管理功能。KubeCube 社区将通过系列技术文章解读 KubeCube 的设计特点和技术实现,帮助开发者和用户更快地理解和上手 KubeCube。本文是第二篇,深度解读 KubeCube 的多级租户模型设计。

背景
在我们跟企业交流时,发现不同企业虽然规模不一样,但选择进行容器化的初衷还是为了降本增效、很多企业会选择多个部门共用 K8s 集群或者物理资源,在共享资源的同时,希望有足够的隔离性。
多租户是一种软件架构技术,可以实现多个租户之间资源复用和共享基础设施,方便运营管理,有效节省开发应用成本;同时又可以实现个性化定制,每个租户的数据是隔离的。
当前大部分云供应商都提供了多租户的解决方案来实现 K8s 资源共享和隔离,以满足企业不同组织架构共享一个 K8s 基础设施的需求。我们将容器服务在以往企业落地实施过程中的经验进行了总结,去数据库化采用更轻量更原生的 CRD + Operator 机制,在传统多租户模型基础上加入了项目层级与软件管理过程相对应,形成了新的多级租户模型,适配企业组织架构和软件资源管理的规范,使得企业可以更好的建立统一的多 K8s 集群管理平台。
租户模型介绍
KubeCube 的多级租户模型通过租户和项目实现权限隔离和资源分配。一个租户表示一个组织(部门、团队),做资源隔离。一个项目通常可以表示一个完整业务应用系统,与企业的软件项目管理过程相对应,可以根据业务系统功能分解拆分多个命名空间管理应用子系统。
租户和项目都是跨集群的概念,所有租户共享多套 K8s 集群基础设施,通过权限限定和配额管理保证必要的隔离,防止恶意操作带来的风险。
多级租户模型设计
KubeCube 多级租户模型提供租户、项目、空间 3 层模型以满足不同规模企业的组织架构层级,从架构上看是一种层级树形结构,一个租户包含多个项目,一个项目包含多个命名空间,项目包含的命名空间可以位于不同的 K8s 集群。这里的命名空间指的是 K8s 的Namespace,用于实际承接业务应用的部署,是管理的最小单元。

租户和项目在实现上是一个 CRD ,用户只需要在管控 K8s 集群上创建租户和项目的 CR,KubeCube会将租户和项目的 CR 实时同步到所有的计算 K8s 集群。运维人员可以集中式的管理所有的计算 K8s 集群,新增集群时会自动同步租户项目等基础信息,项目管理员只需要在任一 K8s 集群(包括管控和计算集群)创建命名空间即可。

租户、项目和命名空间三者之间的关联关系是通过层级命名空间实现的,每一个租户都关联一个Namespace,每一个项目也都关联一个Namespace,通过租户和项目的Manifest里.spec.namespace字段指定关联的Namespace名称。租户和项目关联的命名空间与实际承载应用的命名空间不同,它是为了解决管理员仅可以在拥有权限的租户和项目下面创建命名空间而引入的一个特殊命名空间。
为了避免供应商锁定和更好的兼容原生 K8s 能力,KubeCube 的权限模型是基于 K8s 原生的 RBAC 能力实现的,我们期望项目管理员仅可以在他拥有权限的项目下面创建命名空间。假设授权给一个项目管理员ClusterRole定义赋予创建Namespace的权限,由于Namespace是集群级别资源,那么他将拥有超出项目范围任意创建命名空间的权限,这与我们的期望不符合。
这里我们引入 HNC (The Hierarchical Namespace Controller)的SubNamespace的概念,它是命名空间级别的资源,负责自动生成和控制Namespace的生命周期。在 KubeCube 的设计中,租户和项目管理员都没有直接创建命名空间的权限,他们通过拥有创建SubNamespace的权限来间接获得创建命名空间权利。SubNamespace是命名空间级别的资源,通过 RBAC 限制SubNamespace操作权限,租户管理员只能在自己租户关联的Namespace下创建SubNamespace,项目管理员只能在自己项目关联的Namespace下创建SubNamespace,再由 HNC 控制器组件根据SubNamespace自动创建Namespace,最终实现管理员仅可以在拥有权限的租户和项目下面创建命名空间的权限。

实际使用中,用户创建租户和项目的 CR 时,KubeCube 程序会自动监听并创建相应的SubeNamespace,再由 HNC 控制器监听并创建Namespace,继而将租户和项目与命名空间关联起来。
KubeCube 租户模型采用多层级命名空间的设计除了考虑权限限定能够兼容原生 K8s 的 RBAC 外,还额外考虑到一个因素是可以放置租户级的公共配置和项目级的公共配置,如针对整个项目的统一监控配置。在必要的时候,还可以指定 HNC 控制器将父级命名空间的资源复制传递到子命名空间,如用户权限绑定RoleBinding配置。
租户项目权限设计
KubeCube 多级租户模型中预设了四种角色,它们的权限由大到小分别是:
-
平台管理员:拥有最高权限,负责管理 K8s 集群,创建租户,设定角色权限和租户配额。
-
租户管理员:拥有某个租户的所有权限,主要负责租户下的项目管理。
-
项目管理员:负责在 K8s 集群上创建命名空间,部署应用,配置监控。
-
项目观察员:仅拥有项目下命名空间和资源的查询权限,可以查看应用日志和监控。
在实现上,四种角色是四个ClusterRole定义,使用CluaterRoleBinding可以给用户授予平台管理员权限,使用RoleBinding可以给用户授予受限的租户管理员、项目管理员和项目观察员权限。在层级命名空间结构中,授予一个用户租户管理员权限相当于在租户关联的命名空间及它所有下级命名空间下创建RoleBinding,同理授予一个用户项目管理员和项目观察员权限相当于在项目关联的命名空间及它所有下级命名空间下创建RoleBinding。

HNC 控制器组件在创建Namespace的时候,可以指定把SubNamespace所在的父命名空间的所有 RoleBinding信息往下复制传递。因此给用户授予租户管理员权限时只需要在指定租户关联的命名空间下创建RoleBinding,授权项目管理员和项目观察员权限时只需要在指定项目关联的命名空间下创建RoleBinding,权限绑定关系会随着命名空间的创建逐级复制下发,最终在命名空间下会拥有不同人不同角色的RoleBinding信息。
资源配额管理设计
KubeCube 的配额管理主要是针对多租户共享的 K8s 基础设施集群的资源分配,平台管理员可以为每一个租户划分每一个 K8s 集群的资源使用额度,包括 CPU、内存、磁盘和GPU的配额大小。租户管理员可以继续给项目划分配额,项目管理员可以给每一个承载应用系统的命名空间划分配额。集群信息Cluster (CRD)里记录着整个集群的可用配额信息,租户和项目的配额信息和已分配信息存储在CubeResourceQuta(CRD)里,命名空间的配额信息使用 K8s 原生ResourceQuota。

实际使用的时候,项目配额可以省略,如 KubeCube 默认集成的管理平台,平台管理员只需要给每一个租户划分每一个 K8s 集群的可用额度,项目管理员在每一个 K8s 集群上创建命名空间的时候都不能分配超出所属租户的资源额度。
总结
KubeCube 多级租户模型突破传统的容器服务多租户模式,采用租户、项目和空间的三级结构,与企业组织架构和软件管理适配,实现更细粒度的资源配额管理,满足企业统一容器平台的构建需求。以多层级命名空间为基础,租户项目权限隔离兼容原生 RBAC,使得 KubeCube 多级租户模型可以更好的兼容原生 K8s 集群,完全能够在已有 K8s 集群上进行原地升级安装 KubeCube。
作者:KubeCube 社区
相关文章:
KubeCube 开源:简化 Kubernetes 落地的六大特性
【视频】KubeCube设计实践,初学者玩好Kubernetes的正确姿势(需下载活动行APP)
更多内容请访问:https://www.kubecube.io
KubeCube 技术交流群:

相关推荐
MATLABSimulink模拟及会议论文,关于具备自动温度控制和能耗分析的智能太阳能热水系统。.zip
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
完美复现基于自适应虚拟谐波阬的光储VSG并网电流谐波抑制模型(Simulink仿真实现)
内容概要:本文围绕基于自适应虚拟谐波阬的光储VSG并网电流谐波抑制模型展开研究,提出了一种结合虚拟同步发电机(VSG)控制与自适应虚拟谐波阬技术的谐波治理方案,旨在有效应对光伏发电与储能系统并网过程中产生的特定次谐波问题。通过在Simulink中构建完整的系统仿真模型,详细实现了VSG的惯量阻尼控制、功率环调控以及自适应谐波阬的频率识别与阻抗重塑机制,能够动态跟踪并抑制并网电流中的谐波成分,从而提升电能质量和系统并网稳定性。文章深入剖析了控制器结构设计、关键参数整定方法及谐波抑制效果的仿真验证过程,充分验证了该方法在复杂工况下的有效性、鲁棒性与工程应用潜力。; 适合人群:具备电力电子、新能源并网、电力系统分析等相关专业知识背景的科研人员与工程技术人员,尤其适用于熟悉Simulink仿真环境、掌握基本控制理论与信号处理技术的研究生、高校教师及企业研发人员。; 使用场景及目标:①应用于光伏-储能联合系统的并网逆变器控制设计;②用于提升VSG并网系统的电能质量与抗扰动能力;③为高比例新能源接入场景下的谐波分析与主动抑制策略提供仿真验证平台与技术支撑;④辅助开展新型电力系统中电能质量治理相关的教学与科研工作。; 阅读建议:建议读者结合提供的Simulink模型文件进行同步仿真操作,重点理解VSG控制架构与自适应虚拟谐波阬模块的耦合关系,关注谐波检测、频率自适应调整与复矢量控制的实现细节,并可通过改变负载条件或电网阻抗参数进行多工况测试,以深入掌握系统的动态响应特性与控制性能边界。
机械三维3D设计图-食品皮带机输送除尘消毒设备.zip
机械三维3D设计图-食品皮带机输送除尘消毒设备.zip
机械三维3D设计图-膜厚测定自动搬送设备.zip
机械三维3D设计图-膜厚测定自动搬送设备.zip
负荷预测基于LSTM-Attention、蜣螂优化DBO-LSTM-Attention的负荷预测研究(Python代码实现)
内容概要:本文围绕基于LSTM-Attention与蜣螂优化算法(DBO)改进的LSTM-Attention模型在电力负荷预测中的应用展开研究,采用Python代码实现。研究结合长短期记忆网络(LSTM)对时间序列长期依赖关系的建模能力与注意力机制(Attention)对关键时间步特征的加权聚焦能力,构建基础预测模型,并引入新型群智能优化算法——蜣螂优化算法(DBO),用于自动寻优模型超参数,有效提升模型收敛速度与预测精度。文中详述了模型架构设计、优化流程集成及实验验证过程,通过对比实验证明该混合模型在负荷预测任务中相较传统方法具有更强的非线性拟合能力和更高的预测准确性。; 适合人群:具备一定Python编程基础和机器学习背景,从事电力系统分析、能源管理或相关领域研究的科研人员及工程技术人员。; 使用场景及目标:①应用于短期或中期电力负荷预测任务,提高电网调度的科学性与经济性;②为深度学习与智能优化算法在能源领域的融合应用提供实践案例,促进模型性能优化与实际部署。; 阅读建议:建议读者结合提供的Python代码,深入理解LSTM-Attention模型的构建细节与DBO优化流程,建议在实际数据集上复现实验,进一步掌握参数调优技巧与模型评估方法。


