livenessProbe 和 readinessProbe 最佳實踐

在 Kubernetes 中,livenessProbe 和 readinessProbe 是確保應用高可用性的關鍵機制,但配置不當可能導致應用頻繁重啟或流量中斷。以下是配置這兩個探針的最佳實踐:

1. 核心區別與作用

探針類型目的失敗后果
livenessProbe檢測應用是否 存活(如死鎖、內存泄漏)。重啟容器(kubectl restart
readinessProbe檢測應用是否 準備好接收流量(如依賴服務未就緒、緩存未加載)。從 Service 的 Endpoints 移除 Pod

2. 最佳實踐指南

(1) 明確區分兩個探針的用途
  • livenessProbe
    • 保守檢查:僅檢測應用是否處于不可恢復的故障狀態(如主線程崩潰)。一般服務沒掛掉就認為是正常的。
    • 避免敏感條件:例如,不要用業務邏輯失敗(如數據庫連接超時)觸發重啟,除非明確需要。
  • readinessProbe
    • 嚴格檢查:確保所有依賴(如數據庫、通過 feign 調用的外部組件、中間件)就緒后才接收流量。
    • 動態調整:在運行時若依賴服務不可用(如 Redis 宕機),應通過 readinessProbe 主動拒絕流量。
(2) 設置合理的檢查端點
  • livenessProbereadinessProbe 使用不同的 HTTP 路徑

    livenessProbe:httpGet:path: /health/liveness   # 輕量級存活檢查(僅進程存活)port: 8080
    readinessProbe:httpGet:path: /health/readiness  # 包含依賴檢查(如數據庫連接)port: 8080
    
(3) 配置合理的參數
livenessProbe:httpGet:path: /actuator/health/livenessport: 8080initialDelaySeconds: 10   # 應用啟動后等待 10 秒再開始探測periodSeconds: 5          # 每 5 秒檢查一次timeoutSeconds: 3         # 超時時間設為 3 秒failureThreshold: 3       # 連續失敗 3 次后判定為故障readinessProbe:httpGet:path: /actuator/health/readinessport: 8080initialDelaySeconds: 5    # 比 livenessProbe 更早開始檢查periodSeconds: 5timeoutSeconds: 3failureThreshold: 1       # 1 次失敗即標記為未就緒

關鍵參數說明

  • initialDelaySeconds必須設置,避免應用未完成初始化就被判定為失敗(如 JVM 啟動慢)。
  • failureThreshold
    • livenessProbe 可設置較高(如 3),避免偶發故障觸發重啟。
    • readinessProbe 可設置較低(如 1),快速從負載均衡中剔除異常 Pod。
  • periodSecondstimeoutSeconds:根據應用響應時間調整,避免超時誤判。
(4) 結合 startupProbe 處理慢啟動應用

對于啟動時間較長的應用(如 Java 服務),使用 startupProbe 延遲 livenessProbereadinessProbe 的啟動:

startupProbe:httpGet:path: /actuator/health/startupport: 8080failureThreshold: 30  # 允許最多 30 次檢查失敗periodSeconds: 5      # 每 5 秒檢查一次# 總等待時間 = failureThreshold * periodSeconds = 150 秒

如果想了解 k8s 為什么要專門提出 startupProb 來解決慢服務啟動的問題,而不是直接把 livenessPro 中初始化的時間設置的長一點。可以參考下面的文章《為什么需要啟動探針(StartupProb)?》。

(5) 選擇適當的探測類型
  • HTTP GET:適合 Web 服務,通過狀態碼(2xx/3xx 表示成功)判斷。

  • Exec:執行命令,返回 0 表示成功(適合非 HTTP 服務):

    readinessProbe:exec:command:- /app/check-dependency.sh  # 自定義腳本檢查依賴
    
  • TCP Socket:僅檢查端口是否開放(適用非 HTTP 協議)。

(6) 避免依賴下游服務
  • readinessProbe 不要深度檢查外部依賴(如數據庫、API):
    • 若外部服務宕機,所有 Pod 都會被標記為未就緒,導致全面故障。
    • 改為在應用內部實現熔斷機制(如 Hystrix),部分功能降級。
(7) 日志與監控
  • 記錄探針檢查結果:在 /health 端點返回詳細信息(如版本、依賴狀態)。
  • 監控探針失敗:通過 Prometheus 監控 kubelet_probe_errors_total,及時報警。

3. 示例配置

Spring Boot 應用
apiVersion: apps/v1
kind: Deployment
spec:template:spec:containers:- name: applivenessProbe:httpGet:path: /actuator/health/livenessport: 8080initialDelaySeconds: 30periodSeconds: 10failureThreshold: 3readinessProbe:httpGet:path: /actuator/health/readinessport: 8080initialDelaySeconds: 5periodSeconds: 5failureThreshold: 1startupProbe:httpGet:path: /actuator/health/startupport: 8080failureThreshold: 30periodSeconds: 5

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905420.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905420.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905420.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

集成管理工具Gitlab

GitLab 是一個功能強大的開源代碼托管和協作平臺,集成 GitLab 可以顯著提升團隊的開發效率。下面我將為你介紹如何集成 GitLab,包括安裝配置和基本使用流程。 一、GitLab 安裝與配置 GitLab 有多種安裝方式,推薦使用官方 Omnibus 包安裝&am…

Electron-Vue3、Electron-React、Electron-Angular打造輿情監控系統項目

Electron是一個跨平臺的桌面應用開發框架,可以讓我們用html css js的技術開發跨平臺桌面上可以安裝的軟件。視頻詳解: Electron教程 ElectronVue跨平臺桌面軟件開發教程-2024年更新(大地老師) 從Electron環境搭建開始到手把手教你調試、Elect…

08.webgl_buffergeometry_attributes_none ,three官方示例+編輯器+AI快速學習

本實例主要講解內容 這個Three.js示例展示了無屬性幾何體渲染技術,通過WebGL 2的gl_VertexID特性和偽隨機數生成算法,在著色器中動態計算頂點位置和顏色,而不需要在CPU端預先定義幾何體數據。 核心技術包括: WebGL 2的頂點ID特…

Ubuntu 22.04搭建OpenStreeMap地址解析服務(保姆級教程)

1.數據準備 1.1.全球數據 下載地址:https://planet.openstreetmap.org/ 1.2.特定區域的數據 下載地址:Geofabrik Download Server 2.安裝必要的軟件包 2.1.更新系統軟件包 sudo apt updatesudo apt upgrade 2.2.安裝所需要的軟件包 執行下面的命…

Ubuntu 22.04.5 LTS上部署Docker及相關優化

以下是在Ubuntu 22.04.5 LTS上部署Docker及相關優化的步驟: 安裝Docker 更新系統:在安裝Docker之前,先確保系統是最新的,執行以下命令:sudo apt update sudo apt upgrade -y安裝依賴包:安裝一些必要的依賴…

React -> AI組件 -> 調用Ollama模型, qwen3:1.7B非常聰明

使用 React 搭建一個現代化的聊天界面&#xff0c;支持與 Ollama 本地部署的大語言模型進行多輪對話。界面清爽、功能完整&#xff0c;支持 Markdown 渲染、代碼高亮、<think> 隱藏思考標簽、流式漸進反饋、暗黑模式適配等特性。 &#x1f9e9; 核心功能亮點 ? 模型選擇…

vue2/3 中使用 @vue-office/docx 在網頁中預覽(docx、excel、pdf)文件

1. 安裝依賴&#xff1a; #docx文檔預覽組件npm install vue-office/docx vue-demi0.14.6#excel文檔預覽組件npm install vue-office/excel vue-demi0.14.6#pdf文檔預覽組件npm install vue-office/pdf vue-demi0.14.6 vue2.6版本或以下還需要額外安裝 vue/composition-api …

【應用密碼學】實驗五 公鑰密碼2——ECC

一、實驗要求與目的 1.復習CCC基本概念&#xff0c;并根據實驗平臺提供的資料完成驗證性實驗。 2.編程練習&#xff1a;以書上例題小模數p為例編程實現ECC的基本運算規則。 二、實驗內容與步驟記錄&#xff08;只記錄關鍵步驟與結果&#xff0c;可截圖&#xff0c;但注意排版…

rust-candle學習筆記9-使用tokenizers加載qwen3分詞,使用分詞器處理文本

參考&#xff1a;about-pytorch&#xff0c; about-tokenizers 在魔搭社區鏈接下載qwen3的tokenizer.json文件 添加依賴庫&#xff1a; cargo add tokenizers tokenizers庫初體驗&#xff1a; use tokenizers::tokenizer::{self, Result, Tokenizer};fn main() -> Resu…

【MySQL】存儲引擎 - ARCHIVE、BLACKHOLE、MERGE詳解

&#x1f4e2;博客主頁&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客倉庫&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;歡迎點贊 &#x1f44d; 收藏 ?留言 &#x1f4dd; 如有錯誤敬請指正&#xff01; &…

5.Redission

5.1 前文鎖問題 基于 setnx 實現的分布式鎖存在下面的問題&#xff1a; 重入問題&#xff1a;重入問題是指 獲得鎖的線程可以再次進入到相同的鎖的代碼塊中&#xff0c;可重入鎖的意義在于防止死鎖&#xff0c;比如 HashTable 這樣的代碼中&#xff0c;他的方法都是使用 sync…

C語言主要標準版本的演進與核心區別的對比分析

以下是C語言主要標準版本的演進與核心區別的對比分析 K&R C&#xff08;1978年&#xff09; 定位?&#xff1a;非標準化的原始版本&#xff0c;由Brian Kernighan和Dennis Ritchie定義 特性?&#xff1a; 基礎語法&#xff1a;函數聲明無參數列表&#xff08;如int func…

【C++設計模式之Template Method Pattern】

C設計模式之Template Method Pattern 模式定義核心思想動機(Motivation)結構&#xff08;Structure&#xff09;實現步驟應用場景要點總結 模式定義 模式定義&#xff1a; 定義一個操作中的算法的骨架(穩定)&#xff0c;而將一些步驟延遲(變化)到子類中。Template Method使得子…

【動態導通電阻】p-GaN HEMTs正向和反向導通下的動態導通電阻

2024 年,浙江大學的 Zonglun Xie 等人基于多組雙脈沖測試方法,研究了兩種不同技術的商用 p-GaN 柵極 HEMTs 在正向和反向導通模式以及硬開關和軟開關條件下的動態導通電阻(RON)特性。實驗結果表明,對于肖特基型 p-GaN 柵極 HEMTs,反向導通時動態 RON 比正向導通高 3%-5%;…

PDFMathTranslate:科學 PDF 文件翻譯及雙語對照工具

PDFMathTranslate&#xff1a;科學 PDF 文件翻譯及雙語對照工具 在科研和學習過程中&#xff0c;我們經常會遇到大量的英文 PDF 文獻&#xff0c;翻譯這些文獻成為了一項繁瑣且耗時的工作。PDFMathTranslate 是一款強大的科學 PDF 文件翻譯及雙語對照工具&#xff0c;它能夠保…

Flutter PIP 插件 ---- 為iOS 重構PipController, Demo界面,更好的體驗

接上文 Flutter PIP 插件 ---- 新增PipActivity&#xff0c;Android 11以下支持自動進入PIP Mode 項目地址 PIP&#xff0c; pub.dev也已經同步發布 pip 0.0.3&#xff0c;你的加星和點贊&#xff0c;將是我繼續改進最大的動力 在之前的界面設計中&#xff0c;還原動畫等體驗一…

【Ansible】之inventory主機清單

前言 本篇博客主要解釋Ansible主機清單的相關配置知識 一、inventory 主機清單 Inventory支持對主機進行分組&#xff0c;每個組內可以定義多個主機&#xff0c;每個主機都可以定義在任何一個或多個主機組內。 如果是名稱類似的主機&#xff0c;可以使用列表的方式表示各個主機…

基于幾何布朗運動的股價預測模型構建與分析

基于幾何布朗運動的股價預測模型構建與分析 摘要 本文建立基于幾何布朗運動的股價預測模型&#xff0c;結合極大似然估計與蒙特卡洛模擬&#xff0c;推導股價條件概率密度函數并構建動態預測區間。實證分析顯示模型在標普500指數預測中取得89%的覆蓋概率&#xff0c;波動率估…

【前端】【JavaScript】【總復習】四萬字詳解JavaScript知識體系

JavaScript 前端知識體系 &#x1f4cc; 說明&#xff1a;本大綱從基礎到高級、從語法到應用、從面試到實戰&#xff0c;分層級講解 JavaScript 的核心內容。 一、JavaScript 基礎語法 1.1 基本概念 1.1.1 JavaScript 的發展史與用途 1. 發展簡史 1995 年&#xff1a;JavaS…

[Java實戰]Spring Boot 3 整合 Apache Shiro(二十一)

[Java實戰]Spring Boot 3 整合 Apache Shiro&#xff08;二十一&#xff09; 引言 在復雜的業務系統中&#xff0c;安全控制&#xff08;認證、授權、加密&#xff09;是核心需求。相比于 Spring Security 的重量級設計&#xff0c;Apache Shiro 憑借其簡潔的 API 和靈活的擴…