Kubernetes 缺少的多租戶功能,你可以通過這些方式實現
虛擬控制平面
另一種多租戶的實現方案是為每個租戶提供一個獨立的虛擬控制平面,以徹底隔離租戶的資源。虛擬控制平面的實現方式通常是為每個租戶運行一套獨立的 apiserver,同時利用 controller 將租戶 apiserver 中的資源同步到原 Kubernetes 集群中。每個租戶只能訪問自己對應的 apiserver,而原 Kubernetes 集群的 apiserver 則通常不對外訪問。這類方案的代價是額外的 apiserver 的開銷,但能夠獲得更為徹底的控制平面隔離。結合數據平面的隔離技術,虛擬控制平面可以實現更為徹底和安全的多租戶方案。此類方案以 vcluster 項目為代表。
如何選擇?
選擇按 namespace 劃分租戶還是使用虛擬控制平面應取決于多租戶的使用場景。通常來說,按 namespace 劃分租戶的隔離性和自由度會略有欠缺,但優(yōu)勢在于輕量。對于多團隊共享使用的場景,按 namespace 劃分租戶較為合適。而對于多客戶共享使用的場景,選擇虛擬控制平面通常能夠提供更好的隔離保障。多集群方案
從上文可以看出,共享使用 Kubernetes 集群并非易事;Kubernetes 集群并非天然地支持多租戶,僅僅是提供了一些細粒度上的功能支持。要想讓 Kubernetes 支持多租戶場景需要其他項目的支持,以同時在控制平面和數據平面上實現租戶之間的隔離。這使得整個方案存在不小的學習和適應成本。因此,目前有許多用戶采用的不是共享集群,而是多集群的方案。相比共享集群,多集群方案有利有弊:優(yōu)勢是隔離性強、邊界清晰,劣勢是資源開銷以及運維成本較高。由于每個集群需要獨立的控制平面和工作節(jié)點,為了提高物理集群的利用率,通常會選擇在虛擬機上搭建 Kubernetes 集群。然而傳統的虛擬化產品因為需要顧及更為廣泛的場景,所以功能上往往大而全,并且售價高昂,并非支撐虛擬化 Kubernetes 集群的最佳選擇。基于此,可以認為,支撐虛擬化 Kubernetes 集群理想的虛擬化平臺應該具備以下特點:-
輕量。不需要顧及到桌面虛擬化等場景,只需專注于服務器虛擬化,減去一切不必要的功能和開銷。
-
高效。全面使用 virtio 這樣的半虛擬化 I/O 技術,提高效率。
-
安全。最大程度減少主機受到攻擊的可能。
-
Kubernetes 原生。虛擬化平臺本身最好是 Kubernetes 集群,以降低學習和運維成本。

此外,針對在 Virtink 上創(chuàng)建和運維虛擬化 Kubernetes 集群的需要,SmartX 開發(fā)了 knest 命令行工具來幫助用戶一鍵式創(chuàng)建集群以及對集群進行擴縮容管理。在 Virtink 集群上創(chuàng)建一個虛擬化 Kubernetes 集群僅需執(zhí)行“knest create”命令即可實現。對集群進行后續(xù)的擴縮容也可以通過 knest 工具進行一鍵式操作。總? ?結 Kubernetes 并未內建多租戶功能,但提供了一些細粒度的功能支持。利用這些功能,結合一些第三方工具,能夠實現多租戶共享使用集群。但同時這些工具也帶來了額外的學習和運維成本。在這個情況下,多個虛擬化集群依然是很多用戶選擇的方案。然而傳統的虛擬化平臺在效率和成本上并非此場景的最佳選擇。SmartX Virtink 開源虛擬化引擎基于高效、安全的 Cloud Hypervisor,提供 Kubernetes 上編排輕量虛擬機的能力,最大程度降低虛擬化 Kubernetes 集群的資源開銷。配套提供的 knest 命令行工具則支持集群一鍵式創(chuàng)建和運維,有效降低多個集群的運維成本 相關鏈接:
-
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
------ 我們創(chuàng)建了一個高質量的技術交流群,與優(yōu)秀的人在一起,自己也會優(yōu)秀起來,趕緊點擊加群,享受一起成長的快樂。另外,如果你最近想跳槽的話,年前我花了2周時間收集了一波大廠面經,節(jié)后準備跳槽的可以點擊這里領取!
推薦閱讀
··································你好,我是程序猿DD,10年開發(fā)老司機、阿里云MVP、騰訊云TVP、出過書創(chuàng)過業(yè)、國企4年互聯網6年 。 從普通開發(fā)到架構師、再到合伙人。一路過來,給我最深的感受就是一定要不斷學習并關注前沿。只要你能堅持下來,多思考、少抱怨、勤動手,就很容易實現彎道超車! 所以,不要問我現在干什么是否來得及。如果你看好一個事情,一定是堅持了才能看到希望,而不是看到希望才去堅持。相信我,只要堅持下來,你一定比現在更好! 如果你還沒什么方向,可以先關注我, 這里會經常分享一些前沿資訊,幫你積累彎道超車的資本。
點擊 領取2022最新10000T學習資料