Kubernetes活躍性和就緒性探針的設定技巧 - colinbreck
為了進行容器是否活著的健康檢查,活動性探針將在容器無響應時重新啟動容器,而就緒性探針用於確定容器何時準備開始或停止接受流量。
許多人認為就緒探針僅在啟動時被呼叫,但是即使在容器被通知為就緒後仍繼續被呼叫。例如,如果某個容器暫時很忙,則它可能無法準備就緒,因此請求將被路由到其他容器。如果準備就緒探針評估一組Pod之間的共享依賴關係,則如果配置過於激進,則可能會使整個服務不可用。但是,沒有一種方法做到:可以在啟動時使用積極的準備狀態探針(使容器儘可能快地用於請求),而在穩態期間則是做到沒有那麼積極的準備狀態探針。
許多應用程式的啟動動態與穩態大不相同。應用程式初始化所獨有的動態特性包括:填充快取;在事件源應用程式中重新實現從日記的派生狀態;或建立與依賴關係(如資料庫)的持久連線。這使調整活動性和就緒性探針變得頗具挑戰性。
例如,如果initialDelaySeconds活動性探針的保守度不夠,則可能在啟動容器之前將其殺死。如果啟動動態隨時間變化(尤其是隨著您的系統擴充套件或工作負載具有季節性),這尤其具有挑戰性。如果一段時間未重新啟動容器,並且啟動時間增加,則可能要等到修改配置增加initialDelaySeconds時,才能重新啟動Pod
Kubernetes 1.16中引入的啟動探針旨在解決許多此類問題。
啟動探針旨在解決這些問題。僅在啟動期間呼叫啟動探針,用於確定容器何時準備接受請求。如果配置了啟動探針,則將禁用活動性和就緒性檢查,直到啟動探針成功為止。如果啟動探針超出配置,failureThreshold但沒有成功,則容器將被殺死並重新啟動,這取決於容器的restartPolicy行為,類似於活動探針的行為。
最佳實踐:
- 進行保守設定timeoutSeconds,failureThreshold以便可以動態或臨時更改系統動態,而不會導致啟動探針故障而阻止容器啟動。
- 如果啟動探針呼叫的路由直接檢查依賴項或執行昂貴的操作,請考慮將其設定timeoutSeconds為相同的大小,以避免積累資源或使依賴項過載。即使啟動探測超時,該服務可能仍在執行請求。
- 定期重新啟動容器以行使啟動動態,並避免隨時間變化意外的行為。如果某個Pod執行了數月或數年卻沒有重新啟動,則值得關注。
啟動探針還具有一些獨特的注意事項:
- 要使緩慢啟動的容器儘快可用,請使用超時時間非常短但故障閾值也非常長的啟動探針,以避免在啟動容器之前將其殺死。
- 準備就緒和活躍性探針與啟動探針無關,這一事實使您對啟動探針故障非常保守,或者執行不同的檢查,也許僅在啟動時才相關的檢查,或者過於昂貴,無法透過以下方式定期執行準備或活躍度調查。
Kubernetes啟動探針現已廣泛用於領先雲提供商的託管Kubernetes產品。將啟動探針視為僅在啟動時才執行的活動和就緒探針的組合。使用啟動探針將活動性和就緒性檢查與應用程式初始化脫鉤,最終使服務更可靠。
相關文章
- kubernetes中的探針
- K8S使用就緒和存活探針配置健康檢查K8S
- 執行緒屬性設定執行緒
- Kubernetes 探針詳解!
- 技術問答集錦(16)避免活躍性
- 如何實現社群長期活躍的方法和技巧
- Kubernetes探針踩坑記
- Java併發程式設計實戰 05等待-通知機制和活躍性問題Java程式設計
- Spring Boot 2.3提供K8s活性和就緒性探針,將成為核心概念積極擁抱K8s! - spring.ioSpring BootK8S
- jQuery - 設定內容和屬性jQuery
- 探究kubernetes 探針引數periodSeconds和timeoutSeconds
- pod 的高階實現汙點親密性探針的實現
- Python的tkinter獲取元件屬性和設定元件屬性Python元件
- jquery設定和獲取元素的屬性jQuery
- Xcode設定自己的個性屬性XCode
- Kubernetes:kubelet 原始碼分析之探針原始碼
- C#反射設定屬性值和獲取屬性值C#反射
- drf : 請求(Request)與響應(Response),全域性設定和區域性設定drf的預設配置項。
- 一個人情緒穩定的重要性
- Vivado使用技巧(24):HDL/XDC中設定綜合屬性
- Ubuntu Linux終端顏色個性化設定技巧UbuntuLinux
- 表屬性設定
- JavaScript設定屬性JavaScript
- 設定listener的安全性
- BASH的保護性程式設計技巧程式設計
- 針對Report Parameter 的個性化設定例項
- 設定和獲取元素固有屬性值
- Python 訪問和設定私有屬性Python
- javascript實現的設定和獲取元素屬性JavaScript
- 蘋果手機使用技巧:iPhone個性來電振動設定蘋果iPhone
- Cookie設定HttpOnly屬性CookieHTTP
- 安全性偏好設定
- CSS Normalize(全域性設定)CSSORM
- 個性化emacs設定Mac
- Qt 設定全域性字型QT
- CSS中常用的屬性設定CSS
- Gradle的屬性設定大全Gradle
- jQuery設定disabled屬性與移除disabled屬性jQuery