中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

k8s故障檢測與自愈的示例分析

發布時間:2021-09-17 14:23:04 來源:億速云 閱讀:405 作者:柒染 欄目:web開發

這篇文章給大家介紹k8s故障檢測與自愈的示例分析,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

k8s故障檢測與自愈的示例分析

組件故障

組件故障可以認為是節點故障的子類,只是故障來源是K8S基礎組件的一部分。

DNS故障:6個DNS Pod中的2個出現無法解析外部DNS名稱的情況。后果是大量線上業務因域名解析。

CNI故障:少數幾個節點的容器網絡和外部斷開,節點訪問自身的Pod IP沒有問題,但是其它節點無法訪問故障節點的Pod  IP。這種情況下,Pod本機的健康檢查無效,導致故障實例持續存在,一定比例的業務請求失敗。

kubenurse會對ingress、dns、apiserver、kube-proxy進行網絡探測。

使用KubeNurse進行集群網絡監控

節點故障

  • 硬件錯誤: CPU/Memory/磁盤故障

  • kernel問題: kernel deadlock/corrupted file systems

  • 容器運行時錯誤: Docker假死

  • 基礎設施服務故障: NTP故障

node-problem-detector

  • 根源:  在kubernetes集群上,通常我們只是管制集群本身以及容器的穩定運行。但是這些穩定性都是強依賴節點node的穩定的。可是node的管理,在kubernetes是比較弱的,因為可能對于kubernetes的初始設計來說,這些應該是IaaS的事。但是隨著kubernetes的發展,它越來變成了一個操作系統,它管理的內容將越來越多,所以對于node的管理也將納入kuberntes里管理。所以延伸出了node  problem detector這個項目。

  • Kubernetes支持兩種上報機制:

1、NodeCondition(節點狀況): 這是指永久性的錯誤,它將造成pod無法在這個節點運行。這個節點狀況只有在節點重啟后才會被重置

2、Event(事件):  影響節點的臨時性問題,但是它是對于系統診斷是有意義的。NPD就是利用kubernetes的上報機制,通過檢測系統的日志(例如centos中journal),把錯誤的信息上報到kuberntes的node上。

k8s故障檢測與自愈的示例分析

圖片故障節點上的事件,會記錄在宿主機的某些日志中。這些日志(例如內核日志)中噪音信息太多,NPD會提取其中有價值的信息,可以將這些信息報送給Prometheus,也會生成離線事件。這些信息可以推送到企業微信,人工處理。也可以對應到自愈系統的方法庫,自動恢復。在裸金屬K8S集群中,由于缺乏基礎設施的支撐,自動擴充節點可能無法實現,只能通過更加精細的自動化運維,治愈節點的異常狀態。

k8s故障檢測與自愈的示例分析

以CNI故障為例,可能的治愈流程如下:

  1. 鴻蒙官方戰略合作共建——HarmonyOS技術社區

  2. 查詢運維方法庫,如果找到匹配項,執行對應的運維動作

  3. 如果上述步驟無效,嘗試刪除節點上負責CNI的Pod,以重置節點的路由、Iptables配置

  4. 如果上述步驟無效,嘗試重啟容器運行時

  5. 告警,要求運維人員介入

部署NPD實踐你需要有一個k8s集群,必須有1個以上的worker節點。大家可以參考https://github.com/kubernetes/node-problem-detector。

主要參數: --prometheus-address: 默認綁定地址127.0.0.1,如果需要推送給promethues,需要修改。 --config.system-log-monitor: 節點問題檢測器將為每個配置啟動一個單獨的日志監視器.案例: config/kernel-monitor.json。 --config.custom-plugin-monito: 節點問題檢測器將為每個配置啟動一個單獨的自定義插件監視器。案例: config/custom-plugin-monitor.json

主要參數:

--prometheus-address: 默認綁定地址127.0.0.1,如果需要推送給promethues,需要修改。

--config.system-log-monitor: 節點問題檢測器將為每個配置啟動一個單獨的日志監視器.案例:  config/kernel-monitor.json。

--config.custom-plugin-monito: 節點問題檢測器將為每個配置啟動一個單獨的自定義插件監視器。案例:  config/custom-plugin-monitor.json

將代碼克隆到本地,按照自己的需求更改deployment文件中的DaemonSet,執行以下內容:

創建ConfigMap: kubectl create -f node-problem-detector-config.yaml 創建DaemonSet: kubectl create -f node-problem-detector.yaml

如何驗證NPD捕獲信息這部分,可以在測試集群的node幾點上做。

sudo sh -c "echo 'kernel: BUG: unable to handle kernel NULL pointer dereference at TESTING' >> /dev/kmsg" 可以在kubectl describe nodes x.x.x.x 中看到KernelOops事件的告警。 sudo sh -c "echo 'kernel: INFO: task docker:20744 blocked for more than 120 seconds.' >> /dev/kmsg" 可以在kubectl describe nodes x.x.x.x 中看到DockerHung事件的告警。

如果事件告警接到了promethues,可以配置策略,發送到微信。

關于k8s故障檢測與自愈的示例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

k8s
AI

铅山县| 清徐县| 双牌县| 黄大仙区| 元氏县| 屏东县| 十堰市| 饶河县| 志丹县| 宝应县| 丁青县| 阿巴嘎旗| 察隅县| 白城市| 宝清县| 南溪县| 商南县| 长治市| 仙居县| 祁门县| 桦南县| 项城市| 恩平市| 平谷区| 沽源县| 浑源县| 牙克石市| 久治县| 贡嘎县| 濮阳市| 淮北市| 嫩江县| 双桥区| 平度市| 定襄县| 甘泉县| 榆树市| 马龙县| 苍南县| 惠水县| 深州市|