依托青云科技KubeSphere容器平台,帮助用户实现资源分级管理

时间 • 2024-04-22 09:11:24
项目
级别
资源
权限

K8s是容器编排和分布式应用程序部署的领导者。在K8s环境中,您只关心应用程序的业务逻辑,从而减轻服务器网络和存储等管理负担。对于用户来说,K8s是一个非常复杂的容器编排平台,学习成本非常高。青云技术qingcloud.com,688316KubeSphere集装箱平台,抽象了底层K12s,构建了高度产品化、全栈多租户集装箱云平台,提供了强大、安全、功能丰富、终极体验的Web控制台,K12s的使用阈值很高。它解决了云原生生态工具的复杂性和其他问题,使用户能够专注于快速迭代业务。它的多维数据监控为定位问题提供了很大的帮助。为什么要在KuberSphere中实现分层管理?KubeSphere允许您在租户之间共享资源,并根据分配的角色对各种资源进行操作。租户与资源之间、资源与资源之间的自由度较高,权限粒度较大。在我们的系统中,资源具有一定的权限级别。例如,低级用户可以通过邀请和授权等操作来操作高级资源。此外,低级项目的pod可以调度到高级节点。对于诸如在不同层次之间操作资源的问题,我们在KubeSphere的基础上实现了层次管理。等级系统等级是指根据定义的标准对整个系统进行分解和分类。我们将其抽象为金字塔模型,即从基础到顶部的层次结构,公共资源作为金字塔的基础,最高权限的管理员作为顶部,其他资源根据权限级别进行分层,低级别的资源无法访问高级别的资源,高级别的资源可以访问该级别下的所有资源。我们建立了这样一个层次化的系统,即兴趣减少和层次分离。

如何实现层次管理我们定义了一个标签kubernetes.io/level来表示层次。以多节点集群为例,首先对用户、企业空间、节点等资源进行代表级别的标记。如果要用户加入企业空间或项目,则必须加入的企业空间或项目级别不能高于用户级别,并且同一项目绑定企业空间,要求项目的级别不高于企业空间的级别,为了管理资源,认为同一项目下的资源级别是相同的,基于项目创建的资源级别,如负载、Pod、服务等,与项目一致。与此同时,它将为Pod添加节点亲和力,以便Pod被调度到不超过权限级别的节点。

例如,我们正在创建一个权限级别3的用户演示用户,可以参与三个或更少的企业空间或项目。

如果您创建了一个权限级别为2的项目,则基于该项目创建的资源(如加载、pod和存储)的权限级别也将为2。

基于demo-ns项目,我们创建了一个权限级别为2的nginx Pod,并添加了一个节点关联性,它需要调度到权限级别为2或更低的节点。

如何实现资源的升降水平在分层管理系统中,支持等级的无限划分,只需定义一个中间值,就可以在两个等级之间插入一个新等级,无需操作其他资源;对资源进行升降水平时,只需修改对应资源的label标签,即可对资源操作升降水平。当然,在升级资源的时候,我们需要对资源进行测试,以确保升级时较高资源的权限级别不会低于目标级别,升级时较低资源的权限级别不会低于目标级别。如果升降机和升降机的运行条件不符合,则应调整相应的资源。

在分层系统中,高级别Pod需要能够访问低级别Pod,但低级别Pod无法访问高级别Pod,因此需要一种方法来确保不同级别Pod之间的网络通信。如果不启用网络隔离,则会添加黑名单网络策略,因为Pod之间的网络是可互操作的。

podSelector {}作用于项目中的所有Pod,并阻止所有流量的流入。然后,释放大于目标级别(在此为2)的标记级别的通信流入(不限制Ingress通信)

KubeSphere解决了用户构建、部署、管理和可观察性方面的问题,因为它允许在多个租户之间共享资源。但是,在资源具有权限级别的情况下,低级资源可以操纵高级资源,从而导致资源管理问题。为了解决这一问题,我们以KubeSphere为基础,解决租户和资源以及资源和资源的分层管理,并在项目的网络策略中添加了黑名单和白名单策略,以加强项目之间的网络隔离,使资源管理更加安全。作者:徐伟,航空航天网络研发工程师