K8s 多租户方案的挑战与价值

news2024/10/7 11:21:37

在当今企业环境中,随着业务的快速增长和多样化,服务器和云资源的管理会越来越让人头疼。K8s 虽然很强大,但在处理多个部门或团队的业务部署需求时,如果缺乏有效的多租户支持,在效率和资源管理方面都会不尽如人意。

本文将深入探讨 K8s 多租户的概念、其在现代企业中的应用价值,以及实现这一机制所面临的技术挑战和解决方案。

K8s 多租户的价值

“多租户”是一种软件架构的设计方式,允许多个用户(租户)共享相同的系统或程序组件,同时保持各自数据的隔离性和安全性。在 K8s 环境中,实现有效的多租户机制意味着能够在同一 K8s 集群中运行多个独立的租户工作负载,而无需担心资源冲突、数据泄露或安全问题。

没有多租户支持的挑战

当企业购买很多服务器并安装 K8s 后,企业内部多个部门 (例如 20 个) 可能都需要在同一集群上部署各自的业务应用。在没有多租户机制的情况下,这种集群使用方式有很多弊端:

  1. 低效率:每个部门不能自主使用集群,必须通过集群管理员进行部署和管理。不仅减慢了部署进程,还可能造成排队等待的情况,大大降低工作效率。

  2. 资源利用不充分:业务应用不能混合部署,需要对服务器资源进行划分,最终可能会导致资源无法充分利用,造成浪费。

  3. 业务和资源管理混乱:在一个没有租户隔离的集群中,各部门的业务相互干扰,难以管理。随着时间的推移,集群的管理和运维变得越来越复杂。

  4. 规模扩展受限:在一个单一租户的环境下,集群难以支持多样化的业务需求,限制了企业的扩展能力。

多租户架构的优势

一旦有了多租户能力,企业就可以真正意义上构建自己的云环境,实现资源的最大化利用和高效管理:

  1. 资源管理有序:通过账户系统,每个部门可以自主管理其资源使用,无需担心资源分配和使用上的混乱。

  2. 效率大幅提升:各部门可以独立进行业务部署和更新,无需麻烦集群管理员,极大提高了操作效率和业务的灵活性。

  3. 资源扩展灵活:集群管理员只需关注整个集群的资源状况,而不是单个业务应用,资源按需分配和扩展会更加灵活和高效。

  4. 业务隔离保障稳定性:不同部门的业务应用在集群中彼此隔离,避免了相互干扰,保障了业务的稳定运行。

K8s 多租户的挑战

在 K8s 环境中实现多租户架构难度非常大,不是简单使用命名空间的能力就能实现的,还涉及到非常多的技术挑战。

挑战 1:防止越权

在 K8s 多租户环境中,限制每个用户的权限是关键。当多个用户共享一个集群时,一个权限过高的用户可能会对整个集群构成致命威胁。例如,禁止用户访问服务器节点或执行节点级别的操作,如使用 kubectl get node 命令。此外,需要限制其他高风险操作,如启用容器特权模式、共享主机文件系统、端口和网络等。

为了解决这些问题,Sealos 在其底层架构中采用了多种隔离手段。例如,使用 OpenEBS 进行存储的块级别隔离,Firecracker 以及 Cloud Hypervisor 用于计算运行时的隔离,以及通过 Cilium 实现网络隔离。这些措施确保即使在共享环境中,每个租户的操作也不会影响到其他租户。

挑战 2:用户的概念、授权与命名空间绑定

K8s 本身不具备原生的用户管理系统。因此,需要通过扩展功能来构建用户概念,与第三方用户系统对接,为每个用户生成独立的 kubeconfig 认证文件或 token。此外,需要建立用户与命名空间 (namespace) 之间的多对多关系,并为用户分配适当的权限。

Sealos 的设计允许管理员将用户加入特定的命名空间,并对其角色进行管理,从而有效地控制权限。这样管理员就可以细粒度地管理用户权限,确保每个用户只能访问和修改他们被授权的资源。

挑战 3:计量与配额管理

在多租户环境中,合理地分配和监控资源使用是另一个重大挑战。需要明确每个租户使用了多少 CPU、内存、磁盘和网络资源,并在资源使用超出配额时进行适当的处理。网络计量尤其复杂,需要区分内外网流量,而且要追踪到达特定容器的流量,并确定这些容器属于哪个租户。

Sealos 采用 eBPF 技术来监控网络流量,并通过控制器将流量数据与租户信息相关联,存储到数据库中。这样可以与计量计费系统对接,实现对资源使用的准确计费。对于计算和存储资源的监控,Sealos 同样采用了控制器来收集和管理这些信息。

Sealos 多租户的挑战

如果说上面的这些问题很难解决,那么 Sealos 的场景是在上述难度上乘以了 10 倍,因为 Sealos 选择了在公网这个不可信的环境中解决多租户问题,意味着给任意的开发者公开注册,然后一起共享一个 K8s 集群。

公网环境的不可信性和开放性使得实现多租户变得尤为复杂。在这种环境下,任何开发者都可以注册并共享同一个 K8s 集群,这就带来了巨大的安全和稳定性挑战。但是,如果能够成功实现,其好处也是显而易见的:

  1. 成本效益:用户无需单独搭建和维护完整的集群,显著降低了云服务的使用成本。
  2. 资源优化:允许每个容器运行在更小的规模上,充分利用平台的弹性和资源。
  3. 强隔离性:在公网环境中实现良好的多租户隔离,可以确保更高的安全性和稳定性。

前途的光明的,但挑战也是巨大的。

挑战 1:网关限制

Sealos 目前拥有数万注册用户,流量很大,我们几乎已经打爆了市面上很多主流的开源网关。在这种情况下,一个用户的更新可能导致所有其他用户受到影响,因为 Nginx 需要重新加载配置,这显然是不能接受的。

还有某知名网关 (不便透露),控制器 CPU 很容易就被打爆。

还有某知名网关 (同样不便透露),数量一多配置生效需要超过两分钟。不过我们已经和上游社区进行了反馈,应该很快会有改进。

挑战 2:运行时隔离问题

Sealos 需要实现强隔离以保证多租户环境的安全。然而,市面上的主流运行时环境并不能满足 Sealos 的隔离需求。例如,Firecracker 无法提供对 GPU 的良好支持,这对于需要高性能计算的应用来说是一个比较严重的限制。

挑战 3:存储隔离问题

Sealos 需要确保不同租户的数据彼此隔离,防止数据泄露或被其他租户错误访问。这就需要实现块级别的存储隔离,挑战也很大。

挑战 4:网络计量和争用管理

最后,网络资源的计量和管理也是多租户环境中的关键问题。Sealos 需要准确地计量每个用户的网络使用情况,并且在资源有限的情况下合理地分配网络资源。当网络资源产生争用时,需要有机制来公平地解决这些争用,确保所有用户都能公平合理地使用网络资源。

总结

多租户成熟了才能算作是一朵真正的云,才能把云的威力发挥到九成以上。面对公网这一极其复杂和不可预测的环境,Sealos 不仅实现了多租户的隔离和安全,还在保障高效运行的同时,降低了成本。且底层使用了非常多优雅的技术方案,彻底解决企业所有开发者共享一朵云的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1270722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之存储管理(1)》(14)

[TOC](《Linux操作系统原理分析之存储管理》(14) 5 存储管理5.1 存储管理的目的和功能5.1.1 存储管理目的:5.1.2 存储管理的主要功能5.1.3 存储管理主要是对用户区进行管理 5.2 地址重定位5.2.1 作业的地址空间5.2.2.地址映射&…

企业微信小程序通知消息

使用企业微信发送应用消息中的小程序通知消息(只允许绑定了小程序的应用发送)。 目录 请求方式 请求地址 发送通知 参数说明 请求实例 返回 返回示例 返回参数说明 实现效果 总结 请求方式 POST 请求地址 https://qyapi.weixin.qq.com/cgi-b…

【EasyExcel实践】万能导出,一个接口导出多张表以及任意字段(可指定字段顺序)

文章目录 前言正文一、POM依赖二、核心Java文件2.1 自定义表头注解 ExcelColumnTitle2.2 自定义标题头的映射接口2.3 自定义有序map存储表内数据2.4 表头工厂2.5 表flag和表头映射枚举2.6 测试用的实体2.6.1 NameAndFactoryDemo2.6.2 StudentDemo 2.7 启动类2.8 测试控制器 三、…

关于UART、RS232、RS485的区别与理解

1、UART规定了数据的格式,但没有规定电气的特性,多少伏为高电平,多少伏为低电平。通常我们使用单片机与电脑通信时需要一个USB转TTL模块。 2、UART存在抗干扰能力差、通信距离短(一般不超过2~3m),由此产生基于串口的R…

2023 BUCT 计算方法实验报告

前言 Textlive版本:2023 textstudio版本:4.6.3 名字和日期在以下地方修改: 图片下载地址; figures.zip LiangCha_Xyy/Source - Gitee.com 如下图,.tex文件和figures文件夹放在同一路径下即可 .tex代码 \documentclass[UTF8]{ctexart} \usep…

Python数据分析从入门到进阶:模型评估和选择(含代码)

引言 之前我们介绍了机器学习的一些基础性工作,介绍了如何对数据进行预处理,接下来我们可以根据这些数据以及我们的研究目标建立模型。那么如何选择合适的模型呢?首先需要对这些模型的效果进行评估。本文介绍如何使用sklearn代码进行模型评估…

常见算法和Lambda表达式

常见算法和Lambda 常见算法 查找算法 基本查找 从0索引开始逐个查找 代码演示: package Search;import java.util.ArrayList;public class BasicSearch {public static void main(String[] args) {int[] arr {1,2,3,4,5,6,3,4,1,3};ArrayList<Integer> resArr ba…

第二证券:机构争分夺秒抢滩 金融大模型落地为时尚早

本年以来&#xff0c;大模型席卷金融业&#xff0c;一夜之间&#xff0c;简直悉数金融场景都在探索适配大模型接口。但是&#xff0c;志向丰满&#xff0c;实践骨感。有大型金融组织IT部分人士比方&#xff0c;金融大模型从战略规划到安顿落地&#xff0c;有着从“卖家秀”走到…

Docker 下载加速

文章目录 方式1&#xff1a;使用 网易数帆容器镜像仓库进行下载。方式2&#xff1a;配置阿里云加速。方式3&#xff1a;方式4&#xff1a;结尾注意 Docker下载加速的原理是&#xff0c;在拉取镜像时使用一个国内的镜像站点&#xff0c;该站点已经缓存了各个版本的官方 Docker 镜…

两台电脑如何快速传输几百G文件,这款文件传输软件真快

当我们需要传输数百GB的文件时&#xff0c;使用传统工具对于大型文件传输来说往往效率低下。这些方法可能需要数小时&#xff0c;甚至数天才能完成传输。然而&#xff0c;现代生活和工作中&#xff0c;我们经常需要以更快速、更高效的方式传输大文件&#xff0c;无论是因为工作…

连锁零售企业如何提高异地组网的稳定性?

随着数字化时代的到来&#xff0c;连锁零售企业面临着日益复杂和多样化的网络挑战。连锁零售企业是在不同地理位置拥有分支机构和零售店&#xff0c;可能同城或异地&#xff0c;需要确保各个地点之间的网络连接稳定和可靠。但由于不同地区的网络基础设施差异、网络延迟和带宽限…

应用密码学期末复习(3)

目录 第三章 现代密码学应用案例 3.1安全电子邮件方案 3.1.1 PGP产生的背景 3.2 PGP提供了一个安全电子邮件解决方案 3.2.1 PGP加密流程 3.2.2 PGP解密流程 3.2.3 PGP整合了对称加密和公钥加密的方案 3.3 PGP数字签名和Hash函数 3.4 公钥分发与认证——去中心化模型 …

【小布_ORACLE笔记】Part11-5 RMAN Backups

【小布_ORACLE笔记】Part11-5 RMAN Backups 文章目录 【小布_ORACLE笔记】Part11-5 RMAN Backups1. 增量备份&#xff08;Incremental Backups)1.1差异增量备份&#xff08;Differential Incremental Backup&#xff09;1.2累积增量备份&#xff08;Cumulative Incremental Bac…

跨界融合,科技耕耘:MTX基金公司与ICG共塑全球农业科技新景观

在全球经济快速发展的当下&#xff0c;农业科技创新成为了社会进步的重要推动力。MTX基金公司对ICG的投资是在这一背景下的战略决策&#xff0c;不仅寻求经济效益&#xff0c;更承载着改善全球农业生产、实现食品安全与环境保护的使命。 1、战略投资&#xff1a;文化情怀与全球…

Python三十个常见的脚本汇总

1、冒泡排序 2、计算x的n次方的方法 3、计算a*a b*b c*c …… 4、计算阶乘 n! 5、列出当前目录下的所有文件和目录名 6、把一个list中所有的字符串变成小写&#xff1a; 7、输出某个路径下的所有文件和文件夹的路径 8、输出某个路径及其子目录下的所有文件路径 9、输出某个路…

【刷题笔记】长度最小的子数组||二分查找||边界||数组

长度最小的子数组 1 题目描述 https://leetcode.cn/problems/minimum-size-subarray-sum/ 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回…

如何用管理项目的方式管理个人任务

同样一份工作&#xff0c;有的人做起来得心应手&#xff0c;条理清晰&#xff0c;有的人却是手忙脚乱&#xff0c;苦不堪言。在凡事皆项目的时代&#xff0c;用管理项目的方法管理自己的任务&#xff0c;可能会让你的工作事半功倍。 工欲善其事&#xff0c;必先利其器&#xf…

webshell之API免杀

ScriptEngineManager命令执行免杀 ScriptEngineManager执行js代码 利用ScriptEngineManager可以执行js命令&#xff0c;但是由于一般情况下&#xff0c;即便能运行js代码也不一定能执行系统命令。因为一般情况下js执行系统命令主要是依靠两种方式&#xff0c;IE的ActiveX插件…

「幻醒蓝」可视化主题套件|融合天空的清澈与海洋的深邃

现如今&#xff0c;数据可视化已成为信息传递的重要手段之一。在这样一个信息爆炸的时代&#xff0c;向人们传达正确的信息显得尤为重要。为此&#xff0c;可视化主题套件应运而生&#xff0c;提供了一种多样化的、可视化的方式来展示数据。不同的主题套件能够适应不同的信息传…

Springboot如何快速生成分页展示以及统计条数

这是表结构&#xff1a; 前置知识&#xff1a; 分页查询公式&#xff08;&#xff09;&#xff1a; -- 推导一个公式 -- select * from emp -- order by empno -- limit 每页显示记录数 * (第几页-1)&#xff0c;每页显示记录数 统计条数公式&#xff1a; select count…