溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

有哪些構(gòu)建Kubernetes集群

發(fā)布時(shí)間:2021-10-29 09:54:00 來源:億速云 閱讀:150 作者:iii 欄目:web開發(fā)

這篇文章主要講解了“有哪些構(gòu)建Kubernetes集群”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“有哪些構(gòu)建Kubernetes集群”吧!

集群分析

在不同的應(yīng)用開發(fā)環(huán)境中,你通常會(huì)開發(fā)和運(yùn)行多個(gè)應(yīng)用程序。此外,通常在不同的環(huán)境中運(yùn)行這些應(yīng)用程序的多個(gè)實(shí)例,比如你可能用開發(fā)環(huán)境,測(cè)試環(huán)境和生產(chǎn)環(huán)境。

于是,這將導(dǎo)致應(yīng)用程序和環(huán)境組成不同的交集。在下面的示例中,有3個(gè)應(yīng)用程序和3個(gè)環(huán)境,產(chǎn)生了9個(gè)應(yīng)用程序的實(shí)例。每個(gè)應(yīng)用程序?qū)嵗际且粋€(gè)可獨(dú)立運(yùn)行的獨(dú)立部署單元。

有哪些構(gòu)建Kubernetes集群

請(qǐng)注意,一個(gè)應(yīng)用程序?qū)嵗赡苡啥鄠€(gè)組件組成,如前端,后端,數(shù)據(jù)庫(kù)等。在微服務(wù)應(yīng)用程序中,一個(gè)應(yīng)用程序?qū)嵗龑⒂伤形⒎?wù)組件構(gòu)成。

作為Kubernetes的用戶,一些問題會(huì)引發(fā)你的思考。是否應(yīng)該在單個(gè)群集上運(yùn)行所有應(yīng)用程序?qū)嵗?還是應(yīng)該為每個(gè)應(yīng)用程序?qū)嵗加幸粋€(gè)單獨(dú)的集群?還是應(yīng)該結(jié)合使用呢?

下面是一些你可以選擇選項(xiàng):

  • 一個(gè)大型共享集群

  • 許多小型一次性集群

  • 每個(gè)應(yīng)用程序的集群

  • 每個(gè)環(huán)境的集群

前兩種方法是從幾個(gè)大型集群到多個(gè)小型集群的規(guī)模極限,如下圖所示:

有哪些構(gòu)建Kubernetes集群

通常,如果集群包含更大的節(jié)點(diǎn)和Pod之和,則可以將其定義為“更大”。例如,具有10個(gè)節(jié)點(diǎn)和100個(gè)Pods的集群大于包含1個(gè)節(jié)點(diǎn)和10個(gè)Pods的集群。

一個(gè)大型共享集群

第一種選擇是在同一集群中運(yùn)行所有工作負(fù)載。通過這種方法,可以像通用基礎(chǔ)架構(gòu)平臺(tái)一樣使用這個(gè)集群。無論需要運(yùn)行什么,都可以將其部署到現(xiàn)有的Kubernetes集群中。

有哪些構(gòu)建Kubernetes集群

Kubernetes提供了命名空間,以在邏輯上將集群的各個(gè)部分彼此分開,在上述情況下,可以為每個(gè)應(yīng)用程序?qū)嵗褂脝为?dú)的命名空間。

優(yōu)點(diǎn):有效利用資源

如果只有一個(gè)Kubernetes集群,則只需擁有運(yùn)行和管理Kubernetes集群所需的所有資源的一個(gè)副本。

例如,這包括主節(jié)點(diǎn),一個(gè)Kubernetes集群通常有3個(gè)主節(jié)點(diǎn),如果只有一個(gè)集群,則總共只需要3個(gè)主節(jié)點(diǎn)(如果有10個(gè)Kubernetes集群,則只有30個(gè)主節(jié)點(diǎn))。

但這還包括其他集群范圍的服務(wù),例如負(fù)載均衡,入口控制器,身份驗(yàn)證,日志記錄和監(jiān)控。

如果只有一個(gè)集群,則可以為所有工作負(fù)載重用這些服務(wù),并且不必為多個(gè)集群擁有多個(gè)服務(wù)副本。

優(yōu)點(diǎn):低成本

較少的集群通常成本更低,因?yàn)榧簲?shù)量多,資源開銷越多。對(duì)于主節(jié)點(diǎn)而言尤其如此,這可能會(huì)花費(fèi)大量的費(fèi)用,無論是在本地還是在云中。

一些托管的Kubernetes服務(wù)免費(fèi)提供了Kubernetes控制平臺(tái),如谷歌GKE或Azure的AKS,所以在這種情況下,成本效益不是問題。

但是,還有托管的Kubernetes服務(wù),它們?yōu)檫\(yùn)行Kubernetes集群收取固定的費(fèi)用,例如AWS的EKS。

優(yōu)點(diǎn):高效管理

管理單個(gè)集群比管理多個(gè)集群容易。這可能包括以下任務(wù):升級(jí)Kubernetes版本,設(shè)置CI/CD管道,安裝CNI插件,設(shè)置用戶認(rèn)證系統(tǒng),安裝準(zhǔn)入控制器。

如果只有一個(gè)集群,則只需完成一次。如果有許多集群,那么需要多次應(yīng)用所有內(nèi)容,這可能需要開發(fā)一些自動(dòng)化的流程和工具,才能始終如一地做到這一點(diǎn)。

缺點(diǎn):?jiǎn)吸c(diǎn)故障

如果只有一個(gè)集群并且集群發(fā)生故障,那么所有工作負(fù)載都將出問題。還有許多操作可能會(huì)導(dǎo)致故障,比如Kubernetes升級(jí),集群范圍內(nèi)的組件(例如CNI插件)無法正常工作,對(duì)集群組件進(jìn)行了錯(cuò)誤的配置,基礎(chǔ)架構(gòu)發(fā)生故障。所以,如果只有一個(gè)共享集群,則可能會(huì)對(duì)所有工作負(fù)載造成影響。

缺點(diǎn):沒有硬安全隔離

如果多個(gè)應(yīng)用程序在同一個(gè)Kubernetes集群中運(yùn)行,所以這些應(yīng)用程序在集群的節(jié)點(diǎn)上共享硬件,網(wǎng)絡(luò)和操作系統(tǒng)。具體而言,在同一節(jié)點(diǎn)上運(yùn)行的兩個(gè)不同應(yīng)用程序的兩個(gè)容器在技術(shù)上是在相同硬件和操作系統(tǒng)內(nèi)核上運(yùn)行的兩個(gè)進(jìn)程。

Linux容器提供某種形式的隔離,但是這種隔離不如虛擬機(jī)提供的隔離強(qiáng)。在后臺(tái),容器中的進(jìn)程仍然只是在主機(jī)操作系統(tǒng)上運(yùn)行的進(jìn)程。從安全角度來看,這可能是一個(gè)問題。從理論上講,它允許無關(guān)的應(yīng)用程序產(chǎn)生意外的交互。

此外,所有在Kubernetes集群共享某些集群范圍的服務(wù),如工作負(fù)載DNS,這使得應(yīng)用可發(fā)現(xiàn)集群中的其他應(yīng)用程序的服務(wù)。

所以,這些問題可能是否會(huì)出現(xiàn)問題,具體取決于應(yīng)用程序的安全要求。

Kubernetes提供了各種防止安全漏洞的方法,例如PodSecurityPolicies和NetworkPolicies,但是,它需要經(jīng)驗(yàn)來以完全正確的方式來調(diào)整這些工具,并且它們也不能防止所有的安全漏洞。

而且,Kubernetes是為共享而設(shè)計(jì)的,而不是為了隔離和安全而設(shè)計(jì)的。

缺點(diǎn):多租戶資源侵占

Kubernetes集群中有許多共享資源,不同的應(yīng)用程序可以通過多種方式侵占資源。比如,一個(gè)應(yīng)用程序可能會(huì)占據(jù)某個(gè)共享資源(例如CPU或內(nèi)存),從而使同一節(jié)點(diǎn)上運(yùn)行的其他應(yīng)用程序無法運(yùn)行。

Kubernetes提供了多種方法來控制這種行為,例如資源請(qǐng)求和限制,ResourceQuotas和LimitRanges。但是,以完全正確的方式調(diào)整這些工具并不是一件容易的事,它們也無法防止所有不必要的副作用。

缺點(diǎn):用戶權(quán)限復(fù)雜

如果只有一個(gè)集群,則企業(yè)中的許多人必須有權(quán)訪問集群。用戶使用系統(tǒng)的機(jī)會(huì)越多,破壞的風(fēng)險(xiǎn)就越高。在集群中,你可以控制哪些人可以使用基于角色的訪問控制(RBAC)進(jìn)行操作。但是,這仍然不能防止用戶破壞其授權(quán)范圍內(nèi)的某些行為。

缺點(diǎn):集群不能無限大

如果將單個(gè)群集用于所有工作負(fù)載,則集群可能會(huì)很大(就節(jié)點(diǎn)和Pods而言)。但是,Kubernetes集群不能無限增長(zhǎng)。

對(duì)于集群的大小,存在一些理論上限,Kubernetes大約在5000個(gè)節(jié)點(diǎn),150000個(gè)Pods和300000個(gè)容器的定義。但是,實(shí)際上,使用較小的集群大小(例如500個(gè)節(jié)點(diǎn))可能已經(jīng)出現(xiàn)了挑戰(zhàn)。

原因是較大的集群對(duì)Kubernetes控制平面施加了更高的壓力,這需要仔細(xì)計(jì)劃來保持集群的功能和效率。

許多小型一次性集群

使用這種方法,可以為每個(gè)部署單元使用單獨(dú)的Kubernetes集群(本文中,部署單元是一個(gè)應(yīng)用程序?qū)嵗?,例如單個(gè)應(yīng)用程序的開發(fā)版本),通過這種策略,Kubernetes專用于各個(gè)應(yīng)用程序?qū)嵗?/p>

有哪些構(gòu)建Kubernetes集群

優(yōu)點(diǎn):故障半徑減小

如果集群發(fā)生故障,則損害僅限于這個(gè)集群上運(yùn)行的工作負(fù)載,而其他所有工作負(fù)載均不受影響。

優(yōu)點(diǎn):隔離

在各個(gè)集群中運(yùn)行的工作負(fù)載不會(huì)共享任何資源,例如CPU,內(nèi)存,操作系統(tǒng),網(wǎng)絡(luò)或其他服務(wù)。

這樣可以在不相關(guān)的應(yīng)用程序之間提供強(qiáng)大的隔離,這對(duì)于這些應(yīng)用程序的安全性是一大優(yōu)勢(shì)。

優(yōu)點(diǎn):很少的用戶

如果每個(gè)集群僅運(yùn)行一組工作負(fù)載,則需要訪問該集群的人數(shù)將減少。訪問集群的人越少,發(fā)生故障的風(fēng)險(xiǎn)越低。

缺點(diǎn):資源利用效率低

如前所述,每個(gè)Kubernetes集群都需要一組管理資源,例如主節(jié)點(diǎn),控制平面組件,監(jiān)控和日志記錄解決方案。如果有許多小型集群,則必須為這些管理功能犧牲更高的總資源。

缺點(diǎn):成本高

資源使用效率低下會(huì)自動(dòng)導(dǎo)致更高的成本。如果必須運(yùn)行30個(gè)主節(jié)點(diǎn)而不是3個(gè)主節(jié)點(diǎn)才能獲得相同的計(jì)算能力,那么成本高是必然的。

缺點(diǎn):綜合管理

管理許多Kubernetes集群比管理單個(gè)Kubernetes集群更為復(fù)雜。比如需要為每個(gè)集群設(shè)置身份驗(yàn)證和授權(quán),如果要升級(jí)Kubernetes版本,則也需要執(zhí)行多次。你可能需要開發(fā)一些自動(dòng)化工具。

每個(gè)應(yīng)用程序的集群

使用這種方法,可以為特定應(yīng)用程序的所有實(shí)例創(chuàng)建一個(gè)單獨(dú)的集群??梢詫⑵湟暈槊總€(gè)團(tuán)隊(duì)負(fù)責(zé)集群的范圍,因?yàn)橥ǔR粋€(gè)團(tuán)隊(duì)會(huì)開發(fā)一個(gè)或多個(gè)應(yīng)用程序。

有哪些構(gòu)建Kubernetes集群

優(yōu)點(diǎn):可以為應(yīng)用程序定制集群

如果應(yīng)用程序有特定要求,則可以將這些要求安裝在集群中,而不會(huì)影響任何其他集群。這樣的要求可能包括工作節(jié)點(diǎn),某個(gè)CNI插件,服務(wù)網(wǎng)格或任何其他服務(wù)。每個(gè)群集都可以完全配備相應(yīng)應(yīng)用程序所需的配置。

缺點(diǎn):同一集群中的不同環(huán)境

這種方法的缺點(diǎn)是來自不同環(huán)境的應(yīng)用程序?qū)嵗谕蝗杭羞\(yùn)行。例如,應(yīng)用程序的生產(chǎn)版本與開發(fā)版本在同一集群中運(yùn)行,這也意味著開發(fā)人員在與應(yīng)用程序的生產(chǎn)版本相同的集群中工作。所以,如果一個(gè)開發(fā)人員或開發(fā)版本創(chuàng)建集群中的一些損壞,生產(chǎn)版本可能也受到影響。

每個(gè)環(huán)境的集群

使用這種方法,可以為每個(gè)環(huán)境創(chuàng)建一個(gè)單獨(dú)的集群。例如,可以擁有一個(gè)開發(fā),測(cè)試和生產(chǎn)集群,在其中運(yùn)行特定環(huán)境的所有應(yīng)用程序?qū)嵗?/p>

有哪些構(gòu)建Kubernetes集群

優(yōu)點(diǎn):產(chǎn)品環(huán)境的隔離

通常,這種將所有環(huán)境相互隔離,但是實(shí)際上,這對(duì)于產(chǎn)品環(huán)境尤其重要。現(xiàn)在,應(yīng)用的生產(chǎn)版本不受任何其他集群和應(yīng)用環(huán)境中發(fā)生的任何事情的影響。

因此,如果某些配置錯(cuò)誤在開發(fā)集群中造成破壞,則應(yīng)用程序的生產(chǎn)版本將繼續(xù)運(yùn)行。

優(yōu)點(diǎn):可以針對(duì)環(huán)境定制集群

可以針對(duì)每個(gè)集群的環(huán)境進(jìn)行優(yōu)化,比如,在開發(fā)集群中安裝開發(fā)和調(diào)試工具;在測(cè)試集群中安裝測(cè)試框架和工具;對(duì)產(chǎn)品集群使用更強(qiáng)大的硬件和網(wǎng)絡(luò)連接;可以提高應(yīng)用程序的開發(fā)和運(yùn)行效率。

優(yōu)點(diǎn):鎖定對(duì)生產(chǎn)集群的訪問

沒有人需要在生產(chǎn)集群上進(jìn)行開發(fā)工作,因此可以限制對(duì)其的訪問。甚至可以根本不向任何人授予對(duì)生產(chǎn)集群的訪問權(quán)限,可以通過自動(dòng)CI/CD工具對(duì)該集群進(jìn)行部署。這將極大地減少生產(chǎn)集群中人為錯(cuò)誤的風(fēng)險(xiǎn)。

缺點(diǎn):應(yīng)用之間缺乏隔離

主要缺點(diǎn)是應(yīng)用之間缺少硬件和資源隔離。不相關(guān)的應(yīng)用程序共享集群資源,例如操作系統(tǒng)內(nèi)核,CPU,內(nèi)存和其他一些服務(wù)。這可能有潛在的安全問題。

缺點(diǎn):應(yīng)用要求未本地化

如果應(yīng)用程序有特殊要求,則所有集群中都必須滿足這些要求。如一個(gè)應(yīng)用程序需要一個(gè)GPU,則每個(gè)集群必須至少有一個(gè)GPU工作節(jié)點(diǎn),即使它僅由一個(gè)應(yīng)用程序使用。這可能會(huì)導(dǎo)致成本增加和資源使用效率低。

感謝各位的閱讀,以上就是“有哪些構(gòu)建Kubernetes集群”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)有哪些構(gòu)建Kubernetes集群這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI