狠狠躁夜夜躁人人爽超碰97香蕉|色婷婷日日躁夜夜躁|亚洲一区欧美一区在线播|久久久久久性高|伊人久久大香线蕉亚洲

歡迎來到同城快修-附近家電維修、家電清洗、家電安裝服務平臺

24小時家電維修熱線:

400—1558638

當前位置:主頁 > 洗衣機 > 維修資訊 >

海爾洗衣機故障err8(海爾洗衣機故障err7怎么解決)

發(fā)布日期:2022-08-05 11:10:46 瀏覽:
海爾洗衣機故障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一覽表及原理分析

01 Cluster Controller

cluster controller 主要就是處理 Cluster 資源對象的邏輯,負責處理 Cluster 對應需要的關(guān)聯(lián)資源。

相關(guān)資源對象:Cluster

創(chuàng)建 Cluster 的時候,需要在 Karmada 中創(chuàng)建對應的 execution namespace,這個 namespace 中會保存所有這個集群相關(guān)的 Work 對象。刪除Cluster的時候,需要在 Karmada 中刪除對應的execution namespace。Cluster 資源對象保存在 karmada-cluster 這個 namespace 中,這個 namespace 中保存了所有集群對應的 Cluster 資源對象。02 Cluster status controller:

cluster status controller 主要就是處理 cluster status 資源對象的邏輯,用來收集 Cluster 的狀態(tài),保存到 Cluster 的 status 字段中,同步上報到 Karmada 的控制平面中。

相關(guān)資源對象:Cluster

watch Cluster 對象,然后執(zhí)行 sync 方法,同步上報集群的狀態(tài)給Karmada 控制平面 (也就是 Karmada 集群中,karmada-cluster 這個 namespace 中的某一個 cluster 對象)。收集當前 agent 所在集群的狀態(tài)信息,這些信息包含 Nodes 統(tǒng)計,Pods 相關(guān)的資源統(tǒng)計,Kubernetes 版本,以及 Kubernetes 集群支持的資源對象的類型的 GVR,其中包含 CRD 的支持信息等,然后同步更新到 Karmada 控制平面 Cluster 對象的 status 中。具體的狀態(tài)包含哪些信息,請查看《云原生多云應用利器– Karmada 總覽篇》03 namespace sync controller:

namespace sync controller 主要就是處理 namespace 資源對象的邏輯,負責將 Karmada 控制平面創(chuàng)建的 namespace 在集群中同步創(chuàng)建出來。

相關(guān)資源對象:namespace

namespace sync controller 就是為了將在 Karmada 中創(chuàng)建的 namespace 在所有的工作集群中也去創(chuàng)建出來。namespace 是 “karmada-cluster”,或者是 “karmada-system”,或者是 “default”, 或者 namespace 是 “karmada-es-<xxx>”, 或者是 “kube-<xxx>” 這樣 namespace 是不需要處理的。以及被包含在 SkippedPropagatingNamespaces 配置中的 namespace,也不需要處理。04 Resourse Template controller:

detector 模塊中包含了通用 controller 負責 resource template 的 Kubernetes 資源對象的調(diào)和處理邏輯,以及匹配 PropagationPolicy。主要就是處理 PropagationPolicy 資源對象的邏輯,來派生出資源對象對應的 ResourceBinding 對象。

相關(guān)資源對象:PropagationPolicy, Kubernetes 支持的所有的資源對象 (包括 CRD)

定義處理 PropagationPolicy / ClusterPropagationPolicy 的 informer,event handler,以及對應的 reconciler 方法。定義處理 ResourceBinding / ClusterResourceBinding 的 informer,event handler,以及對應的 reconciler 方法。定義處理所有原生 Kubernetes 資源對象的 informer,event handler,以及對應的 reconciler 方法,然后為其創(chuàng)建對應的 ResourceBinding 對象用于調(diào)度。根據(jù) Kubernetes 的對象定義以及 PropagationPolicy 構(gòu)建 ResourceBinding 對象,同時這個 ResourceBinding 的 OwnerReferences 設(shè)置了這個 Kubernetes 的對象,這樣就會在刪除 Kubernetes 對象的時候刪除這個 ResourceBinding,這個也是目前 ResourceBinding 會被刪除的唯一邏輯了。所以雖然 ResourceBinding 是因為 PropagationPolicy 的創(chuàng)建而被派生出來,但是不會因為 PropagationPolicy 的刪除而刪除。在刪除 PropagationPolicy 刪除的時候,只會去除 PropagationPolicy 和 Kubernetes 對象的關(guān)系,這個關(guān)系體現(xiàn)在,Kubernetes object 會在匹配到 PropagationPolicy 的時候在自己的 label 上增加 PropagationPolicy 相關(guān)的 label。ResourceBinding 中不會包含 Kubernetes 資源對象的詳細信息,只會包含類型,namespace,name,版本,副本數(shù),cpu/memory 請求,節(jié)點親和性,真正詳細的 Kubernetes 對象的處理是在 controller 的syncbinding() 方法中完成,其中是通過workload, err := helper.FetchWorkload (c.DynamicClient,c.InformerManager,c.RESTMapper, binding.Spec.Resource) 去拿到真正的 Kubernetes 資源對象的定義的。每隔 30s 去發(fā)現(xiàn)新的 Kubernetes 的資源對象類型,只要這些資源對象支持 list,watch,delete 方法,當然也包括 crd 類型。05 Binding controller:

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 負責的資源對象。

watch Work 對象為指定計算集群包含的所有的 Work 對象所負責的資源對象的類型創(chuàng)建對應的 informer 對象,同時調(diào)用 informer 的 WaitForCacheSync,當 WaitForCacheSync 結(jié)束了之后,也就是 list 結(jié)束了,接下來就是 watch 的任務了。這個就是 list and watch 的核心機制。在 watch 所有 Work 負責的資源對象的時候,設(shè)置了一個事件處理器,這個事情處理器會負責處理所有相關(guān)資源對象的 Add,Update,Delete 事件。這些事件存放在 queue 中。啟動一個異步的 AsyncWorker, 設(shè)置一定的 WorkerNumber 數(shù)量的 goroutines 去處理 queue 里的數(shù)據(jù),這里的數(shù)據(jù)是帶有集群信息的 fedkey。從 queue 中獲取 fedkey,判斷這個 fedkey 的對應的集群中的資源對象,如果這個 Work 負責的資源對象在工作集群中被非法刪除了,會重新在工作集群中創(chuàng)建出對應的資源對象。從 queue 中獲取 fedkey,判斷這個 fedkey 的對應的集群中的資源對象,如果這個 Work 負責的資源對象被修改了之后是不是修改被修改回去。如果是的話,會重新 sync 回資源對象,防止直接從工作集群中直接修改資源對象。收集 Work 對象對應的資源對象在 Worload 集群中的運行狀態(tài),然后更新到到控制平面的 Work 的 status 中。watch Karmada 控制平面的 execution namespace 中的所有 Work 對象,當有新的 Work 對象被創(chuàng)建了之后會在對應的工作集群中創(chuàng)建 Work 負責的資源對象。08 serviceexport controller:

serviceexport controller 主要就是處理 serviceexport 資源對象的狀態(tài)邏輯,將需要被其它集群發(fā)現(xiàn)的服務暴露出來。

相關(guān)資源對象:ServiceExport

當控制平面創(chuàng)建 ServiceExport 對象的時候,會對應的創(chuàng)建出 Work 對象,以及在對應的工作集群中創(chuàng)建出 ServiceExport 對象。查找出 ServiceExport 對象對應的 service 對象的 EndpointSlice 對象,將這些 EndpointSlice 對象封裝成 work 對象創(chuàng)建到控制平面中。當在控制平面刪除 ServiceExport 對象的時候,會找到對應的 work 對象,將其刪除。這里刪除的時候也會一起刪除由 ServiceExport 關(guān)聯(lián)上報上來的 EndpointSlice 對象對應的 Work 對象。因為查找要刪除的 Work 的時候是根據(jù)服務名查找的,而 ServiceExport 和 Serivce 對應的 EndpointSlice 的 Work 都是用服務名來創(chuàng)建的,所以查找的時候會一起查找到。當工作集群的 EndpointSlice 發(fā)生變化的時候,也會同步去更新控制平面的 EndpointSlice 對象,因為 ServiceExport controller 是 watch 了每一個集群的 ServiceExport 的 add 事件以及 EndpointSlice 的 add 和 update 事件的。只要 EndpointSlice 變化,就會同步到控制平面。這樣會觸發(fā) PropagationPolicy 關(guān)聯(lián)的對象發(fā)生變化,就會觸發(fā)更新 EndpointSlice 對應的 Work,也就會同步更新 ServiceImport 集群中由于 ServiceImport 而級聯(lián)出來的 EndpointSlice 了。09 endpointslice controller:endpointslice controller 主要根據(jù) serviceexport 資源對象對應到處的 Service,Service 對應的 endpointslice 上報到 Karmada 的控制面。

相關(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

首先根據(jù) HPA 的定義,獲取需要被 HPA 控制的資源對象對象,這里主要就是指的像 Deployment 這種需要計算資源的對象。根據(jù) HPA 控制的資源對象,去查找這些資源對象對應的 ResourceBinding 的 cr 對象,因為 ResourceBinding 是最終反應 Deployment 被調(diào)度到哪些集群的實時的,最終的狀態(tài)。根據(jù)找到的集群,在這些集群中創(chuàng)建每個集群對應的 Work 對象,這個 Work 對象負責的資源對象就是 HPA 對象。通過這樣的實現(xiàn),保證了 HPA 被創(chuàng)建的集群一定是和真正的工作負載是在一個集群中的,保證了 HPA 的正確的調(diào)度。12 「DaoCloud 道客」貢獻參與

目前「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è)名單。

拓展知識:

主站蜘蛛池模板: 国产精品青草久久福利不卡| 国产精品嫩草影院入口一二三| 精品一区二区人妻| 天天影视色香欲综合久久 | 久热这里只有精品12| 丰满人妻被黑人中出849| av毛片亚洲高清一区二区| 国产91九色一区二区三区| 欧美性大战xxxxx久久久| 藏春阁福利视频| 国产凹凸在线一区二区| 国产免费又爽又色又粗视频| 国产日产精品久久快鸭的功能介绍 | 国产精品igao视频网网址| 日韩人妻一区二区三区蜜桃视频| 五十路丰满中年熟女中出| 在线观看欧美黄片一区二区三区高清 | 亚洲国产成人久久精品99| 自拍偷区亚洲综合激情| 欧美亚洲精品一区二区| 欧美性猛交xxxx黑人| 国产一区日韩精品在线| 成人亚洲欧美一区二区| 国产精品美女无遮挡一区二区| 亚洲国产成人av网站| 无码成人免费全部观看| 亚洲精品一线二线三线无人区 | 亚洲精品久久久一区| 秋霞鲁丝片一区二区三区| 亚洲精品v日韩精品| 尤物yw午夜国产精品视频 | 精品一区二区三区视频男人吃奶| 亚洲制服丝袜精品久久| 亚洲中文无码成人手机版| 亚洲一区二区三区av无码| 少妇人妻陈艳和黑人教练| 视频在线播放一区二区| 国产欧美一区二区自拍| 精品小视频免费一区二区| 无码国模国产在线观看| 亚洲自偷自偷图片自拍 |