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

溫馨提示×

溫馨提示×

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

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

如何理解Kubernetes 探針

發布時間:2021-11-23 17:16:36 來源:億速云 閱讀:154 作者:柒染 欄目:云計算

這篇文章給大家介紹如何理解Kubernetes 探針,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

配置 readiness、liveness 和 startup 探針可以處理不健康的 Pod,小編介紹了三種類型的探針、最佳實踐和有關工具,以檢測可能存在的配置問題。

分布式系統和微服務體系結構的挑戰之一是自動檢測不正常的應用程序,并將請求(request)重新路由到其他可用系統,恢復損壞的組件。健康檢查是應對該挑戰的一種可靠方法。使用 Kubernetes,可以通過探針配置運行狀況檢查,以確定每個 Pod 的狀態。

默認情況下,Kubernetes 會觀察 Pod 生命周期,并在容器從掛起(pending)狀態轉移到成功(succeeded)狀態時,將流量路由到 Pod。Kubelet 會監控崩潰的應用程序,并重新啟動 Pod 進行恢復。許多開發人員認為這樣的基本設置就足夠了,尤其是當 Pod 內的應用程序還配置了守護進程管理器(例如 Node.js 的 PM2)時。        
但有一種意外情況,當 Kubernetes 在所有容器啟動后,認為 Pod 是健康且可以接受請求時,但應用程序在實際準備就緒之前就已收到流量,比如應用程序在處理應用程序邏輯之前,初始化了一些狀態,建立了數據庫連接或加載了數據。當 Deployment 開始擴展時,未就緒的應用程序會接收流量并返回 500 錯誤,這造成了應用程序實際的準備就緒與 Kubernetes 認為的準備就緒之間的時間間隔問題。        

同樣的,這也是 Kubernetes 探針用來定義容器何時準備接受流量,以及何時重新啟動容器的方式。從 Kubernetes v1.16 開始,已經支持三種類型的探針。在文中將介紹這三種類型的探針、最佳實踐和有關工具,以檢測可能存在的配置問題。

K8sMeetup        

Kubernetes 探針

Kubernetes 版本小于 v1.15 時支持 readiness 和 liveness 探針,在 v1.16 中添加了 startup 探針作為 Alpha 功能,并在 v1.18 中升級為 Beta。

這三種探針均具有以下參數:        
  • initialDelaySeconds :啟動 liveness、readiness 探針前要等待的秒數。
  • periodSeconds :檢查探針的頻率。
  • timeoutSeconds :將探針標記為超時(未通過運行狀況檢查)之前的秒數。
  • successThreshold :探針需要通過的最小連續成功檢查數量。
  • failureThreshold :將探針標記為失敗之前的重試次數。對于 liveness 探針,這將導致 Pod 重新啟動。對于 readiness 探針,將標記 Pod 為未就緒(unready)。
Readiness 探針        
readiness 探針可以讓 kubelet 知道應用程序何時準備接受新流量。          如果應用程序在進程啟動后需要一些時間來初始化狀態,要配置 readiness 探針讓 Kubernetes 在發送新流量之前進行等待。readiness 探針的主要作用是將流量引導至 service 后的 deployment。        

如何理解Kubernetes 探針

關于 readiness 探針有一點很重要,它會在容器的整個生命周期中運行。          這意味著 readiness 探針不僅會在啟動時運行,而且還會在 Pod 運行期間反復運行。                    這是為了處理應用程序暫時不可用的情況(比如加載大量數據、等待外部連接時)。          在這種情況下,我們不一定要殺死應用程序,可以等待它恢復。          readiness 探針可用于檢測這種情況,并在 Pod 再次通過 readiness 檢查后,將流量發送到這些 Pod。                  
Liveness 探針        
liveness 探針用于重新啟動不健康的容器。          Kubelet 會定期地 ping liveness 探針,以確定健康狀況,并在 liveness 檢查不通過的情況下殺死 Pod。liveness 檢查可以幫助應用程序從死鎖中恢復。如果不進行 liveness 檢查,Kubernetes 會認為死鎖中的 Pod 處于健康狀態,因為從 Kubernetes 的角度來看,Pod 的子進程仍在運行,是健康的。通過配置 liveness 探針,kubelet 可以檢測到應用程序處于不健康狀態,并重新啟動 Pod 以恢復可用性。        

如何理解Kubernetes 探針

Startup 探針                  
startup 探針與 readiness 探針類似,但它僅在啟動時執行,能針對啟動緩慢的容器或在初始化過程中有不可預測行為的應用程序進行優化。          借助 readiness 探針,我們可以配置           initialDelaySeconds           來確定 readiness 探測在準備就緒前要等待多長時間。        

假設有一個偶爾需要下載大量數據的應用程序,由于 initialDelaySeconds 是一個靜態數字,因此該應用程序即使不需要那么長的初始化等待時間,我們也必須設置最保守的等待時間。通過 startup 探針,我們可以配置 failureThreshold 和 periodSeconds 來解決該問題,例如設置 failureThreshold 為 15,periodSeconds 為 5,這意味著應用程序在失敗之前會有 10x5=75s 的啟動時間。

K8sMeetup        

配置探針

現在我們了解了不同類型的探針,下面是配置每種探針的三種不同方式。

HTTP        
kubelet 將 HTTP GET 請求發送到 endpoint,并檢查 2xx 或 3xx 響應。我們可以重復使用現有的 HTTP endpoint 或設置輕量級 HTTP 服務器以進行探測(例如,具有           /healthz           endpoint 的 Express server)。HTTP 探針包含其他額外參數:        
  • host :要連接的主機名(默認值:pod 的 IP)。
  • scheme :HTTP(默認)或 HTTPS。
  • path :HTTP/S 服務器上的路徑 。
  • httpHeaders :自定義標頭(如果需要標頭用于身份驗證、CORS 設置等) 。
  • port :訪問服務器的端口名稱或端口號。

如何理解Kubernetes 探針

TCP        
如果僅需要檢查是否可以建立 TCP 連接,則可以指定 TCP 探針。如果建立 TCP 連接,則將 Pod 標記為運行狀況良好。對于不適合使用 HTTP 探針的 gRPC 或 FTP 服務器,TCP 探針可能會有用。        

如何理解Kubernetes 探針

Command        
可以將探針配置為運行 shell 命令。如果命令返回的退出代碼為 0,則檢查通過,否則 Pod 將被標記為不健康。如果不希望公開 HTTP 服務器與端口,或者希望通過命令檢查初始化步驟(例如,檢查是否已創建配置文件、運行 CLI 命令),這種類型的探針會很有用。        
如何理解Kubernetes 探針        
K8sMeetup        

最佳實踐

雖然說探針的確切參數和使用方法取決于應用程序,但也有一些常用的最佳實踐:

  • 對于較舊的(≤v1.15)Kubernetes 集群,使用具有初始延遲的 readiness 探針來處理容器啟動階段。
  • 對于較新的(≥v1.16)Kubernetes 集群,如果是具有不可預測或可變啟動時間的應用程序應使用 startup 探針。 startup 探針與 readiness 和 liveness 探針共享相同的 endpoint(例如  /healthz ),但能將  failureThreshold  設置得比其他探針更高,以擁有更長的啟動時間,相對于 liveness 和 readiness 而言,設置的失敗時間會更合理。
  • 如果 readiness 探針不用于其他信號目的,readiness 和 liveness 探針可以共享相同的 endpoint,但如果只有一個 Pod(也就是使用 VPA)時,設置 readiness 探針來解決啟動行為,使用 liveness 探針來確定運行狀況。這種情況下,標記 Pod 不健康意味著停機時間。
  • readiness 檢查可以用各種方式來發出系統故障的信號。 例如,當應用程序失去與數據庫的連接時,可以使用 readiness 探針暫時阻止新請求并允許系統重新連接。它還可以將繁忙的 Pod 標記為未準備,將工作負載平衡到其他 Pod。

簡而言之,定義明確的探針通常會帶來更好的彈性和可用性。確保觀察啟動時間和系統行為,在應用程序更改時調整探針設置。

K8sMeetup        

工具

最后,鑒于 Kubernetes 探針的重要性,我們可以使用 Kubernetes 資源分析工具來檢測缺失的探針。這些工具可以在現有集群上運行,也可以置入 CI/CD 流程中,可以在沒有正確配置資源的情況下自動拒絕工作負載。

  • polaris :一個具有儀表板的資源分析工具,也可以用作驗證 webhook 或 CLI 工具。
  • kube-score :一個靜態代碼分析工具,可用于 Helm、Kustomize 和標準 YAML 文件。
  • popeye :只讀的實用工具,用于掃描 Kubernetes 集群并報告配置中的潛在問題。

關于如何理解Kubernetes 探針就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

廉江市| 聊城市| 林西县| 曲靖市| 库尔勒市| 阿合奇县| 门源| 宁蒗| 乌什县| 咸宁市| 汾西县| 新津县| 扬中市| 那曲县| 辉南县| 开江县| 扎兰屯市| 娄底市| 临城县| 桐庐县| 云龙县| 定州市| 乳山市| 南岸区| 嵩明县| 雅江县| 毕节市| 荔浦县| 南丹县| 汝阳县| 高安市| 涟水县| 黑龙江省| 庆元县| 宝坻区| 丘北县| 陆河县| 南漳县| 隆化县| 山丹县| 梅河口市|