Kubernetes 缺少的多租户功能,你可以通过这些方式实现
虚拟控制平面
另一种多租户的实现方案是为每个租户提供一个独立的虚拟控制平面,以彻底隔离租户的资源。虚拟控制平面的实现方式通常是为每个租户运行一套独立的 apiserver,同时利用 controller 将租户 apiserver 中的资源同步到原 Kubernetes 集群中。每个租户只能访问自己对应的 apiserver,而原 Kubernetes 集群的 apiserver 则通常不对外访问。这类方案的代价是额外的 apiserver 的开销,但能够获得更为彻底的控制平面隔离。结合数据平面的隔离技术,虚拟控制平面可以实现更为彻底和安全的多租户方案。此类方案以 vcluster 项目为代表。
如何选择?
选择按 namespace 划分租户还是使用虚拟控制平面应取决于多租户的使用场景。通常来说,按 namespace 划分租户的隔离性和自由度会略有欠缺,但优势在于轻量。对于多团队共享使用的场景,按 namespace 划分租户较为合适。而对于多客户共享使用的场景,选择虚拟控制平面通常能够提供更好的隔离保障。多集群方案
从上文可以看出,共享使用 Kubernetes 集群并非易事;Kubernetes 集群并非天然地支持多租户,仅仅是提供了一些细粒度上的功能支持。要想让 Kubernetes 支持多租户场景需要其他项目的支持,以同时在控制平面和数据平面上实现租户之间的隔离。这使得整个方案存在不小的学习和适应成本。因此,目前有许多用户采用的不是共享集群,而是多集群的方案。相比共享集群,多集群方案有利有弊:优势是隔离性强、边界清晰,劣势是资源开销以及运维成本较高。由于每个集群需要独立的控制平面和工作节点,为了提高物理集群的利用率,通常会选择在虚拟机上搭建 Kubernetes 集群。然而传统的虚拟化产品因为需要顾及更为广泛的场景,所以功能上往往大而全,并且售价高昂,并非支撑虚拟化 Kubernetes 集群的最佳选择。基于此,可以认为,支撑虚拟化 Kubernetes 集群理想的虚拟化平台应该具备以下特点:-
轻量。不需要顾及到桌面虚拟化等场景,只需专注于服务器虚拟化,减去一切不必要的功能和开销。
-
高效。全面使用 virtio 这样的半虚拟化 I/O 技术,提高效率。
-
安全。最大程度减少主机受到攻击的可能。
-
Kubernetes 原生。虚拟化平台本身最好是 Kubernetes 集群,以降低学习和运维成本。

此外,针对在 Virtink 上创建和运维虚拟化 Kubernetes 集群的需要,SmartX 开发了 knest 命令行工具来帮助用户一键式创建集群以及对集群进行扩缩容管理。在 Virtink 集群上创建一个虚拟化 Kubernetes 集群仅需执行“knest create”命令即可实现。对集群进行后续的扩缩容也可以通过 knest 工具进行一键式操作。总 结 Kubernetes 并未内建多租户功能,但提供了一些细粒度的功能支持。利用这些功能,结合一些第三方工具,能够实现多租户共享使用集群。但同时这些工具也带来了额外的学习和运维成本。在这个情况下,多个虚拟化集群依然是很多用户选择的方案。然而传统的虚拟化平台在效率和成本上并非此场景的最佳选择。SmartX Virtink 开源虚拟化引擎基于高效、安全的 Cloud Hypervisor,提供 Kubernetes 上编排轻量虚拟机的能力,最大程度降低虚拟化 Kubernetes 集群的资源开销。配套提供的 knest 命令行工具则支持集群一键式创建和运维,有效降低多个集群的运维成本 相关链接:
-
Kubernetes-sigs / hierarchical-namespaces https://github.com/kubernetes-sigs/hierarchical-namespaces
-
clastix / capsule https://github.com/clastix/capsule
-
loft-sh / kiosk https://github.com/loft-sh/kiosk
-
loft-sh / vcluster https://github.com/loft-sh/vcluster
-
smartxworks / virtink https://github.com/smartxworks/virtink
-
smartxworks / knest https://github.com/smartxworks/knest
------ 我们创建了一个高质量的技术交流群,与优秀的人在一起,自己也会优秀起来,赶紧点击加群,享受一起成长的快乐。另外,如果你最近想跳槽的话,年前我花了2周时间收集了一波大厂面经,节后准备跳槽的可以点击这里领取!
推荐阅读
··································你好,我是程序猿DD,10年开发老司机、阿里云MVP、腾讯云TVP、出过书创过业、国企4年互联网6年 。 从普通开发到架构师、再到合伙人。一路过来,给我最深的感受就是一定要不断学习并关注前沿。只要你能坚持下来,多思考、少抱怨、勤动手,就很容易实现弯道超车! 所以,不要问我现在干什么是否来得及。如果你看好一个事情,一定是坚持了才能看到希望,而不是看到希望才去坚持。相信我,只要坚持下来,你一定比现在更好! 如果你还没什么方向,可以先关注我, 这里会经常分享一些前沿资讯,帮你积累弯道超车的资本。
点击 领取2022最新10000T学习资料