Kubernetes多租户实践

由于namespace本身的限制,Kubernetes对多租户的支持面临很多困难,本文梳理了K8S多租户支持的难点以及可能的解决方案。原文: Multi-tenancy in Kubernetes

alt

是否应该让多个团队使用同一个Kubernetes集群?

是否能让不受信任的用户安全的运行不受信任的工作负载?

Kubernetes支持多租户吗?

本文将探讨支持多租户的集群所面临的挑战。

多租户可以分为:

  1. 软多租户(Soft multi-tenancy) 适用于租户是可信任的情况,例如同一公司的团队共享集群时。
  2. 硬多租户(Hard multi-tenancy) 适用于租户不可信的情况。

实践中也可能是混合模式!

alt

在租户之间共享集群的基本构建块是命名空间(namespace)。

名称空间对资源进行逻辑分组 —— 不提供任何安全机制,也不能保证所有资源都部署在同一节点中。

alt

命名空间中的pod仍然可以与集群中的所有其他pod通信,向API发出请求,并使用尽可能多的资源。

开箱即用,任何用户都可以访问任何命名空间。

如何阻止访问呢?*

通过RBAC,可以限制用户和应用程序可以使用的命名空间或在命名空间内做什么。[1]

常见操作是向有限的用户授予权限。

alt

使用Quota[2]LimitRanges[3],可以限制在命名空间中部署的资源以及可用的内存、CPU等。

如果想限制租户对其命名空间的操作,这是个好主意。

alt

默认情况下,所有pod都可以与Kubernetes中的任何pod通信。

但这并不适用于多租户,可以用NetworkPolicies[4]来纠正这个问题。

NetworkPolicies类似于防火墙规则,可以隔离出站和入站流量。

alt

很好,命名空间现在安全了吗?

别急。

基于RBAC、NetworkPolicies、Quota等作为多租户的基本构建块还是不够。

Kubernetes还有几个共享组件。

Ingress控制器就是一个很好的例子,通常在每个集群中只会部署一个。

如果提交具有相同路径的Ingress清单,最后一个会覆盖之前的定义,并且只有这一个才会生效。

alt

更好的方法是为每个命名空间部署一个控制器。

另一个有趣的挑战是CoreDNS。

如果某个租户滥用DNS怎么办?

集群的其余部分也将受到影响。

可以用一个额外的插件[https://github.com/coredns/policy](CoreDNS external plugin)来限制请求。

alt

Kubernetes API服务器也面临同样的挑战。

Kubernetes不知道租户,如果API接收到太多请求,将会触发全局流控。

我不知道是否有解决办法!

alt

如果进一步考虑共享资源,那么kubelet和工作负载也存在挑战。

正如Philippe Bogaerts提到的[5],租户可以通过liveness探针接管集群中的节点。

这也不容易解决。

alt

可以将扫描器(linter)作为CI/CD的一部分,或者用准入控制器(admission controller)来验证提交给集群的资源是否安全。

这里是Open Policy Agent的库和规则。[6]

alt

还有隔离机制比虚拟机更弱的容器。

Lewis Denham-Parry在这段视频中展示了如何从容器中逃逸。[7]

如何解决这个问题?

可以用gVisor这样的容器沙箱,或者用轻型虚拟机作为容器(Kata Container,firecracker-containerd)或完整的虚拟机(virtlet作为CRI[8])。

alt

希望你已经意识到这个主题的复杂性,以及在Kubernetes中为隔离网络、工作负载和控制器提供严格的边界是多么困难。

这就是为什么不建议在Kubernetes中提供硬多租户[9]的原因。

如果需要硬多租户,建议使用多集群或集群即服务(Cluster-as-a-Service)工具。

  • Cluster API
  • HyperShift
  • Kamaji
  • Gardener

如果可以容忍较弱的多租户模型,以换取简单性和便利性,那么可以推出RBAC、Quota等规则。

还有一些工具可以把这些问题抽象出来:

  • Virtual Cluster (wg-multitenancy)
  • Vcluster
  • Capsule
  • Kiosk

最后,如果对这个话题感兴趣,可以进一步参考以下资源:

  • 我们在 Learnk8s上举办的Kubernetes研讨会
  • twitter讨论集合
  • 每周发布的 Kubernetes时事通讯 [10]

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。为了方便大家以后能第一时间看到文章,请朋友们关注公众号"DeepNoMind",并设个星标吧,如果能一键三连(转发、点赞、在看),则能给我带来更多的支持和动力,激励我持续写下去,和大家共同成长进步!

参考资料
[1]

Limiting access to Kubernetes resources with RBAC: https://learnk8s.io/rbac-kubernetes

[2]

Resource Quotas: https://kubernetes.io/docs/concepts/policy/resource-quotas

[3]

Limit Ranges: https://kubernetes.io/docs/concepts/policy/limit-range

[4]

Kubernetes Network Policy Recipes: https://github.com/ahmetb/kubernetes-network-policy-recipes

[5]

Exploiting applications using liveness probes in Kubernetes: https://xxradar.medium.com/exploiting-applications-using-livenessprobes-in-kubernetes-cdff6329d320

[6]

OPA Gatekeeper Library: https://github.com/open-policy-agent/gatekeeper-library

[7]

What vulnerabilities? Live hacking of containers and orchestrators - Lewis Denham-Parry: https://www.youtube.com/watch?v=JaMJJTb_bEE

[8]

virtlet: https://github.com/Mirantis/virtlet

[9]

Hard Multi-Tenancy in Kubernetes: https://blog.jessfraz.com/post/hard-multi-tenancy-in-kubernetes

[10]

Learn Kubernetes Weekly: https://learnk8s.io/learn-kubernetes-weekly

本文由 mdnice 多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VUE3好看的我的家乡网站模板源码

文章目录 1.设计来源1.1 首页界面1.2 旅游导航界面1.3 上海景点界面1.4 上海美食界面1.5 上海故事界面1.6 联系我们界面1.7 在线留言界面 2.效果和结构2.1 动态效果2.2 代码结构 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/…

在无公网IP环境下实现VS Code远程开发的方法

哈喽大家好,我是咕噜美乐蒂,很高兴又见面啦! 随着云计算和远程协作的普及,越来越多的开发者选择使用VS Code进行远程开发。然而,有时我们会发现自己处于一个没有公网IP的网络环境,这可能会导致无法直接访问…

EasyCVR视频融合平台铁路抑尘喷洒监控系统视频搭建方案

一、建设背景与需求分析 随着我国铁路建设的迅猛发展,铁路抑尘喷洒设备质量监控系统在技术和管理方面都取得了显著的进步,面临安全压力也随之加大。为了确保铁路运输的安全和稳定,车站监控室、喷洒区域、操作间以及安全防护区域等关键区域都…

Docker Image(镜像)

Docker镜像是什么 Docker image 本质上是一个 read-only 只读文件,这个文件包含了文件系统、源码、库文件、依赖、工具等一些运行 application 所必须的文件。我们可以把 Docker image 理解成一个模板, 可以通过这个模板实例化出来很多容器。image 里面…

eNSP学习——VLAN基础配置及Access接口

目录 原理概述 实验内容: 实验目的: 实验步骤: 实验拓扑 配置过程 实验编址 基本配置 创建vlan 配置Access接口 原理概述 早期的局域网技术是基于总线型结构的。总线型拓扑结构是由一根单电缆连接所有主机,就导致所…

【设计并实现一个满足 LRU (最近最少使用) 缓存约束的数据结构】

文章目录 一、什么是LRU?二、LinkedHashMap 实现LRU缓存三、手写LRU 一、什么是LRU? LRU是Least Recently Used的缩写,意为最近最少使用。它是一种缓存淘汰策略,用于在缓存满时确定要被替换的数据块。LRU算法认为,最近…

EasyX的安装与使用(VisualStudio C++免费绘图库)

EasyX Graphics Library 是针对 Visual C 的免费绘图库 安装教程 安装到Visual C 2010 EasyX 安装完毕。 在VC2010中建立控制台工程 工程建好后,鼠标右键点击工程名,并选择属性 安装到Visual C 2010 EasyX 安装完毕。 安装示例程序 easyxdemo.cpp 在VC…

什么是工控软件?一款很火的Web工业控制组态软件

随着工业4.0和智能制造的发展,工控软件的应用越来越广泛,它们在提高生产效率、降低能耗和减少人力成本等方面发挥着越来越重要的作用。 什么是工控软件? 工控软件是指用于工业控制系统的软件,主要应用于各种生产过程控制、自动化…

【服务器】安装宝塔面板

目录 🌺【前言】 🌼【前提】连接服务器 🌷方式一 使用工具登录服务器如Xshell 🌷方式二 阿里云直接连接 🌼 1. 安装宝塔 🌷获取安装脚本 方式一 使用下面提供的脚本安装 方式二 使用官网提供的脚本…

网络安全---防御保护--子接口小实验

子接口小实验: 环境准备: 防火墙区域配置为trust: PC设置其ip为同一个网段: 此时尝试ping无法ping通的原因是没有打开防火墙允许ping,我们在图形化界面允许ping即可 最终结果: .com域名服务器: …

HCIP-12

一、网关作为了一个广播域的中心出口;生成树的根网桥也是一棵树的中心,也是流量的集合点; 若将两者分配不同的设备将导致网络通讯资源浪费,故强烈建议两者在同一台设备上; 若使用基于vlan或基于分组的STP协议来工作三…

如何使用阿里云CDN服务?

如何使用阿里云CDN服务 一、开通阿里云CDN服务 注册自己阿里云账号,找到CDN服务,进行加速即可 二、配置域名信息 1、各配置参数的含义 添加加速域名: 如果需要使用CDN加速指定网站上的业务,则需要将该网站作为源站&#xff0…

swagger+knife4j整合

swagger pom配置 <!-- swagger 接口文档 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.s…

Linux第35步_在“移植uboot”前安装libncurses5-dev

在“移植uboot”前&#xff0c;需要在Ubuntu中安装“libncurses5-dev”&#xff0c;否则在“编译uboot”时&#xff0c;会报错。目的是保证顺利移植“uboot”。 1、打开终端 2、输入“sudo apt-get install libncurses5-dev bison flex回车”&#xff1b; 3、输入密码“1234…

李宏毅《机器学习 深度学习》简要笔记(一)

一、线性回归中的模型选择 上图所示&#xff1a; 五个模型&#xff0c;一个比一个复杂&#xff0c;其中所包含的function就越多&#xff0c;这样就有更大几率找到一个合适的参数集来更好的拟合训练集。所以&#xff0c;随着模型的复杂度提高&#xff0c;train error呈下降趋势…

美易官方:美国电商巨头eBay宣布裁员约1000人

美国电商巨头eBay近日宣布&#xff0c;为了应对当前的经济形势和市场需求&#xff0c;公司计划裁员约1000人&#xff0c;约占公司员工总数的4%。eBay表示&#xff0c;此次裁员是为了优化公司运营和提高效率&#xff0c;同时也会对受影响的员工提供必要的支持和帮助。 eBay作为全…

PowerBI商业智能分析引入,带你了解什么是商务智能

一、商务智能工具 什么是Power BI &#xff1f;Power Bl是微软开发的一个软件&#xff0c;它是从获取数据、数据清洗、数据图表搭建、数据分析、共享发布为一体的软件&#xff0c;无论你的数据是简单的Excel电子表格&#xff0c;还是复杂庞大的数据库&#xff0c;Power Bl都可…

Python自动化测试

一、什么是框架 框架是由大佬开发或者专业的研发团队研发的技术骨架&#xff0c;框架是一个半成品&#xff0c;框架是对常用的功能&#xff0c;基础的代码进行封装的一个工具&#xff0c;这个工具对外提供了一些API&#xff0c;其他的开发者只需要调用框架的接口即可&#xff…

【第七在线】智能商品计划:重塑服装行业的供应链管理

在当今快速变化的市场环境中&#xff0c;供应链管理已成为企业成功的关键因素之一。尤其在服装行业&#xff0c;供应链的效率、灵活性和透明度直接影响着企业的竞争力和盈利能力。随着技术的发展&#xff0c;智能商品计划正逐渐成为重塑供应链管理的强大工具。 一、智能商品计划…

【USTC】verilog 习题练习 46-50

46 上升沿检测 题目描述 在实际应用中&#xff0c;我们经常需要对某个信号的边沿进行检测&#xff0c;并以此作为后续动作的触发信号&#xff08;例如电脑键盘的某个按键被按下或者被松开&#xff0c;在电路中则对应的是电平的变化&#xff09;。 设计一个电路&#xff0c;包…