騰訊云:K8S節(jié)點(diǎn)異常怎么辦?TKE節(jié)點(diǎn)健康檢查和自愈來(lái)幫忙

來(lái)源: 騰訊云原生
作者:孔碩
時(shí)間:2020-10-16
17474
在K8S集群運(yùn)行的過(guò)程中,節(jié)點(diǎn)常常會(huì)因?yàn)檫\(yùn)行時(shí)組件的問(wèn)題、內(nèi)核死鎖、資源不足等各種各樣的原因不可用。

節(jié)點(diǎn)健康檢測(cè)

意義

在K8S集群運(yùn)行的過(guò)程中,節(jié)點(diǎn)常常會(huì)因?yàn)檫\(yùn)行時(shí)組件的問(wèn)題、內(nèi)核死鎖、資源不足等各種各樣的原因不可用。Kubelet默認(rèn)對(duì)節(jié)點(diǎn)的PIDPressure、MemoryPressure、DiskPressure等資源狀態(tài)進(jìn)行了監(jiān)控,但是當(dāng)Kubelet上報(bào)這些狀態(tài)的時(shí)候,節(jié)點(diǎn)很可能已經(jīng)長(zhǎng)時(shí)間處于不可用狀態(tài)了,并且Kubelet可能已經(jīng)開(kāi)始了驅(qū)逐Pod的操作。所以原生K8S對(duì)節(jié)點(diǎn)健康的檢測(cè)機(jī)制在一些場(chǎng)景下是不完善的,我們需要能夠在節(jié)點(diǎn)出現(xiàn)問(wèn)題之前提前發(fā)現(xiàn),并且需要更加細(xì)致化的指標(biāo)來(lái)描述節(jié)點(diǎn)的健康狀態(tài)并且采取相應(yīng)的恢復(fù)策略,實(shí)現(xiàn)智能運(yùn)維,節(jié)省開(kāi)發(fā)和運(yùn)維人員的負(fù)擔(dān)。

Node-Problem-Detector

NPD(Node-Problem-Detector)是Kubernetes社區(qū)開(kāi)源的集群節(jié)點(diǎn)的健康檢測(cè)組件。NPD提供了通過(guò)正則匹配系統(tǒng)日志或文件來(lái)發(fā)現(xiàn)節(jié)點(diǎn)異常的功能。用戶可以通過(guò)自己的運(yùn)維經(jīng)驗(yàn),配置可能產(chǎn)生異常問(wèn)題日志的正則表達(dá)式,選擇不同的上報(bào)方式。NPD會(huì)解析用戶的配置文件,當(dāng)有日志能匹配到用戶配置的正則表達(dá)式時(shí),可以通過(guò)NodeCondition、Event或Promethues Metric等方式將檢測(cè)到的異常狀態(tài)上報(bào)。除了日志匹配功能,NPD還給接受用戶自己編寫(xiě)的自定義檢測(cè)插件,用戶可以開(kāi)發(fā)自己的腳本或可執(zhí)行文件集成到NPD的插件中,讓NPD定期執(zhí)行檢測(cè)程序。

TKE中的節(jié)點(diǎn)健康檢測(cè)

在TKE中通過(guò)擴(kuò)展組件的形式集成了NPD,并且對(duì)NPD的能力做了增強(qiáng),稱為NodeProblemDetectorPuls(NPDPlus)擴(kuò)展組件。用戶可以對(duì)已有集群一鍵部署NPDPlus擴(kuò)展組件,也可以在創(chuàng)建集群的時(shí)候選擇在創(chuàng)建集群的同時(shí)部署NPDPlus。在騰訊云容器團(tuán)隊(duì)長(zhǎng)期運(yùn)營(yíng)運(yùn)維K8S集群的經(jīng)驗(yàn)中,提取了一些可以通過(guò)特定形式發(fā)現(xiàn)節(jié)點(diǎn)異常的指標(biāo),并且把其中的一些指標(biāo)集成在了NPDPlus中。例如在NPDPlus容器中檢測(cè)Kubelet和Docker的systemd狀態(tài),以及檢測(cè)主機(jī)的文件描述符和線程數(shù)壓力等。具體指標(biāo)如下所示:

640.png

TKE使用NPDPlus的目的是能夠提前發(fā)現(xiàn)節(jié)點(diǎn)可能不可用狀態(tài),而不是當(dāng)節(jié)點(diǎn)已經(jīng)不健康后再上報(bào)狀態(tài)。當(dāng)用戶在TKE集群中部署了NPDPlus后,使用命令kubectl describe node會(huì)發(fā)現(xiàn)多出了很多Node Condition,如FDPressure表示該節(jié)點(diǎn)上已經(jīng)使用的文件描述符數(shù)量是否已經(jīng)達(dá)到機(jī)器允許最大值的80%;ThreadPressure表示節(jié)點(diǎn)上的線程數(shù)是否已經(jīng)達(dá)到機(jī)器允許的90%等等。用戶可以監(jiān)控這些Condition,當(dāng)異常狀態(tài)出現(xiàn)時(shí),提前采取規(guī)避策略。

同時(shí),K8S目前認(rèn)為節(jié)點(diǎn)NotReady的機(jī)制依賴于kube-controller-manager的參數(shù)設(shè)定,當(dāng)節(jié)點(diǎn)網(wǎng)絡(luò)完全不通的情況下K8S很難在秒級(jí)別發(fā)現(xiàn)節(jié)點(diǎn)的異常,這在一些場(chǎng)景下(如直播、在線會(huì)議等)是不能接受的。針對(duì)這種場(chǎng)景,NPDPlus中繼承了分布式節(jié)點(diǎn)健康檢測(cè)功能,可以在秒級(jí)快速地檢測(cè)節(jié)點(diǎn)網(wǎng)絡(luò)狀態(tài),以及是否能與其他節(jié)點(diǎn)相互通信,同時(shí)不依賴與K8S master組件的通信。

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

采集節(jié)點(diǎn)的健康狀態(tài)是為了能夠在業(yè)務(wù)Pod不可用之前提前發(fā)現(xiàn)節(jié)點(diǎn)異常,從而運(yùn)維或開(kāi)發(fā)人員可以對(duì)Docker、Kubelet或節(jié)點(diǎn)進(jìn)行修復(fù)。在NPDPlus中,為了減輕運(yùn)維人員的負(fù)擔(dān),提供了根據(jù)采集到的節(jié)點(diǎn)狀態(tài)從而進(jìn)行不同自愈動(dòng)作的能力。集群管理員可以根據(jù)節(jié)點(diǎn)不同的狀態(tài)配置相應(yīng)的自愈能力,如重啟Docker、重啟Kubelet或重啟CVM節(jié)點(diǎn)等。同時(shí)為了防止集群中的節(jié)點(diǎn)雪崩,在執(zhí)行自愈動(dòng)作之前做了嚴(yán)格的限流,防止節(jié)點(diǎn)大規(guī)模重啟。同時(shí)為了防止集群中的節(jié)點(diǎn)雪崩,在執(zhí)行自愈動(dòng)作之前做了嚴(yán)格的限流。具體策略為:

·在同一時(shí)刻只允許集群中的一個(gè)節(jié)點(diǎn)進(jìn)行自愈行為,并且兩個(gè)自愈行為之間至少間隔1分鐘

·當(dāng)有新節(jié)點(diǎn)添加到集群中時(shí),會(huì)給節(jié)點(diǎn)2分鐘的容忍時(shí)間,防止由于節(jié)點(diǎn)剛剛添加到集群的不穩(wěn)定性導(dǎo)致錯(cuò)誤自愈

·當(dāng)節(jié)點(diǎn)觸發(fā)重啟CVM自愈動(dòng)作后還處于異常狀態(tài)時(shí),則在3小時(shí)之內(nèi)此節(jié)點(diǎn)不再執(zhí)行任何自愈動(dòng)作

NPDPlus會(huì)將執(zhí)行過(guò)的所有自愈動(dòng)作記錄在Node的Event中,方便集群管理員了解在Node上發(fā)生的事件。

640 (1).png

使用指南

1.登錄騰訊云容器服務(wù)控制臺(tái),點(diǎn)擊想要?jiǎng)?chuàng)建NPDPlus的集群。

2.點(diǎn)擊集群詳情頁(yè)左側(cè)的組件管理,在組件管理中選中NodeProblemDetectorPlus(節(jié)點(diǎn)異常檢測(cè)Plus)。

3.配置NodeProblemDetectorPlus參數(shù),可以選擇根據(jù)特定節(jié)點(diǎn)的狀態(tài)執(zhí)行不同的自愈動(dòng)作。

4.選擇確定,點(diǎn)擊完成即可一鍵創(chuàng)建。

640 (2).png

在集群的組建管理中查看到NPDPlus運(yùn)行中說(shuō)明NPDPlus運(yùn)行成功:

640 (3).png

立即登錄,閱讀全文
版權(quán)說(shuō)明:
本文內(nèi)容來(lái)自于騰訊云原生,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
騰訊云數(shù)據(jù)庫(kù)PostgreSQL全面支持PG 17
騰訊云數(shù)據(jù)庫(kù)PostgreSQL全面支持PG 17
即日起,騰訊云PostgreSQL全面支持PostgreSQL 17.0。所有用戶可使用大版本升級(jí)能力升級(jí)至最新的PostgreSQL 17.0進(jìn)行體驗(yàn),也可以在產(chǎn)品購(gòu)買(mǎi)頁(yè)直接購(gòu)買(mǎi)。
騰訊云
云服務(wù)
2024-12-152024-12-15
高可用這個(gè)問(wèn)題,加機(jī)器就能解決?
高可用這個(gè)問(wèn)題,加機(jī)器就能解決?
互聯(lián)網(wǎng)服務(wù)的可用性問(wèn)題是困擾企業(yè)IT人員的達(dá)摩克利斯之劍:防于未然,體現(xiàn)不出價(jià)值。已然發(fā)生,又面臨P0危機(jī)。就更別提穩(wěn)定性建設(shè)背后顯性的IT預(yù)算問(wèn)題與隱性的人員成本問(wèn)題。
騰訊云
云服務(wù)
2024-11-252024-11-25
TDSQL TDStore引擎版替換HBase:在歷史庫(kù)場(chǎng)景中的成本與性能優(yōu)勢(shì)
TDSQL TDStore引擎版替換HBase:在歷史庫(kù)場(chǎng)景中的成本與性能優(yōu)勢(shì)
HBase憑借其高可用性、高擴(kuò)展性和強(qiáng)一致性,以及在廉價(jià)PC服務(wù)器上的低部署成本,廣泛應(yīng)用于大規(guī)模數(shù)據(jù)分析。
騰訊云
云服務(wù)
2024-11-042024-11-04
復(fù)雜查詢性能弱,只讀分析引擎來(lái)幫忙
復(fù)雜查詢性能弱,只讀分析引擎來(lái)幫忙
隨著當(dāng)今業(yè)務(wù)的高速發(fā)展,復(fù)雜多表關(guān)聯(lián)的場(chǎng)景越來(lái)越普遍。但基于行式存儲(chǔ)的數(shù)據(jù)庫(kù)在進(jìn)行復(fù)雜查詢時(shí)性能相對(duì)較弱。
騰訊云
云服務(wù)
2024-11-022024-11-02
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開(kāi)掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家