微服務,【容器亞健康狀態】問題,研究和解決

---【前言】---

我問:「程序有『亞健康狀態』嗎?」html

一個正常的人,應該這樣回答:「什麼?程序,亞健康。。。?你神經病吧?我只據說過人,有亞健康狀態。」node

 

實際上,‘程序’是有『亞健康狀態』的,這和人有『溼氣』道理同樣。git

『亞健康狀態』是指,程序處於【正常】和【非正常】之間,老司機都知道,shell

最明顯的表現就是:程序表面輸入/輸出正常,但卡頓,或後臺在瘋狂報錯。數據庫

細探緣由,其實是千奇百怪的。這裏不作展開。後端

既然程序有亞健康狀態,那麼容器內運行的程序,也應該有亞健康狀態,也很合理。這就是標題說的『容器亞健康狀態』問題。api

 

http://www.javashuo.com/article/p-shppgctb-nv.html網絡

上述『容器亞健康狀態』問題,在博客園特例中,我總結以下:架構

最開始,後端數據庫有問題了,致使頁面pod報錯。後端數據庫修復後,頁面表現有時很快,有時卡頓,估計某個pod有問題,沒恢復過來。但因爲pod不少,沒法立馬找出問題pod。猜想cpu100%,可是容器探活正常。或探活有些慢但能經過。負載均衡

 

---【『容器亞健康狀態』問題分析】---

老司機都知道,細探緣由,其實是千奇百怪的。

又由於部分容器正常,因此你必須收集全部容器的log。這些『亞健康狀態容器』,也是能經過容器探活的,有時候咱們並不具有詳細探究的條件。這就好像醫生知道從海鮮市場裏出來的不少病人肺有問題了,用常規的藥後也治很差。而你急着解決,手頭上尚未【基因測序】這些個超級手段。

---【k8s的解法】---

假設100個容器裏頭,有1個『亞健康狀態容器』,這個容器仍是『無症狀』或『症狀不明顯,能過探活』這種,這個問題是不容易解決的。

K8s 1.15版本,提供了滾動重啓的命令。但我趕腳相對而言不輕量。

須要說明的是:

定時重啓能緩解和部分解決這種問題,不能解決全部問題。要想解決全部問題,還得靠壓測,和看日誌,還有調試。

---【k4t的解法】---

K4t是我業餘時間開發的,容器編排系統。

博客園的問題,提醒了我。我看了k8s的解決方案後,琢磨出了這個問題更好的方案:

即『殺死容器老奶奶』功能,或者叫『最老容器_定時重啓間隔』參數。

這個值默認是7天,最小是1分鐘。值綁定在應用上。

這個參數假設生存時間越長的容器副本,越會出問題。而新run的容器副本,假設沒問題。

也就是說超過這個閾值(1分鐘---7天),就會優雅的重啓1個容器副本。即先不給容器喂流量,超過n分鐘後,再讓容器下崗,繼而重啓容器副本。

若遇到上述『容器亞健康』問題。則調小這個值便可。等過一段時間,容器都優雅重啓了後,再調整回來便可。固然了,個人k4t是有辦法查看,每一個容器的啓動時間的。

 

注意:

l 定時重啓並不能解決全部問題。要想解決全部問題,還得靠壓測,和看日誌,還有調試。

l 此參數不能理解成『單個容器最大生存時間』。設你的應用有10個容器副本,第一個容器會在7天后重啓,第10個容器在70天才會重啓。

這個參數,看起來跟滾動重啓相似嗎?

K8s有這功能嗎???

 

---【附錄a:k4t簡介】---

k4t即:《kaiiit生產級別的容器編排系統》  

https://gitee.com/chuanjiao10/k4t

預計2021年6月發佈alphi1版

中文名:《海賊帝·優秀的怕被沽溝暗殺·黑毛腿》

中文別名:《ps1倚天劍》

 

這是一套基於《卡死你3000》打造的,全功能,容器集羣的自動化部署、擴容以及運維的平臺。(國產k8s)。它採用開放式架構,具備網絡簡單穩定,使用簡單,腳本操控靈活的特色。

powershell傳教士 業餘時間 做品

羣名稱:k4t官方1羣  羣   號:722528388

 

---【附錄b:k4t 組件介紹】---

 問:完美版的k4t項目,由哪幾部分組件構成?

 答:

 1 master端。 正在開發中,預計2021年6月前發佈alphi1版。

 2 node端。已經開發完成,並部分開源免費成爲雛形版。

 3 動態負載均衡api網關。(外部)

提供反向代理,和負載均衡功能。用於給一組容器應用,造成統一的ip。

目前基於我編寫的envoy後端增刪腳本。

https://gitee.com/chuanjiao10/envoy_powershell

你也可diy,改爲本身喜歡的。

 

 4 動態dns。(外部)

是非必要組件。K4t集羣,能夠只用負載均衡器api-getway。

用於給一組容器應用,造成統一的服務名字。

目前基於未激活的無圖win2019。固然有圖版win2019也行。你也可diy,改爲本身喜歡的。例如:dnsmasq

 

---【後記】---

「容器固然有亞健康狀態了,容器996也有可能會疲勞呀!這和人有‘溼氣’道理是同樣的」我喃喃道。

 

K4t的這個參數,讓容器告別996,也有輪流上下班時間了。哈哈,這參數堪稱『大力丸』。有病能治病(好比內存泄漏),無病能防病(好比內存泄漏)。實乃居家旅行、以及運維編排、必備之好手段也!

 

謝謝觀看。

相關文章
相關標籤/搜索