本文主要介紹k8s云平臺(tái)(k8s集群升級(jí)),下面一起看看k8s云平臺(tái)(k8s集群升級(jí))相關(guān)資訊。
背景一般來說,集群的穩(wěn)定性決定了一個(gè)平臺(tái)的服務(wù)質(zhì)量和公眾口碑。當(dāng)一個(gè)平臺(tái)管理相當(dāng)數(shù)量的kub-project/kubeprober官網(wǎng)地址:
kub:。
支持大規(guī)模集群和多集群管理,在管理端配置集群與診斷項(xiàng)的關(guān)系,統(tǒng)一查看所有集群的診斷結(jié)果;
云原生核心邏輯由運(yùn)營(yíng)商實(shí)現(xiàn),提供完整的kubernetes api兼容性;
對(duì)自定義檢驗(yàn)項(xiàng)目的可擴(kuò)展支持。
其核心架構(gòu)如下:
與監(jiān)控系統(tǒng)不同的是,kubeprober是從巡視檢查的角度來驗(yàn)證集群的功能是否正常。作為前向鏈接,監(jiān)控?zé)o法覆蓋系統(tǒng)中的所有場(chǎng)景。即使系統(tǒng)中各環(huán)境的監(jiān)測(cè)數(shù)據(jù)正常,也不能保證系統(tǒng)100%可用。因此,我們需要一個(gè)工具從反方向證明系統(tǒng)的可用性,從而基本上先于用戶找到集群中不可用的點(diǎn),比如:
集群中的所有節(jié)點(diǎn)是否都可以調(diào)度,是否有特殊污點(diǎn)等。pod能否正常創(chuàng)建、銷毀、驗(yàn)證從kubernetes、kubelet到dock測(cè)試連接,驗(yàn)證kube-proxy的鏈接是否正常;解析內(nèi)部或外部域名以驗(yàn)證coredns是否正常工作;訪問入口域名,驗(yàn)證集群中的入口組件是否正常工作;創(chuàng)建并刪除一個(gè)命名空間,以驗(yàn)證相關(guān)的webhook是否正常工作;對(duì)etcd進(jìn)行put/get/delete操作,驗(yàn)證etcd是否正常運(yùn)行;通過mysql-client的操作驗(yàn)證mysql是否正常運(yùn)行;模擬用戶登錄和操作業(yè)務(wù)系統(tǒng),驗(yàn)證業(yè)務(wù)主要流程是否正常;檢查每個(gè)環(huán)境的證書是否過期;云資源的到期檢查;.....組件介紹kubeprober將作為一個(gè)整體來實(shí)現(xiàn)核心邏輯,remotedialer用于維護(hù)被管集群和管理集群之間的心跳鏈路,被管集群通過rbac賦予probe-agent所需的最小權(quán)限,并通過心跳鏈路實(shí)時(shí)上報(bào)被管集群的元信息和訪問apiserver的令牌,從而實(shí)現(xiàn)在管理集群中操作被管集群相關(guān)資源的功能。
probe-master運(yùn)行在管理集群上的操作員維護(hù)兩個(gè)crd:一個(gè)是集群,用于管理被管理的集群;另一個(gè)是probe,用于管理內(nèi)置和用戶編寫的診斷項(xiàng)目。probe-master通過watch的兩個(gè)crd向被管集群推送最新的診斷配置,同時(shí)probe-master提供了查看被管集群診斷結(jié)果的界面。
probe-agent是運(yùn)行在被管理集群上的一個(gè)操作符,它維護(hù)著兩個(gè)crd:一個(gè)是與probe-master完全一致的probe,probe-agent根據(jù)probe的定義執(zhí)行集群的診斷項(xiàng);另一個(gè)是probestatus,用來記錄每個(gè)探針的診斷結(jié)果。用戶可以在受管集群中使用它。通過kubectl get probestatus檢查該集群的診斷結(jié)果。
probekubepro中運(yùn)行的診斷計(jì)劃是什么?我們稱之為探針,探針是診斷項(xiàng)目的集合。我們建議將統(tǒng)一場(chǎng)景中的診斷項(xiàng)作為探針運(yùn)行,探針代理組件將觀察探針資源,執(zhí)行探針中定義的診斷項(xiàng),并將結(jié)果寫入probestatus的資源中。
我們期望一個(gè)輸出能夠清晰的看到集群當(dāng)前的運(yùn)行狀態(tài),所以我們建議所有的probe都要盡可能的屬于應(yīng)用、中間件、kubernetes、基礎(chǔ)設(shè)置這四個(gè)場(chǎng)景,這樣我們?cè)陲@示狀態(tài)的時(shí)候就可以清晰的、自上而下的看到系統(tǒng)的哪一級(jí)導(dǎo)致了問題。
目前探頭比較少,還在不斷完善中,希望和大家一起打造。歡迎粉絲共建:定制探針
相比其他診斷工具,社區(qū)里已經(jīng)有kuberhealthy和kubeeye在做kubernetes聚類診斷。
kuberheathy為您提供了一個(gè)清晰的框架,讓您輕松編寫自己的診斷項(xiàng)目,crd診斷項(xiàng)目,并輕松使用kubernetes對(duì)單個(gè)kubernetes進(jìn)行體檢。
kubeeye也是針對(duì)單個(gè)集群的。主要通過調(diào)用kubernetes的event api和node-problem-detector來檢測(cè)集群控制平面和各種節(jié)點(diǎn)問題,同時(shí)也支持用戶自定義的診斷項(xiàng)目。
事實(shí)上,kubeprober所做的是診斷kubernetes集群,并提供一個(gè)框架來編寫自己的診斷項(xiàng)。此外,kubeprober主要解決大規(guī)模kubernetes集群的診斷問題。通過集中化的思想,將集群和診斷項(xiàng)抽象到crd中,可以在中央kubernetes集群中管理其他kubernetes診斷項(xiàng)的配置和收集診斷結(jié)果,也將解決未來大規(guī)模kubernetes集群的運(yùn)維問題。
如何使用kubeprober主要解決大規(guī)模kubernetes集群的診斷問題。通常,我們選擇一個(gè)集群作為主集群,部署probe-master,其他集群作為被管理集群,部署probe-agent。詳細(xì)說明請(qǐng)參考官方文件。
可視化kubeprober根據(jù)探針策略在多集群中執(zhí)行診斷。損壞的項(xiàng)目將產(chǎn)生大量診斷事件。因此,直觀地顯示這些診斷項(xiàng)目尤為重要。此時(shí),如果有一個(gè)全局儀表盤,統(tǒng)一查看和分析大規(guī)模集群的海量診斷項(xiàng),將更有利于我們掌握這些集群的運(yùn)行狀態(tài)。
kubeprober支持將診斷事件寫入influxdb,并通過grafana配置圖統(tǒng)一顯示診斷結(jié)果。例如,我們將錯(cuò)誤事件統(tǒng)一顯示為最高優(yōu)先級(jí)。
同時(shí),我們還可以通過展開probe-agent報(bào)告的集群信息來顯示詳細(xì)的集群列表:
結(jié)論隨著數(shù)字化的逐步發(fā)展,企業(yè)的it架構(gòu)變得越來越復(fù)雜。如何在復(fù)雜的環(huán)境下保證業(yè)務(wù)的連續(xù)性和穩(wěn)定性?相信這是每個(gè)it從業(yè)者都會(huì)面臨的問題。如果您對(duì)穩(wěn)定性或kuberprober項(xiàng)目感興趣,請(qǐng)聯(lián)系我們進(jìn)行深入討論。同時(shí)也歡迎開源愛好者參與,共同打造一款大型的kubernetes集群管理神器。為kubeprober做貢獻(xiàn)
我們致力于解決社區(qū)用戶在實(shí)際生產(chǎn)環(huán)境中的反饋問題和需求。如有任何問題或建議,歡迎關(guān)注【爾大爾大】官方賬號(hào)并給我們留言,加入erda用戶群參與交流或在github上與我們討論!
標(biāo)簽:
正常聚類
了解更多k8s云平臺(tái)(k8s集群升級(jí))相關(guān)內(nèi)容請(qǐng)關(guān)注本站點(diǎn)。