K8S節(jié)點(diǎn)異常怎么辦,k8s 哪個(gè)節(jié)點(diǎn)是master節(jié)點(diǎn),k8s查看節(jié)點(diǎn)剩余資源K8S節(jié)點(diǎn)異常怎么辦節(jié)點(diǎn)健康檢測(cè)的意思是在K8S集群運(yùn)行過(guò)程中,由于運(yùn)行時(shí)組件問(wèn)題、內(nèi)核死鎖、資源不足等各種原因,節(jié)點(diǎn)經(jīng)常不可用。默認(rèn)情況下,Kubelet會(huì)監(jiān)控PIDPressure、MemoryPressure、DiskPressure......
節(jié)點(diǎn)健康檢測(cè)
的意思是
在K8S集群運(yùn)行過(guò)程中,由于運(yùn)行時(shí)組件問(wèn)題、內(nèi)核死鎖、資源不足等各種原因,節(jié)點(diǎn)經(jīng)常不可用。默認(rèn)情況下,Kubelet會(huì)監(jiān)控PIDPressure、MemoryPressure、DiskPressure等節(jié)點(diǎn)的資源狀態(tài),但當(dāng)Kubelet報(bào)告這些狀態(tài)時(shí),節(jié)點(diǎn)可能已經(jīng)很長(zhǎng)時(shí)間不可用,Kubelet可能已經(jīng)啟動(dòng)了驅(qū)逐Pod的操作。所以原生K8S對(duì)node 健康的檢測(cè)機(jī)制在某些場(chǎng)景下是不完善的。我們需要能夠提前發(fā)現(xiàn)節(jié)點(diǎn)的問(wèn)題,需要更詳細(xì)的指標(biāo)來(lái)描述節(jié)點(diǎn)的健康狀態(tài),并采取相應(yīng)的恢復(fù)策略,實(shí)現(xiàn)智能運(yùn)維,減輕開(kāi)發(fā)者和運(yùn)營(yíng)商的負(fù)擔(dān)。
節(jié)點(diǎn)問(wèn)題檢測(cè)器
NPD(NodeProblemDetector)是一個(gè)開(kāi)源的Kubernetes社區(qū)集群節(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將解析用戶的配置文件。當(dāng)有日志可以匹配用戶配置的正則表達(dá)式時(shí),它可以通過(guò)NodeCondition、Event或Promethues度量報(bào)告檢測(cè)到的異常狀態(tài)。除了日志匹配功能,NPD還接受用戶自己編寫(xiě)的自定義檢測(cè)插件。用戶可以開(kāi)發(fā)自己的腳本或可執(zhí)行文件,并將其集成到NPD的插件中,這樣NPD就可以定期執(zhí)行檢測(cè)程序。
TKE 節(jié)點(diǎn)健康檢測(cè)
在TKE,NPD以擴(kuò)展組件的形式集成,NPD的能力增強(qiáng),稱為nodeployment detector Pulse(NPD Plus)擴(kuò)展組件。用戶可以一鍵將NPDPlus擴(kuò)展組件部署到現(xiàn)有集群,也可以選擇在創(chuàng)建集群時(shí)同時(shí)部署NPDPlus。在騰訊云容器團(tuán)隊(duì)K8S集群的長(zhǎng)期運(yùn)維經(jīng)驗(yàn)中,提取了一些能夠發(fā)現(xiàn)特定形式節(jié)點(diǎn)異常的指標(biāo),并將其部分集成到NPDPlus中。比如檢測(cè)NPDPlus容器中Kubelet和Docker的systemd狀態(tài),檢測(cè)主機(jī)的文件描述符和線程數(shù)壓力。具體指標(biāo)如下:
TKE使用NPDPlus的目的是提前發(fā)現(xiàn)節(jié)點(diǎn)可能的不可用狀態(tài),而不是在節(jié)點(diǎn)不再可用之后報(bào)告狀態(tài)健康。當(dāng)用戶在TKE集群中部署NPDPlus時(shí),使用命令kubectl describe node會(huì)發(fā)現(xiàn)更多的節(jié)點(diǎn)情況。例如,F(xiàn)DPressure指示該節(jié)點(diǎn)上已經(jīng)使用的文件描述符的數(shù)量是否達(dá)到了機(jī)器所允許的最大值的80%;ThreadPressure表示一個(gè)節(jié)點(diǎn)上的線程數(shù)量是否達(dá)到了機(jī)器允許數(shù)量的90%,依此類推。用戶可以監(jiān)控這些情況,并在出現(xiàn)異常情況時(shí)提前采取規(guī)避措施。
同時(shí),K8S目前認(rèn)為node NotReady的機(jī)制取決于kubecontrollermanager的參數(shù)設(shè)置。當(dāng)節(jié)點(diǎn)的網(wǎng)絡(luò)被完全阻斷時(shí),K8S很難發(fā)現(xiàn)第二級(jí)節(jié)點(diǎn)的異常,這在某些場(chǎng)景下(比如直播、在線會(huì)議等)是不可接受的。).針對(duì)這種場(chǎng)景,NPDPlus繼承了分布式node 健康檢測(cè)功能,可以在幾秒內(nèi)快速檢測(cè)出一個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)狀態(tài)以及是否可以與其他節(jié)點(diǎn)通信,同時(shí)不依賴于與K8S主組件的通信。
節(jié)點(diǎn)自我修復(fù)
收集節(jié)點(diǎn)的健康狀態(tài)是為了在service 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)雪崩,在進(jìn)行自愈動(dòng)作之前進(jìn)行嚴(yán)格的限流,防止節(jié)點(diǎn)大規(guī)模重啟。同時(shí),為了防止集群中的節(jié)點(diǎn)發(fā)生雪崩,在進(jìn)行自愈動(dòng)作之前進(jìn)行了嚴(yán)格的電流限制。具體戰(zhàn)略是:
集群中同時(shí)只允許有一個(gè)節(jié)點(diǎn)自愈,兩次自愈行為間隔至少1分鐘。
當(dāng)一個(gè)新節(jié)點(diǎn)添加到集群中時(shí),它將給予該節(jié)點(diǎn)2分鐘的容錯(cuò)時(shí)間,以防止由于剛添加到集群中的節(jié)點(diǎn)的不穩(wěn)定性而導(dǎo)致的錯(cuò)誤自愈。
當(dāng)節(jié)點(diǎn)在觸發(fā)CVM自愈操作重啟后仍處于異常狀態(tài)時(shí),節(jié)點(diǎn)將在3小時(shí)內(nèi)不再執(zhí)行任何自愈操作。
NPDPlus將記錄節(jié)點(diǎn)事件中執(zhí)行的所有自愈操作,以便集群管理員可以方便地了解節(jié)點(diǎn)上的事件。
用戶指南
1.登錄騰訊云容器服務(wù)控制臺(tái),點(diǎn)擊要?jiǎng)?chuàng)建NPDPlus的集群。
2.點(diǎn)擊集群詳細(xì)信息頁(yè)面左側(cè)的組件管理,在組件管理中選擇NodeProblemDetectorPlus。
3.配置NodeProblemDetectorPlus參數(shù),可以根據(jù)具體節(jié)點(diǎn)的狀態(tài)選擇執(zhí)行不同的自愈動(dòng)作。
4.選擇“確定”,然后單擊“完成”,一鍵創(chuàng)建它。
在集群形成管理中,可以看到NPDPlus正在成功運(yùn)行:
特別聲明:以上文章內(nèi)容僅代表作者本人觀點(diǎn),不代表ESG跨境電商觀點(diǎn)或立場(chǎng)。如有關(guān)于作品內(nèi)容、版權(quán)或其它問(wèn)題請(qǐng)于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號(hào)密碼登錄
平臺(tái)顧問(wèn)
微信掃一掃
馬上聯(lián)系在線顧問(wèn)
小程序
ESG跨境小程序
手機(jī)入駐更便捷
返回頂部