自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何使用Vcluster實現(xiàn)Kubernetes中的多租戶

譯文
云計算
使用Loft公司的Vcluster項目可以在Kubernetes中輕松實現(xiàn)多租戶功能。本文探索了其租賃模式及其優(yōu)缺點。

譯者 | 李睿

審校 | 重樓

Kubernetes徹底改變了組織部署和管理容器化應用程序的方式,使跨集群編排和擴展應用程序變得更加容易。然而,在共享的Kubernetes集群上運行多個異構工作負載會帶來資源爭用、安全風險、缺乏定制和復雜管理等挑戰(zhàn)。

以下幾種方法可以在Kubernetes中實現(xiàn)隔離和多租戶:

  • Kubernetes命名空間:命名空間通過在不同用戶之間劃分集群資源來實現(xiàn)一定的隔離。但是,命名空間共享相同的物理基礎設施和內(nèi)核資源。因此,隔離和定制是有限制的。
  • Kubernetes發(fā)行版:流行的Kubernetes發(fā)行版(例如Red Hat OpenShift和Rancher)支持Vcluster。它們更有效地利用了Kubernetes的原生功能,例如命名空間、RBAC和網(wǎng)絡策略。其他優(yōu)點包括集中控制平臺、預配置集群模板和易于使用的管理。
  • 分層命名空間:在傳統(tǒng)的Kubernetes集群中,每個命名空間都是獨立的。這意味著一個名稱空間中的用戶和應用程序不能訪問另一個名稱空間中的資源,除非他們具有明確的權限。分層命名空間通過允許在命名空間之間定義父子關系來解決這個問題。這意味著在父命名空間中擁有權限的用戶或應用程序將自動在所有子命名空間中擁有權限。這使得跨多個名稱空間管理權限變得容易得多。
  • Vcluster項目:Vcluster項目通過將物理Kubernetes集群劃分為多個獨立的軟件定義集群來解決這些痛點。Vcluster允許組織為開發(fā)團隊、應用程序和客戶提供專用的Kubernetes環(huán)境,這些環(huán)境具有有保證的資源、安全策略和自定義配置。本文將深入探討Vcluster、它的功能、不同的實現(xiàn)選項、用例和挑戰(zhàn),還將研究最大化利用率和簡化Vcluster管理的最佳實踐。

什么是Vcluster?

Vcluster是一個開源工具,允許用戶創(chuàng)建和管理虛擬Kubernetes集群。虛擬Kubernetes集群是一個功能齊全的Kubernetes集群,它運行在另一個Kubernetes集群之上。Vcluster的工作原理是在底層Kubernetes集群的命名空間中創(chuàng)建一個Vcluster。Vcluster有自己的控制平臺,但它共享底層集群的工作節(jié)點和網(wǎng)絡。這使得Vcluster成為一個輕量級的解決方案,可以部署在任何Kubernetes集群上。

用戶在創(chuàng)建Vcluster時,可以指定希望Vcluster擁有的工作節(jié)點的數(shù)量。然后,Vcluster命令行將創(chuàng)建Vcluster,并在工作節(jié)點上啟動控制平臺pod。然后可以使用kubectl CLI將工作負載部署到Vcluster。

用戶可以在Vcluster網(wǎng)站上了解更多關于Vcluster的信息。

使用Vcluster的好處

(1)資源隔離

Vcluster允許用戶將中央集群的一部分資源(例如CPU、內(nèi)存和存儲)分配給單個Vcluster。當多個團隊共享相同的物理集群時,這可以防止“嘈雜鄰居”問題??梢源_保關鍵工作負載不受干擾地獲得所需的資源。

(2)訪問控制

使用Vcluster,可以在Vcluster級別實施訪問策略,確保只有授權用戶才能訪問。例如,像金融應用程序這樣的敏感工作負載可以在隔離的Vcluster中運行。與命名空間級策略相比,限制訪問要簡單得多。

(3)定制

Vcluster允許針對各個團隊的需求進行廣泛的定制,并且可以定制不同的Kubernetes版本、網(wǎng)絡策略、進入規(guī)則和資源配額。開發(fā)人員可以在不影響其他人的情況下修改他們的Vcluster。

(4)多租戶

組織必須經(jīng)常向多個內(nèi)部團隊或外部客戶提供Kubernetes訪問。通過在同一物理集群中創(chuàng)建獨立的隔離環(huán)境,Vcluster使多租戶易于實現(xiàn)。

(5)容易擴展

額外的Vcluster可以快速啟動或關閉,以處理動態(tài)工作負載和擴展需求??梢粤⒓刺峁┬碌拈_發(fā)和測試環(huán)境,而無需擴展整個物理集群。

Vcluster之前的工作負載隔離方法

在Vcluster作為解決方案出現(xiàn)之前,組織已經(jīng)利用了各種Kubernetes的本地特性來實現(xiàn)一些工作負載隔離:

  • 命名空間:命名空間在不同的團隊或應用程序之間隔離集群資源。它們通過資源配額和網(wǎng)絡策略提供基本的隔離。但是,沒有系統(tǒng)管理程序級別的隔離。
  • 網(wǎng)絡策略:細粒度的網(wǎng)絡策略限制pod和命名空間之間的通信。這會在工作負載之間創(chuàng)建網(wǎng)絡分段。但是,仍然可能發(fā)生資源爭用。
  • 污點和容忍度:對節(jié)點應用污點可以防止指定的pod在節(jié)點上進行調(diào)度。pod必須具有與污點相匹配的容忍度。這樣可以將pod限制為特定節(jié)點。
  • 云虛擬網(wǎng)絡:在公共云上,使用多個虛擬網(wǎng)絡有助于隔離Kubernetes集群流量。但是集群中的pod仍然可以通信。
  • 第三方網(wǎng)絡插件:像Calico、Weave和Cilium這樣的CNI插件可以構建覆蓋網(wǎng)絡和細粒度的網(wǎng)絡策略來隔離流量。
  • 定制控制器:開發(fā)定制Kubernetes控制器允許以編程方式隔離資源。但這需要大量的編程專業(yè)知識。

Vcluster的演示

(1)安裝Vcluster命令行

要求:

  • kubectl(通過kubectl版本檢查)
  • helm v3(檢查helm版本)
  • 一個可以訪問Kubernetes集群的工作kube-context(通過kubectl查詢名稱空間)。

使用以下命令下載基于arm64的Ubuntu機器的Vcluster CLI二進制文件:

curl -L -o vcluster 
"https://github.com/loft-sh/vcluster/releases/latest/download/vcluster-linux-arm64" && sudo install -c -m 0755 cluste /usr/local/bin && rm -f vcluster
bash

要確認Vcluster CLI已成功安裝,通過以下方式測試:

vcluster --version
bash

要在其他服務器上安裝,可以參考以下鏈接。安裝Vcluster命令行。

(2)部署Vcluster

創(chuàng)建一個Vclustermy-first-Vcluster

vcluster create my-first-vcluster
bash

(3)連接到Vcluster

輸入以下命令連接Vcluster:

vcluster connect my-first-vcluster
bash

使用kubectl命令獲取連接的Vcluster中的名稱空間。

kubectl get namespaces
bash

將應用程序部署到Vcluster

現(xiàn)在,在Vcluster中部署一個示例Nginx部署。創(chuàng)建一個部署:

kubectl create namespace demo-nginx
kubectl create deployment nginx-deployment -n demo-nginx --image=nginx
bash

這將把應用程序隔離在Vcluster中的一個命名空間demo-nginx中。

可以檢查此演示部署是否會在Vcluster中創(chuàng)建pod:

kubectl get pods -n demo-nginx
bash

檢查主機集群部署

既然已經(jīng)確認了Vcluster中的部署,現(xiàn)在嘗試檢查主機集群中的部署。

斷開與Vcluster的連接。

vcluster disconnect
bash

這將把kube場景移回主機集群?,F(xiàn)在檢查主機集群中是否有可用的部署。

kubectl get deployments -n vcluster-my-first-vcluster
bash

在Vcluster-my-Vcluster命名空間中找不到任何資源。這是因為部署被隔離在其他集群無法訪問的Vcluster中。

現(xiàn)在使用以下命令檢查所有名稱空間中是否有pod正在運行。

kubectl get pods -n vcluster-my-first-vcluster
bash

現(xiàn)在可以看到Nginx容器在Vcluster命名空間中運行。

Vcluster用例

Vcluster通過在單個物理集群中提供隔離的和可定制的Kubernetes環(huán)境來支持幾個重要的用例。以下更詳細地探討其中的一些:

(1)開發(fā)和測試環(huán)境

為開發(fā)團隊分配專用的Vcluster允許他們完全控制配置,而不會影響生產(chǎn)工作負載或其他開發(fā)人員。開發(fā)團隊可以使用所需的Kubernetes版本、網(wǎng)絡策略、資源配額和訪問控制來定制他們的Vcluster。開發(fā)團隊可以快速啟動和關閉Vcluster以測試不同的配置。由于Vcluster提供了有保證的計算和存儲資源,開發(fā)人員不需要開展競爭,它們也不會影響在其他Vcluster中運行的應用程序的性能。

(2)生產(chǎn)應用程序隔離

企業(yè)應用程序(例如ERP、CRM和財務系統(tǒng))需要可預測的性能、高可用性和嚴格的安全性。專用Vcluster允許這些生產(chǎn)工作負載不受其他應用程序的影響??梢詾殛P鍵任務應用程序分配預留容量,以避免資源爭用。定制網(wǎng)絡策略保證隔離。集群還允許基于角色的粒度訪問控制,以滿足合規(guī)性需求。與過度配置大型集群以避免干擾不同,Vcluster以較低的成本提供有保證的資源。

(3)多租戶

服務提供商和擁有多個業(yè)務單元的企業(yè)通常需要向不同的內(nèi)部團隊或外部客戶安全地提供Kubernetes訪問權限。通過為每個租戶創(chuàng)建單獨的自助服務環(huán)境并應用適當?shù)馁Y源限制和訪問策略,Vcluster簡化了多租戶。提供商可以通過采用額外的Vcluster輕松地為新客戶提供服務。這消除了“嘈雜鄰居”問題,并通過根據(jù)實際使用情況(而不是峰值需求)打包Vcluster來實現(xiàn)高密度的工作負載。

(4)合規(guī)性

金融和醫(yī)療保健等受到嚴格監(jiān)管的行業(yè)在數(shù)據(jù)隱私、地理位置和訪問控制方面有嚴格的安全性和合規(guī)性要求。具有內(nèi)部網(wǎng)絡分段、基于角色的訪問控制和資源隔離的專用Vcluster可以更輕松地與同一集群中的其他應用程序一起安全地托管兼容的工作負載。

(5)臨時資源

Vcluster允許立即啟動臨時Kubernetes環(huán)境來處理以下用例:

  • 測試集群升級:新的Kubernetes版本可以部署到較低的環(huán)境中,而不會停機或影響生產(chǎn)。
  • 評估新的應用程序:應用程序可以部署到一次性的Vcluster中,而不是共享的開發(fā)集群,以防止沖突。
  • 容量峰值:新的Vcluster為流量峰值提供突發(fā)容量,而不是過度配置整個集群。
  • 特殊事件:可以為研討會、會議和其他事件臨時創(chuàng)建Vcluster。

一旦不再需要,就可以簡單地刪除這些Vcluster,而不會在集群上留下持久的足跡。

(6)工作負載整合

隨著組織擴展Kubernetes的足跡,需要在不干擾現(xiàn)有應用程序的情況下將多個集群合并到共享的基礎設施上。將應用程序遷移到Vcluster提供了邏輯隔離和定制,允許它們與其他工作負載一起無縫運行。這提高了利用率并減少了操作開銷。Vcluster允許企業(yè)IT在保持隔離的同時在整個組織中提供一致的Kubernetes平臺??傊琕cluster是通過工作負載隔離、定制、安全性和密度來優(yōu)化Kubernetes環(huán)境的重要工具。用例強調(diào)了它們?nèi)绾问菇M織內(nèi)從開發(fā)人員到運維人員再到業(yè)務部門的各種需求受益。

使用Vcluster的挑戰(zhàn)

雖然帶來了顯著的好處,但也有一些缺點需要權衡:

(1)復雜性

與單個大型Kubernetes集群相比,管理多個Vcluster(盡管規(guī)模較小)會帶來更多的操作開銷。其他任務包括:

  • 提供和配置多個控制平臺。
  • 在Vcluster之間一致地應用安全策略和訪問控制。
  • 在Vcluster之間進行監(jiān)控和日志記錄。
  • 為每個Vcluster維護指定的資源和容量。

例如,集群管理員必須在20個Vcluster中而不是單個集群中配置和更新RBAC策略。與單個集群的集中管理相比,這需要付出更多的努力。Kubernetes上的靜態(tài)IP地址和端口可能會導致沖突或錯誤。

(2)資源分配與管理

平衡Vcluster的資源消耗和性能可能很棘手,因為它們可能有不同的需求或期望。

例如,Vcluster可能需要根據(jù)工作負載擴展或縮減,或者與其他Vcluster或名稱空間共享資源。應用程序峰值需求的Vcluster大小可能在非峰值期間有多余的未使用容量,這些容量處于閑置狀態(tài),無法被其他Vcluster利用。

(3)有限的定制

定制Vcluster的能力因實現(xiàn)而異。命名空間提供的靈活性最低,而集群API提供的靈活性最高。像OpenShift這樣的工具通過簡單性平衡了定制。例如,命名空間不能運行不同的Kubernetes版本或網(wǎng)絡插件。Cluster API允許完全定制,但更復雜。

結論

Vcluster使Kubernetes用戶能夠在共享的物理集群中定制、隔離和擴展工作負載。通過分配專用的控制平臺資源和訪問策略,Vcluster提供了強大的技術隔離。對于多租戶這樣的用例,Vcluster提供了更簡單、更安全的Kubernetes管理。

Vcluster還可以用于減少Kubernetes的成本開銷,并可用于臨時環(huán)境。像OpenShift、Rancher和Kubernetes Cluster API這樣的工具使得部署和管理Vcluster變得更加容易。隨著采用的增加,可以期待在Vcluster空間中有更多的創(chuàng)新,以進一步簡化操作并最大化利用率。雖然Vcluster有一些缺點,但對于許多組織來說,其帶來的好處顯然超過所增加的復雜性。

原文標題:Multi-Tenancy in Kubernetes Using Vcluster,作者:Pavan Shiraguppi

責任編輯:華軒 來源: 51CTO
相關推薦

2022-09-13 07:14:29

云計算SaaS多租戶

2021-12-13 10:10:15

IPtablesTCPLinux

2021-11-22 16:21:28

Kubernetes 運維開源

2022-05-12 14:25:44

Kubernetesvcluster

2022-08-11 08:41:31

CrossplaneVCluster

2022-08-10 10:46:13

?CrossplanKubernete插件

2020-10-16 08:57:51

云平臺之多租戶的實踐

2022-10-08 00:00:04

DataObjectFlowable流程

2021-12-01 09:00:00

公共云云計算服務器

2021-05-17 11:47:41

多租戶系統(tǒng)私有化

2023-06-07 13:50:00

SaaS多租戶系統(tǒng)

2020-09-15 07:00:00

SaaS架構架構

2024-05-28 08:17:54

2021-11-22 08:00:00

Kubernetes容器集群

2022-06-06 14:35:59

KubevirtKubernetes虛擬機

2024-04-10 11:50:28

2025-02-18 16:27:01

2013-10-15 09:11:26

多租戶云計算Overlay

2020-09-28 14:05:08

2023-10-07 07:51:55

FluxCDKubernetes
點贊
收藏

51CTO技術棧公眾號