海爾洗衣機故障err8(海爾洗衣機故障err7怎么解決)
前沿拓展:
DaoCloud道客:云原生多云應用利器-Karmada控制器
在上一篇《云原生多云應用利器– Karmada 總覽篇》中已經(jīng)介紹了多云的相關(guān)簡介的內(nèi)容和架構(gòu)。接下來,在這一篇中來一起看看 Karmada 中有哪些 Controllers 來協(xié)調(diào)完成多云的控制邏輯。
Controller (控制器) 在 Kubernetes 中是邏輯能力的主要體現(xiàn)所在,根據(jù)資源對象的狀態(tài)來完成調(diào)和工作,讓資源對象逐步接近期待的狀態(tài),這個就是 Kubernetes 的申明式特性。
在 Karmada 中,同樣需要對 Karmada 自己的資源對象,實現(xiàn)對應的申明式特性,這就需要實現(xiàn)對應的 Controller。在Karmada 中目前的版本中有 11 個 Controllers,接下來就從每一個控制器所負責的資源對象,以及原理來分析一下,在 Karmada 中是怎樣完成多云能力的。
Karmada Controllers一覽表及原理分析cluster controller 主要就是處理 Cluster 資源對象的邏輯,負責處理 Cluster 對應需要的關(guān)聯(lián)資源。
相關(guān)資源對象:Cluster
cluster status controller 主要就是處理 cluster status 資源對象的邏輯,用來收集 Cluster 的狀態(tài),保存到 Cluster 的 status 字段中,同步上報到 Karmada 的控制平面中。
相關(guān)資源對象:Cluster
namespace sync controller 主要就是處理 namespace 資源對象的邏輯,負責將 Karmada 控制平面創(chuàng)建的 namespace 在集群中同步創(chuàng)建出來。
相關(guān)資源對象:namespace
detector 模塊中包含了通用 controller 負責 resource template 的 Kubernetes 資源對象的調(diào)和處理邏輯,以及匹配 PropagationPolicy。主要就是處理 PropagationPolicy 資源對象的邏輯,來派生出資源對象對應的 ResourceBinding 對象。
相關(guān)資源對象:PropagationPolicy, Kubernetes 支持的所有的資源對象 (包括 CRD)
binding controller 主要就是處理 ResourceBinding 資源對象的增刪改邏輯,ResourceBinding 的調(diào)和能力是派生出 work 對象,work 對象是和特定集群關(guān)聯(lián)的。一個 work 只能屬于一個集群,代表一個集群的資源對象的模型封裝。
相關(guān)資源對象:ResourceBinding 和 ClusterResourceBinding
負責 ResourceBinding 的處理,根據(jù) binding 去創(chuàng)建對應的 Work 對象到集群對應的 execution space 中。在生成 Work 的時候,會處理 OverridePolicy,將需要覆蓋的數(shù)據(jù)更新到 Work 對應的 manifest 中。目前支持的 override 的方式主要是 4 種,包括:PlaintextOverrider,mageOverrider,CommandOverrider,ArgsOverrider。apiVersion: policy.karmada.io/v1alpha1 kind: OverridePolicy metadata: name: nginx-propagation spec: resourceselectors: 一 apiVersion: apps/v1 kind: Deployment name: nginx targetcluster: clusterNames: -10-23-20-93 overriders: plaintext: 一 path: "/spec/template/spec/containers/O/image" operator: replace value: "nginx:test"根據(jù)調(diào)度器計算好的每一個集群負責的副本數(shù),如果調(diào)度器計算出來的所有集群的對應的副本數(shù)是 0,說明沒有找合適的集群,就用 ReplicaSchedulingPolicy 根據(jù)權(quán)重去計算每一個集群應該負責的副本數(shù),這個 ReplicaSchedulingPolicy 的計算副本分配的方式是用 static weight。收集每一個 binding 的狀態(tài),一個 binding 會包含多個 Work,因為同一個資源對象,在每一個集群中就需要一個 Work,所有 binding 的狀態(tài)是所有工作集群中 Work 的狀態(tài)的匯總,匯總之后將這個狀態(tài)設(shè)置到 binding 的 status 中去。備注: 原理圖參見第 4 部分的圖
06 execution controller:execution controller 主要就是處理 Work 資源對象的增刪改邏輯,用于處理 Work,將 Work 負責的 Kubernetes 資源對象在對應的集群上創(chuàng)建出來。
相關(guān)資源對象:Work
watch Karmada 控制平面的 execution namespace 中的所有 Work 對象,當有新的 Work 對象被創(chuàng)建了之后會在對應的工作集群中創(chuàng)建 Work 負責的資源對象。watch Karmada 控制平面的 execution namespace 中的所有 Work 對象,當有 Work 對象被刪除的時候,會在工作集群中,刪除 Work 對象負責的資源對象。watch Karmada 控制平面的 execution namespace 中的所有 Work 對象,當有 Work 對象被修改了之后,會在工作集群中,修改 Work 對象負責的資源對象。備注: 原理圖參見第 4 部分的圖
07 work status controller:work status controller 主要就是處理 Work 資源對象的狀態(tài)邏輯,負責收集 Work 的狀態(tài),也就是 Work 對應的資源對象的狀態(tài),只是這個狀態(tài)是保存在 Work 的 status 字段里的。
相關(guān)資源對象:Work,以及 Work 負責的資源對象。
serviceexport controller 主要就是處理 serviceexport 資源對象的狀態(tài)邏輯,將需要被其它集群發(fā)現(xiàn)的服務暴露出來。
相關(guān)資源對象:ServiceExport
相關(guān)資源對象:EndpointSlice 相關(guān)的 Work
負責將 work 中的 manifest 是 EndpointSlice 的 work 中的 EndpointSlice 對象,在 Karmada 控制平面中創(chuàng)建對應的 EndpointSlice 的對象。其中 Karmada 控制平面中的 EndpointSlice 的 namespace 就是和 work 中 manifest 中的 EndpointSlice 的 namespace 一樣。但是 Karmada 控制平面中的 EndpointSlice 的 name 不一樣,格式為:“imported-<cluster name>-<endpointslice name>”。備注: 原理圖參見第 8 部分的圖
10 serviceimport controller:serviceimport controller 主要負責根據(jù) ServiceExport 暴露出來的 Service,在自己負責的集群中創(chuàng)建對應的 service,注意 service 的名稱不是完全一樣的,同時在自己負責的集群中也創(chuàng)建對應的 EndpointSlice,這個 EndpointSlice 的數(shù)據(jù)就是來源于 EndpointSlice controller 中上報到 karmada 控制平面的 EndpointSlice 對象,具體是通過在 karmada-webhook 中給 ServiceImport 的 PropagationPolicy 中增加了 EndpointSlice 的下發(fā)能力。
相關(guān)資源對象:ServiceImport
根據(jù)在 karmada 控制平面中創(chuàng)建的 ServiceImport ,去創(chuàng)建對應的 Service,這個 Service 是創(chuàng)建在 Karmada 控制平面的。如果控制平面中的 ServiceImport,也會刪除控制平面中的由這個 ServiceImport 派生出來的 Service。由于 ServiceImport 的 controller 中會在控制平面中創(chuàng)建 Service,同時由于 ServiceExport 的 controller 中,會創(chuàng)建一個被 export 的 Service 的 EndpointSlice 的 work 在控制平面中,這個 work 會被 EndpointSlice controller 控制,同時 EndpointSlice controller 在控制平面中創(chuàng)建對應的 EndpointSlice 對象,EndpointSlice 中的每一個 Endpoint 的 IP 都是 Pod 的 IP 地址。在創(chuàng)建 ServiceImport 需要的 PropagationPolicy 的時候會在 karmada-webhook 中修改 PropagationPolicy 的 resource selector,在其中增加 Service 和 EndpointSlice 的部分,helper.GetFollowedResourceSelectorsWhenMatchServiceImport(policy.Spec.ResourceSelectors)。 最后會隨著 detector 和 binding controller 中的邏輯,在對應的集群的 execution 的 space 中創(chuàng)建對應 Service 和 EndpointSlice 的 work,然后由 execution controller 去對應的工作集群去創(chuàng)建真正的資源對象。這樣在 ServiceImport 的集群中,就可以通過派生出來的 Service,進行訪問遠程被 export 出來的服務。前提是兩個集群之間的 Pod 網(wǎng)絡是互通的。由 ServiceImport 派生出來的 service 的 name 為 :“derived-<service name>”。備注: 原理圖參見第 8 部分的圖
11 hpa controller:hpa controller 主要負責將 Karmada 控制面中創(chuàng)建的 HPA 對象通過創(chuàng)建 Work 的方式下發(fā)到對應的集群中。
相關(guān)資源對象:HPA
目前「DaoCloud 道客」在 Karmada 項目中,主要參與調(diào)度模塊和部署模塊的設(shè)計開發(fā),也參與相關(guān) bug 的修復,完成了非 root 權(quán)限快速安裝karmada 的功能開發(fā),對優(yōu)先級調(diào)度和搶占特性、插件管理特性等方面,也在持續(xù)的關(guān)注和跟進。
圖注:已提交的PR
圖注:跟進的項目
DaoCloud 公司簡介:「DaoCloud 道客」云原生領(lǐng)域的創(chuàng)新領(lǐng)導者,成立于 2014 年底,擁有自主知識產(chǎn)權(quán)的核心技術(shù),致力于打造開放的云原生操作系統(tǒng)為企業(yè)數(shù)字化轉(zhuǎn)型賦能。產(chǎn)品能力覆蓋云原生應用的開發(fā)、交付、運維全生命周期,并提供公有云、私有云和混合云等多種交付方式。成立迄今,公司已在金融科技、先進制造、智能汽車、零售網(wǎng)點、城市大腦等多個領(lǐng)域深耕,標桿客戶包括交通銀行、浦發(fā)銀行、上汽集團、東風汽車、海爾集團、屈臣氏、金拱門(麥當勞)等。目前,公司已完成了 D 輪超億元融資,被譽為科技領(lǐng)域準獨角獸企業(yè)。公司在北京、武漢、深圳、成都設(shè)立多家分公司及合資公司,總員工人數(shù)超過 350 人,是上海市高新技術(shù)企業(yè)、上海市“科技小巨人”企業(yè)和上海市“專精特新”企業(yè),并入選了科創(chuàng)板培育企業(yè)名單。
拓展知識:
- 移動電源電路板維修(如何自行修復故障)08-01
-
有圖像無伴音故障部件(解決有圖像無伴音故障的部件問題:一步步排查與修復
2024-08-25