溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

K8S節(jié)點異常怎么辦

發(fā)布時間:2021-12-16 09:19:29 來源:億速云 閱讀:187 作者:柒染 欄目:云計算

K8S節(jié)點異常怎么辦,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

節(jié)點健康檢測

意義

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

Node-Problem-Detector

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

TKE中的節(jié)點健康檢測

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

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

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

節(jié)點自愈

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

  • 在同一時刻只允許集群中的一個節(jié)點進行自愈行為,并且兩個自愈行為之間至少間隔1分鐘

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

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

NPDPlus會將執(zhí)行過的所有自愈動作記錄在Node的Event中,方便集群管理員了解在Node上發(fā)生的事件。 K8S節(jié)點異常怎么辦

使用指南

  1. 登錄騰訊云容器服務(wù)控制臺,點擊想要創(chuàng)建NPDPlus的集群。

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

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

  4. 選擇確定,點擊完成即可一鍵創(chuàng)建。 K8S節(jié)點異常怎么辦

  5. 在集群的組建管理中查看到NPDPlus運行中說明NPDPlus運行成功: K8S節(jié)點異常怎么辦


關(guān)于K8S節(jié)點異常怎么辦問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI