當Node Problem Detector(簡稱NPD)組件檢測到節點上的故障並產生節點的事件(Event)或者Condition上報給叢集時,ACK的自愈系統(ACK Node Repairer)會監聽每個節點上的新故障事件,並根據配置對故障節點進行相應的修複操作。本文介紹如何安裝和配置ACK Node Repairer。
前提條件
您已建立以下任一類型叢集:
您已安裝ACK Node Problem Detector。具體步驟,請參見事件監控。
背景資訊
節點自愈系統預設整合了常見的節點故障以及對應的節點修複操作。當節點出現故障時,自愈系統會自動對故障所在節點觸發相應的修複操作。當故障被修複後,NPD會修改故障狀態,達到故障檢測以及修複的閉環。營運人員也可以自訂需要採取修複操作的故障以及具體的修複操作。
NPD是Kubernetes節點診斷的工具,可以將節點的異常,例如Docker Engine Hang、Linux Kernel Hang、網路出網異常、檔案描述符異常轉換為節點的事件。
安裝ack-node-repairer
使用ACK的自愈系統(ACK Node Repairer)前,您需要安裝ack-node-repairer組件。
登入Container Service管理主控台,在左側導覽列選擇 。
在應用市場頁面,搜尋並選中ack-node-repairer。
在應用詳情頁面,單擊頁面右上方的一鍵部署。
在建立面板,選擇叢集和命名空間,然後單擊下一步。
在參數配置頁面,選擇最新Chart 版本,在參數地區,設定帳號的AK資訊,然後單擊確定。
AK資訊設定如下:
accessKey:nodeRepairer.accessKey
accessSecret:nodeRepairer.accessSecret
配置ack-node-repairer
安裝ACK的自愈系統(ACK Node Repairer)後,ACK Node Repairer會預設開啟目前的版本所支援的所有自愈功能。您可對某個自愈功能進行開關和配置,以下以NTP服務故障為例。
查看default-node-repairer資源的YAML檔案。
在安裝ACK自愈系統後,叢集會預設在kube-system命名空間下建立類型為noderepairers.nodes.alibabacloud.com,名為default-node-repairer的資源,該資源定義了自愈系統所監控的節點問題及相應的修複操作。執行以下命令查看YAML檔案中定義的內容。
kubectl -n kube-system get noderepairers.nodes.alibabacloud.com default-node-repairer -o yaml
修改default-node-repairer。
在spec.rules列表中加入用於檢測
NTPProblem
的detector和對應問題修複的healers,其定義片段如下:spec: rules: # 用於檢測NTPProblem的detector,和對應修複問題的nodeOperation。 - detector: conditionType: NTPProblem type: conditionType paused: false healers: - nodeOperation: restart-ntpd type: nodejob
說明針對每一種故障情境的自愈,您需要關聯故障的節點Condition與其對應的修複操作。rules.detector.conditionType是叢集中出現的異常Condition。當設定rules.detector.paused為true時,此問題的自愈功能將被關閉。
至此,當叢集節點上有NTP服務異常時,ACK的自愈架構將會通過OOS到節點上執行
systemctl restart chronyd.service
命令,重啟NTP服務。
自愈過程與結果記錄
叢集會預設在kube-system命名空間下建立類型為nodejobs.nodes.alibabacloud.com的資源來記錄每次執行的自愈操作。您可以執行以下命令查看資源中定義的內容,並通過Status欄位查看自愈執行的結果。
kubectl -n kube-system get nodejobs.nodes.alibabacloud.com {nodejob_cr_name} -o yaml