您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)Kubernetes中如何面向終態(tài)設(shè)計與控制器,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
概述
Kubernetes主要是通過ETCD來存儲所有的元數(shù)據(jù)及感知數(shù)據(jù)的變化而做相關(guān)的動作的。因此,可以認(rèn)為Kubernetes是圍繞ETCD打造的一套面向終態(tài)的編排邏輯的。
在整個Kubernetes設(shè)計理念中,面向終態(tài)是其核心理念,通過該設(shè)計理念,提升了Kubernetes同其他容器調(diào)度平臺的競爭力。
什么才是面向終態(tài)的設(shè)計
比如:我這個應(yīng)用需要10個實例;我要一個VIP;我要一個持久盤;這機器故障時,幫我自動跟換一臺,等等;
以上這些需求,通過聲明后,提交給系統(tǒng),系統(tǒng)會自動化的完成這些用戶期望的事情。而這中方式,就是一種面向終態(tài)的設(shè)計。而Kubernetes的面向終態(tài)設(shè)計也就和此類似,而暴露給用戶的使用方式就是“聲明式API”。
用戶通過該類聲明式API,提交相關(guān)的期望。Kubernetes就會去解析并保證最終的結(jié)果和用戶提交的期望是一致的。
聲明式API
Kubernetes中這套聲明式的API,主要就是用來控制內(nèi)部的資源,主要包含如下方法:
以下為一個Deployment資源,可以通過以上的API進行創(chuàng)建
apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx name: nginx-test #以上為資源的元數(shù)據(jù) spec: replicas: 1 #期望的狀態(tài),比如這里期望一個副本 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:latest name: nginx status: replicas: 1 #Kubernetes實際的狀態(tài)
當(dāng)以上這個資源通過API被創(chuàng)建后,Kubernetes就會通過內(nèi)置控制器不斷的嘗試達(dá)到用戶期望的終態(tài)。
Create : 用于創(chuàng)建一個資源對象;
Update : 用于對某個資源進行更新,采用樂觀鎖的方式控制版本;
Patch : 用于部分更新,該方法并沒有鎖,會直接覆蓋更新,當(dāng)前提供了幾種方式,如下 * Strategic Patch : 用于K8s的原生資源,不能對CRD資源使用,屬于K8s特有的。 * Json patch:RFC 6902 * Json merge:RFC 7386 * Server side apply * Delete : 刪除對象
GET : 通過name對某個namespace下的資源進行查詢
List : 給定條件查詢一批對象;
什么是控制器模式
通過“List Watch機制” 實現(xiàn)對Kubernetes相關(guān)資源變化的關(guān)注,而觸發(fā)控制器邏輯的處理,完成最終的用戶期望,并通過APIServer更新到ETCD中。而這種方式,則稱為“控制器模式”。Kubernetes很多的組件都是通過這種方式,實現(xiàn)對資源的觀察和處理的,如controller-manager,Kubelet,Scheduler等。
控制器模式下的交互
整個Kubernetes的組件都是圍繞APIServer進行交互的,除開APIServer組件,其他組件一般都不會直接交互。
整體架構(gòu)如下:
用戶通過kubectl提交一個資源給Kubernetes APIServer,然后APIServer存儲到ETCD中,此時其他組件關(guān)注自己感興趣的資源,進行監(jiān)聽,并作出反應(yīng)。
例如: 用戶提交了一個Deployment資源,期望部署3個實例。那么此時Kubernetes的APIServer會把該數(shù)據(jù)存儲到ETCD中,而此時調(diào)度器通過List Watch機制監(jiān)聽到?jīng)]有被調(diào)度到的Pod進行調(diào)度。當(dāng)標(biāo)記了該資源內(nèi)的Pod要調(diào)度到那一臺機器上后,另一個組件kubelet也會通過List Watch機制,進行最終的部署,實現(xiàn)終態(tài),完成用戶期望的3個實例的部署。
上述就是小編為大家分享的Kubernetes中如何面向終態(tài)設(shè)計與控制器了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。