您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“怎么理解Kubernetes容器編排的構(gòu)建塊”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么理解Kubernetes容器編排的構(gòu)建塊”吧!
容器編排是指用于自動(dòng)化,管理和調(diào)度由各個(gè)容器定義的工作負(fù)載的工具和平臺(tái)。在容器編排領(lǐng)域有很多參與者,開源工具和專有工具,如Hashicorp的Nomad,Apache Mesos,AWS的ECS等等,當(dāng)然還有谷歌的Borg項(xiàng)目(Kubernetes就是從這個(gè)項(xiàng)目演變而來的)。每種技術(shù)都有其優(yōu)缺點(diǎn),但是Kubernetes的日益普及和社區(qū)的強(qiáng)大支持已經(jīng)清楚地表明,Kubernetes目前是容器編排當(dāng)之無愧的領(lǐng)導(dǎo)者了。
在使用開源軟件時(shí),Kubernetes具有明顯的優(yōu)勢(shì)。作為一個(gè)開源平臺(tái),它可以在本地部署,并且在Kubernetes之上構(gòu)建其他開源軟件也很有意義。此外,作為最為活躍的開源生態(tài)之一,它有超過40000名的貢獻(xiàn)者,并且由于許多開發(fā)人員已經(jīng)熟悉Kubernetes,因此用戶可以更輕松地集成基于Kubernetes的開源解決方案。
將Kubernetes分解為構(gòu)建塊
分解Kubernetes的最簡(jiǎn)單方法是查看容器編排的核心概念。有一些容器,用作基礎(chǔ)工作模塊,然后將各個(gè)組件構(gòu)建在彼此之上,以將系統(tǒng)捆綁在一起。
組件有兩種核心類型:
工作負(fù)載管理器:一種托管和運(yùn)行容器的方法
集群管理器:代表集群決策的全局方法
在Kubernetes術(shù)語中,這些角色由工作節(jié)點(diǎn)和管理工作的控制平面(即Kubernetes組件)完成。
管理工作負(fù)載
Kubernetes工作節(jié)點(diǎn)具有嵌套的組件層。在基礎(chǔ)層是容器本身。
集群及其組件
從技術(shù)上講,容器在容器中運(yùn)行,容器是Kubernetes集群中的原子對(duì)象類型。它們之間的關(guān)系如下:
Pod:Pod定義了應(yīng)用程序的邏輯單元;它可以包含一個(gè)或多個(gè)容器,并且每個(gè)Pod都部署到一個(gè)節(jié)點(diǎn)上。
節(jié)點(diǎn)(Node):這是在集群中充當(dāng)工作負(fù)載的虛擬機(jī);Pod在節(jié)點(diǎn)上運(yùn)行。
集群:由工作節(jié)點(diǎn)組成,由控制平面管理。
每個(gè)節(jié)點(diǎn)都運(yùn)行一個(gè)稱為kublet的代理,該代理用于在容器中運(yùn)行容器,而一個(gè)kube-proxy用于管理網(wǎng)絡(luò)規(guī)則。
管理集群
工作節(jié)點(diǎn)管理容器,Kubernetes控制平面對(duì)集群進(jìn)行全局決策。
控制平面及其組件
控制平面包含幾個(gè)基本組件:
內(nèi)存存儲(chǔ)(etcd):這是所有集群數(shù)據(jù)的后端存儲(chǔ)。雖然可以使用其他后備存儲(chǔ)etcd運(yùn)行Kubernetes集群,但默認(rèn)情況下是開源分布式鍵值存儲(chǔ)。
調(diào)度程序(kube-scheduler):調(diào)度程序負(fù)責(zé)將新創(chuàng)建的Pod分配給適當(dāng)?shù)墓?jié)點(diǎn)。
API前端(kube-apiserver):這是開發(fā)人員可以與Kubernetes進(jìn)行交互的網(wǎng)關(guān),以部署服務(wù),獲取指標(biāo),檢查日志等。
控制器管理器(kube-controller-manager):監(jiān)控集群并進(jìn)行必要的更改,以使集群保持所需的狀態(tài),例如擴(kuò)展節(jié)點(diǎn),為每個(gè)復(fù)制控制器維護(hù)正確的Pod數(shù)量以及創(chuàng)建新的命名空間。
控制平面做出決策以確保集群正常運(yùn)行,并抽象化這些決策,讓開發(fā)者不必?fù)?dān)心它們。它的功能非常復(fù)雜,系統(tǒng)的用戶需要了解控制平面的邏輯約束,而又不會(huì)陷入細(xì)節(jié)上。
使用控制器和模板
集群的組件決定了集群如何進(jìn)行自我管理,但是開發(fā)者管理員如何告訴集群來運(yùn)行軟件?這是控制器和模板發(fā)揮作用的地方。
控制器編排Pod,而Kubernetes則針對(duì)不同的用例使用不同類型的控制器。但是關(guān)鍵的是Jobs(用于一次性完成的作業(yè))和ReplicaSets(用于運(yùn)行一組指定的提供服務(wù)的相同容器)。
像Kubernetes中的其他所有內(nèi)容一樣,這些概念構(gòu)成了更復(fù)雜的系統(tǒng)的構(gòu)建塊,這些系統(tǒng)允許開發(fā)者運(yùn)行彈性服務(wù)。建議不要直接使用ReplicaSets,而應(yīng)該使用Deployments。部署代表用戶管理ReplicaSet,并允許滾動(dòng)更新。Kubernetes部署可確保僅在更新某些Pod時(shí)將它們關(guān)閉,從而實(shí)現(xiàn)零停機(jī)時(shí)間部署。同樣,CronJobs管理作業(yè),并用于運(yùn)行計(jì)劃的和重復(fù)的流程。Kubernetes的許多層都允許更好的自定義,但是CronJobs和Deployments足以滿足大多數(shù)用例。
一旦知道選擇哪個(gè)控制器來運(yùn)行服務(wù),就需要使用模板對(duì)其進(jìn)行配置。
模板剖析
Kubernetes模板是一個(gè)YAML文件,用于定義容器運(yùn)行所用的參數(shù)。就像任何形式的代碼配置一樣,它具有自己的特定格式和要求,需要學(xué)習(xí)很多東西。但慶幸的是,需要提供的信息與針對(duì)任何容器編排運(yùn)行代碼相同:
告訴它如何命名應(yīng)用程序
告訴它在哪里尋找容器的鏡像(通常稱為容器注冊(cè)表)
告訴它要運(yùn)行多少個(gè)實(shí)例(在上面的術(shù)語中,為ReplicaSets的數(shù)量)
配置的靈活性是Kubernetes的眾多優(yōu)勢(shì)之一。使用不同的資源和模板,還可以提供有關(guān)以下內(nèi)容的集群信息:
環(huán)境變量
密碼位置
容器應(yīng)掛載以供使用的任何數(shù)據(jù)卷
每個(gè)容器或Pod允許使用多少CPU和內(nèi)存
容器應(yīng)運(yùn)行的特定命令
而這樣的例子還有很多
匯集全部
組合來自不同資源的模板,使用戶可以互操作Kubernetes中的組件,并根據(jù)自己的需求自定義它們。
在更大的生態(tài)系統(tǒng)中,開發(fā)者可以通過結(jié)合使用ConfigMap和Secrets的Jobs,services和Deployments來組合成一個(gè)應(yīng)用程序(在部署過程中),所有這些操作都必須經(jīng)過精心策劃。
這些編排步驟的管理可以手動(dòng)完成,也可以使用常見的軟件包管理選項(xiàng)之一來完成。雖然絕對(duì)有可能根據(jù)Kubernetes API進(jìn)行自己的部署,但是打包配置通常是一個(gè)好主意(特別是如果要交付的開源軟件可能是由不在團(tuán)隊(duì)中的人直接部署和管理的)。
Kubernetes首選的軟件包管理器是Helm。使用Helm并不需要花很多時(shí)間,它使你可以打包自己的軟件,以便在Kubernetes集群上輕松安裝。
到此,相信大家對(duì)“怎么理解Kubernetes容器編排的構(gòu)建塊”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(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)容。