乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      如何有效可靠地管理大規(guī)模Kubernetes集群?

       萬(wàn)皇之皇 2019-08-16

      前言

      Kubernetes以其超前的設(shè)計(jì)理念和優(yōu)秀的技術(shù)架構(gòu),在容器編排領(lǐng)域拔得頭籌。越來(lái)越多的公司開始在生產(chǎn)環(huán)境部署實(shí)踐 Kubernetes,在阿里巴巴和螞蟻金服 Kubernetes 已被大規(guī)模用于生產(chǎn)環(huán)境。

      Kubernetes的出現(xiàn)使得廣大開發(fā)同學(xué)也能運(yùn)維復(fù)雜的分布式系統(tǒng),它大幅降低了容器化應(yīng)用部署的門檻,但運(yùn)維和管理一個(gè)生產(chǎn)級(jí)的高可用 Kubernetes 集群仍十分困難。

      本文將分享螞蟻金服是如何有效可靠地管理大規(guī)模 Kubernetes 集群的,并會(huì)詳細(xì)介紹集群管理系統(tǒng)核心組件的設(shè)計(jì)。
       

      系統(tǒng)概覽

      Kubernetes集群管理系統(tǒng)需要具備便捷的集群生命周期管理能力,完成集群的創(chuàng)建、升級(jí)和工作節(jié)點(diǎn)的管理。在大規(guī)模場(chǎng)景下,集群變更的可控性直接關(guān)系到集群的穩(wěn)定性,因此管理系統(tǒng)可監(jiān)控、可灰度、可回滾的能力是系統(tǒng)設(shè)計(jì)的重點(diǎn)之一。除此之外,超大規(guī)模集群中,節(jié)點(diǎn)數(shù)量已經(jīng)達(dá)到 10K 量級(jí),節(jié)點(diǎn)硬件故障、組件異常等問題會(huì)常態(tài)出現(xiàn)。面向大規(guī)模集群的管理系統(tǒng)在設(shè)計(jì)之初就需要充分考慮這些異常場(chǎng)景,并能夠從這些異常場(chǎng)景中自恢復(fù)。

      設(shè)計(jì)模式

      基于這些背景,我們?cè)O(shè)計(jì)了一個(gè)面向終態(tài)的集群管理系統(tǒng)。系統(tǒng)定時(shí)檢測(cè)集群當(dāng)前狀態(tài),判斷是否與目標(biāo)狀態(tài)一致,出現(xiàn)不一致時(shí),Operators 會(huì)發(fā)起一系列操作,驅(qū)動(dòng)集群達(dá)到目標(biāo)狀態(tài)。這一設(shè)計(jì)參考控制理論中常見的負(fù)反饋閉環(huán)控制系統(tǒng),系統(tǒng)實(shí)現(xiàn)閉環(huán),可以有效抵御系統(tǒng)外部的干擾,在我們的場(chǎng)景下,干擾對(duì)應(yīng)于節(jié)點(diǎn)軟硬件故障。

      架構(gòu)設(shè)計(jì)

      如上圖,元集群是一個(gè)高可用的 Kubernetes 集群,用于管理 N 個(gè)業(yè)務(wù)集群的 Master 節(jié)點(diǎn)。業(yè)務(wù)集群是一個(gè)服務(wù)生產(chǎn)業(yè)務(wù)的 Kubernetes 集群。SigmaBoss 是集群管理入口,為用戶提供便捷的交互界面和可控的變更流程。

      元集群中部署的 Cluster-Operator 提供了業(yè)務(wù)集群集群創(chuàng)建、刪除和升級(jí)能力,Cluster-Operator面向終態(tài)設(shè)計(jì),當(dāng)業(yè)務(wù)集群 Master 節(jié)點(diǎn)或組件異常時(shí),會(huì)自動(dòng)隔離并進(jìn)行修復(fù),以保證業(yè)務(wù)集群 Master 節(jié)點(diǎn)達(dá)到穩(wěn)定的終態(tài)。這種采用 Kubernetes 管理 Kubernetes 的方案,我們稱作 Kube on Kube 方案,簡(jiǎn)稱 KOK 方案。

      業(yè)務(wù)集群中部署有 Machine-Operator 和節(jié)點(diǎn)故障自愈組件用于管理業(yè)務(wù)集群的工作節(jié)點(diǎn),提供節(jié)點(diǎn)新增、刪除、升級(jí)和故障處理能力。在 Machine-Operator 提供的單節(jié)點(diǎn)終態(tài)保持的能力上,SigmaBoss 上構(gòu)建了集群維度灰度變更和回滾能力。

      核心組件

      集群終態(tài)保持器

      基于 K8S CRD,在元集群中定義了 Cluster CRD 來(lái)描述業(yè)務(wù)集群終態(tài),每個(gè)業(yè)務(wù)集群對(duì)應(yīng)一個(gè) Cluster 資源,創(chuàng)建、刪除、更新 Cluster 資源對(duì)應(yīng)于實(shí)現(xiàn)業(yè)務(wù)集群創(chuàng)建、刪除和升級(jí)。Cluster-Operator watch Cluster 資源,驅(qū)動(dòng)業(yè)務(wù)集群Master 組件達(dá)到 Cluster 資源描述的終態(tài)。

      業(yè)務(wù)集群 Master 組件版本集中維護(hù)在 ClusterPackageVersion CRD 中,ClusterPackageVersion 資源記錄了 Master 組件(如:api-server、controller-manager、scheduler、operators 等)的鏡像、默認(rèn)啟動(dòng)參數(shù)等信息。Cluster 資源唯一關(guān)聯(lián)一個(gè) ClusterPackageVersion,修改 Cluster CRD 中記錄的 ClusterPackageVersion 版本即可完成業(yè)務(wù)集群 Master 組件發(fā)布和回滾。

      節(jié)點(diǎn)終態(tài)保持器

      Kubernetes集群工作節(jié)點(diǎn)的管理任務(wù)主要有:

      • 節(jié)點(diǎn)系統(tǒng)配置、內(nèi)核補(bǔ)丁管理
      • docker / kubelet 等組件安裝、升級(jí)、卸載
      • 節(jié)點(diǎn)終態(tài)和可調(diào)度狀態(tài)管理(如關(guān)鍵 DaemonSet 部署完成后才允許開啟調(diào)度)
      • 節(jié)點(diǎn)故障自愈

      為實(shí)現(xiàn)上述管理任務(wù),在業(yè)務(wù)集群中定義了 Machine CRD 來(lái)描述工作節(jié)點(diǎn)終態(tài),每一個(gè)工作節(jié)點(diǎn)對(duì)應(yīng)一個(gè) Machine 資源,通過修改 Machine 資源來(lái)管理工作節(jié)點(diǎn)。

      MachineCRD 定義如下圖所示,spec 中描述了節(jié)點(diǎn)需要安裝的組件名和版本,status 中記錄有當(dāng)前這個(gè)工作節(jié)點(diǎn)各組件安裝運(yùn)行狀態(tài)。除此之外,Machine CRD 還提供了插件式終態(tài)管理能力,用于與其它節(jié)點(diǎn)管理Operators 協(xié)作,這部分會(huì)在后文詳細(xì)介紹。

      工作節(jié)點(diǎn)上的組件版本管理由 MachinePackageVersion CRD 完成。MachinePackageVersion維護(hù)了每個(gè)組件的 rpm 版本、配置和安裝方法等信息。一個(gè)Machine 資源會(huì)關(guān)聯(lián) N 個(gè)不同的MachinePackageVersion,用來(lái)實(shí)現(xiàn)安裝多個(gè)組件。


      在 Machine、MachinePackageVersion CRD 基礎(chǔ)上,設(shè)計(jì)實(shí)現(xiàn)了節(jié)點(diǎn)終態(tài)控制器 Machine-Operator。Machine-Operator watchMachine 資源,解析 MachinePackageVersion,在節(jié)點(diǎn)上執(zhí)行運(yùn)維操作來(lái)驅(qū)動(dòng)節(jié)點(diǎn)達(dá)到終態(tài),并持續(xù)守護(hù)終態(tài)。

      節(jié)點(diǎn)終態(tài)管理

      隨著業(yè)務(wù)訴求的變化,節(jié)點(diǎn)管理已不再局限于安裝 docker / kubelet 等組件,我們需要實(shí)現(xiàn)如等待日志采集DaemonSet 部署完成才可以開啟調(diào)度的需求,而且這類需求變得越來(lái)越多。如果將終態(tài)統(tǒng)一交由Machine-Operator 管理,勢(shì)必會(huì)增加 Machine-Operator 與其它組件的耦合性,而且系統(tǒng)的擴(kuò)展性會(huì)受到影響。因此,我們?cè)O(shè)計(jì)了一套節(jié)點(diǎn)終態(tài)管理的機(jī)制,來(lái)協(xié)調(diào)Machine-Operator 和其它節(jié)點(diǎn)運(yùn)維 Operators。設(shè)計(jì)如下圖所示:
      全量 ReadinessGates:記錄節(jié)點(diǎn)可調(diào)度需要檢查的 Condition 列表
      ConditionConfigMap:各節(jié)點(diǎn)運(yùn)維 Operators 終態(tài)狀態(tài)上報(bào) ConfigMap
      協(xié)作關(guān)系:

      1. 外部節(jié)點(diǎn)運(yùn)維 Operators 檢測(cè)并上報(bào)與自己相關(guān)的子終態(tài)數(shù)據(jù)至對(duì)應(yīng)的 ConditionConfigMap;
      2. Machine-Operator 根據(jù)標(biāo)簽獲取節(jié)點(diǎn)相關(guān)的所有子終態(tài)Condition ConfigMap,并同步至 Machine status 的 conditions中
      3. Machine-Operator 根據(jù)全量 ReadinessGates 中記錄的 Condition 列表,檢查節(jié)點(diǎn)是否達(dá)到終態(tài),未達(dá)到終態(tài)的節(jié)點(diǎn)不開啟調(diào)度

      節(jié)點(diǎn)故障自愈

      我們都知道物理機(jī)硬件存在一定的故障概率,隨著集群節(jié)點(diǎn)規(guī)模的增加,集群中會(huì)常態(tài)出現(xiàn)故障節(jié)點(diǎn),如果不及時(shí)修復(fù)上線,這部分物理機(jī)的資源將會(huì)被閑置。

      為解決這一問題,我們?cè)O(shè)計(jì)了一套故障發(fā)現(xiàn)、隔離、修復(fù)的閉環(huán)自愈系統(tǒng)。

      如下圖所示,故障發(fā)現(xiàn)方面,采取 Agent 上報(bào)和監(jiān)控系統(tǒng)主動(dòng)探測(cè)相結(jié)合的方式,保證了故障發(fā)現(xiàn)的實(shí)時(shí)性和可靠性(Agent上報(bào)實(shí)時(shí)性比較好,監(jiān)控系統(tǒng)主動(dòng)探測(cè)可以覆蓋 Agent 異常未上報(bào)場(chǎng)景)。故障信息統(tǒng)一存儲(chǔ)于事件中心,關(guān)注集群故障的組件或系統(tǒng)都可以訂閱事件中心事件拿到這些故障信息。
      節(jié)點(diǎn)故障自愈系統(tǒng)會(huì)根據(jù)故障類型創(chuàng)建不同的維修流程,例如:硬件維系流程、系統(tǒng)重裝流程等。維修流程中優(yōu)先會(huì)隔離故障節(jié)點(diǎn)(暫停節(jié)點(diǎn)調(diào)度),然后將節(jié)點(diǎn)上 Pod 打上待遷移標(biāo)簽來(lái)通知 PAAS 或 MigrateController 進(jìn)行 Pod 遷移,完成這些前置操作后,會(huì)嘗試恢復(fù)節(jié)點(diǎn)(硬件維修、重裝操作系統(tǒng)等),修復(fù)成功的節(jié)點(diǎn)會(huì)重新開啟調(diào)度,長(zhǎng)期未自動(dòng)修復(fù)的節(jié)點(diǎn)由人工介入排查處理。

      風(fēng)險(xiǎn)防范

      在 Machine-Operator 提供的原子能力基礎(chǔ)上,系統(tǒng)中設(shè)計(jì)實(shí)現(xiàn)了集群維度的灰度變更和回滾能力。此外,為了進(jìn)一步降低變更風(fēng)險(xiǎn),Operators 在發(fā)起真實(shí)變更時(shí)都會(huì)進(jìn)行風(fēng)險(xiǎn)評(píng)估,架構(gòu)示意圖如下。
      高風(fēng)險(xiǎn)變更操作(如:刪除節(jié)點(diǎn)、重裝系統(tǒng))接入統(tǒng)一限流中心,限流中心維護(hù)了不同類型操作的限流策略,若觸發(fā)限流,則熔斷變更。

      為了評(píng)估變更過程是否正常,我們會(huì)在變更前后,對(duì)各組件進(jìn)行健康檢查,組件的健康檢查雖然能夠發(fā)現(xiàn)大部分異常,但不能覆蓋所有異常場(chǎng)景。所以,風(fēng)險(xiǎn)評(píng)估過程中,系統(tǒng)會(huì)從事件中心、監(jiān)控系統(tǒng)中獲取集群業(yè)務(wù)指標(biāo)(如:Pod創(chuàng)建成功率),如果出現(xiàn)異常指標(biāo),則自動(dòng)熔斷變更。
       

      結(jié)束語(yǔ)

      本文主要和大家分享了現(xiàn)階段螞蟻金服 Kubernetes 集群管理系統(tǒng)的核心設(shè)計(jì),核心組件大量使用 Operator 面向終態(tài)設(shè)計(jì)模式。

      未來(lái)我們會(huì)嘗試將集群規(guī)模變更切換為 Operator 面向終態(tài)設(shè)計(jì)模式,探索如何在面向終態(tài)的模式下,做到變更的可監(jiān)控、可灰度和可回滾,實(shí)現(xiàn)變更的無(wú)人值守。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多