托管節(jié)點(diǎn)池節(jié)點(diǎn)自動(dòng)恢復(fù)
托管節(jié)點(diǎn)池自動(dòng)監(jiān)控節(jié)點(diǎn)狀態(tài),確保節(jié)點(diǎn)正常運(yùn)行。當(dāng)節(jié)點(diǎn)發(fā)生異常時(shí),ACK會(huì)自動(dòng)執(zhí)行恢復(fù)操作。將節(jié)點(diǎn)池設(shè)置為托管模式會(huì)為所有節(jié)點(diǎn)同時(shí)開(kāi)啟自動(dòng)恢復(fù)功能。本文介紹節(jié)點(diǎn)自動(dòng)恢復(fù)的應(yīng)用場(chǎng)景和處理流程。
前提條件
已創(chuàng)建托管節(jié)點(diǎn)池,請(qǐng)參見(jiàn)管理托管節(jié)點(diǎn)池。
已開(kāi)啟事件中心。具體操作,請(qǐng)參見(jiàn)事件監(jiān)控。
觸發(fā)條件
當(dāng)您打開(kāi)了當(dāng)節(jié)點(diǎn)故障時(shí)重啟節(jié)點(diǎn)開(kāi)關(guān),節(jié)點(diǎn)自動(dòng)恢復(fù)的過(guò)程中則可能涉及節(jié)點(diǎn)的排水、替盤(pán)等操作,建議將數(shù)據(jù)保存在數(shù)據(jù)盤(pán)中。
ACK會(huì)根據(jù)節(jié)點(diǎn)的運(yùn)行狀態(tài)condition
等信息判斷是否發(fā)起自動(dòng)恢復(fù)任務(wù)。您可以執(zhí)行kubectl describe node
命令,通過(guò)condition
字段查看節(jié)點(diǎn)的運(yùn)行狀態(tài)。當(dāng)節(jié)點(diǎn)的運(yùn)行狀況異常,且異常持續(xù)時(shí)間超過(guò)閾值時(shí)間(即故障發(fā)生多長(zhǎng)時(shí)間后會(huì)觸發(fā)自動(dòng)恢復(fù)任務(wù))時(shí),ACK會(huì)發(fā)起節(jié)點(diǎn)自動(dòng)恢復(fù)行為。
具體觸發(fā)條件如下表所示。
檢測(cè)項(xiàng)目 | 描述 | 風(fēng)險(xiǎn)等級(jí) | 閾值時(shí)間 | 自動(dòng)恢復(fù)行為 |
KubeletNotReady(KubeletHung) | kubelet意外停止工作,導(dǎo)致節(jié)點(diǎn)NotReady。 | 高 | 180s |
|
KubeletNotReady(PLEG) | PLEG健康檢查失敗,導(dǎo)致節(jié)點(diǎn)NotReady。 | 中 | 180s |
|
KubeletNotReady(SandboxError) | PodSandbox not found,導(dǎo)致kubelet無(wú)法正常啟動(dòng)。 | 高 | 180s |
|
RuntimeOffline | containerd或Docker停止工作,節(jié)點(diǎn)不可用。 | 高 | 90s |
|
NTPProblem | 時(shí)間同步服務(wù)(ntpd或chronyd)異常。 | 高 | 10s | 重啟ntpd或chronyd。 |
SystemdOffline | Systemd狀態(tài)異常,無(wú)法啟動(dòng)、銷(xiāo)毀容器。 | 高 | 90s | 如果打開(kāi)了當(dāng)節(jié)點(diǎn)故障時(shí)重啟節(jié)點(diǎn)開(kāi)關(guān),則重啟ECS實(shí)例。 |
ReadonlyFilesystem | 節(jié)點(diǎn)文件系統(tǒng)變?yōu)橹蛔x。 | 高 | 90s | 如果打開(kāi)了當(dāng)節(jié)點(diǎn)故障時(shí)重啟節(jié)點(diǎn)開(kāi)關(guān),則重啟ECS實(shí)例。 |
恢復(fù)流程
節(jié)點(diǎn)的自愈功能包括問(wèn)題診斷、恢復(fù)決策和恢復(fù)任務(wù)。
節(jié)點(diǎn)診斷依賴(lài)NPD組件和事件中心。使用自愈功能前,請(qǐng)確保已正確安裝NPD和事件中心。具體操作,請(qǐng)參見(jiàn)事件監(jiān)控。
一個(gè)完整的恢復(fù)流程中,節(jié)點(diǎn)會(huì)在以下?tīng)顟B(tài)流轉(zhuǎn)。
正常:當(dāng)前節(jié)點(diǎn)不存在可被發(fā)現(xiàn)的故障。
故障:當(dāng)前節(jié)點(diǎn)發(fā)現(xiàn)故障。
恢復(fù)失敗:當(dāng)前節(jié)點(diǎn)無(wú)法恢復(fù)。
當(dāng)節(jié)點(diǎn)的運(yùn)行狀態(tài)發(fā)生變化并持續(xù)一段時(shí)間后,ACK將判定該狀態(tài)符合故障狀態(tài),存在節(jié)點(diǎn)故障。
當(dāng)發(fā)現(xiàn)節(jié)點(diǎn)故障時(shí),ACK會(huì)根據(jù)故障原因觸發(fā)對(duì)應(yīng)恢復(fù)任務(wù),并記錄相應(yīng)的事件。
當(dāng)恢復(fù)任務(wù)完成后,故障狀態(tài)解除,節(jié)點(diǎn)恢復(fù)正常狀態(tài)。
當(dāng)恢復(fù)任務(wù)完成后,故障狀態(tài)依然存在,節(jié)點(diǎn)會(huì)被置為恢復(fù)失敗狀態(tài)。
如果集群中存在多個(gè)節(jié)點(diǎn)池,節(jié)點(diǎn)池之間的節(jié)點(diǎn)自動(dòng)恢復(fù)可以并行執(zhí)行。
如果一個(gè)節(jié)點(diǎn)池存在多個(gè)異常節(jié)點(diǎn),自動(dòng)恢復(fù)會(huì)以串行的方式逐個(gè)恢復(fù)。一旦某個(gè)節(jié)點(diǎn)恢復(fù)失敗,ACK將停止對(duì)該節(jié)點(diǎn)池中其他故障節(jié)點(diǎn)的恢復(fù)。
當(dāng)節(jié)點(diǎn)處于恢復(fù)失敗狀態(tài)時(shí),該節(jié)點(diǎn)不會(huì)再觸發(fā)自動(dòng)恢復(fù)操作。相應(yīng)的故障解除后,該節(jié)點(diǎn)才能再次進(jìn)行自動(dòng)恢復(fù)操作。
自動(dòng)恢復(fù)事件
ACK觸發(fā)自動(dòng)恢復(fù)時(shí),會(huì)將相關(guān)的事件寫(xiě)入事件中心。您可以在集群信息頁(yè)面選擇
,查看自動(dòng)恢復(fù)的記錄和具體操作。內(nèi)容 | 級(jí)別 | 詳細(xì)描述 |
NodeRepairStart | Normal | 節(jié)點(diǎn)開(kāi)始恢復(fù)。 |
NodeRepairAction | Normal | 節(jié)點(diǎn)恢復(fù)操作,例如重啟kubelet。 |
NodeRepairSucceed | Normal | 節(jié)點(diǎn)恢復(fù)成功。 |
NodeRepairFailed | Warning | 節(jié)點(diǎn)恢復(fù)失敗。 如遇相關(guān)問(wèn)題,請(qǐng)參見(jiàn)常見(jiàn)問(wèn)題。 |
NodeRepairIgnore | Normal | 節(jié)點(diǎn)恢復(fù)跳過(guò),當(dāng)ECS處于非運(yùn)行狀態(tài)時(shí),不對(duì)節(jié)點(diǎn)進(jìn)行操作。 |
常見(jiàn)問(wèn)題
自動(dòng)恢復(fù)失敗怎么辦?
由于故障的復(fù)雜性,自動(dòng)恢復(fù)任務(wù)無(wú)法修復(fù)所有的故障場(chǎng)景。當(dāng)節(jié)點(diǎn)自動(dòng)恢復(fù)任務(wù)執(zhí)行失敗,或者恢復(fù)任務(wù)執(zhí)行完畢后故障并未解除,ACK會(huì)將節(jié)點(diǎn)標(biāo)記為恢復(fù)失敗狀態(tài)。
如果托管節(jié)點(diǎn)池中恢復(fù)某個(gè)節(jié)點(diǎn)失敗,在故障修復(fù)前,該節(jié)點(diǎn)池不會(huì)再觸發(fā)自動(dòng)恢復(fù)操作。您可以提交工單聯(lián)系技術(shù)支持,手動(dòng)修復(fù)故障。
如何忽略某節(jié)點(diǎn)的自動(dòng)恢復(fù)?
如果托管節(jié)點(diǎn)池中的某個(gè)節(jié)點(diǎn)需要暫時(shí)忽略自動(dòng)恢復(fù),您可以為該節(jié)點(diǎn)添加以下Label。
alibabacloud.com/repair.policy=disable
相關(guān)文檔
如果您想通過(guò)移除故障節(jié)點(diǎn)并重新添加的方式解決問(wèn)題,請(qǐng)?jiān)?span data-tag="ph" id="ph-2da-9f2-t1p" class="ph">容器服務(wù)管理控制臺(tái)的節(jié)點(diǎn)池頁(yè)面操作。詳細(xì)信息,請(qǐng)參見(jiàn)移除節(jié)點(diǎn)、添加已有節(jié)點(diǎn)。
請(qǐng)勿執(zhí)行以下操作:
通過(guò)
kubectl delete node
方式移除節(jié)點(diǎn)。通過(guò)ECS控制臺(tái)、ESS控制臺(tái)移除和添加節(jié)點(diǎn)。