詳細談談負載均衡的startupProbe探針、livenessProbe探針、readnessProbe探針如何使用以及使用差異化

文章目錄

  • startupProbe探針
    • startupProbe說明
    • 示例配置
      • 參數解釋
    • 使用場景說明
    • 實例——要求: 容器在8秒內完成啟動,否則殺死對應容器
      • 工作流程說明
      • timeoutSeconds: 和 periodSeconds: 參數順序說明
  • livenessProbe探針
    • livenessProbe說明
    • 示例配置
      • 參數解釋
    • 使用場景說明
    • 實例——題目要求:如果發現業務4秒后無響應,殺死對應容器,并進行重啟
      • 工作流程說明
  • readnessProbe探針
    • readnessProbe說明
    • 示例配置
      • 參數解釋
    • 使用場景說明
    • 實例——如果發現業務3秒后無響應,訪問流量將不會傳值該容器,5秒內如果回復響應,訪問流量將繼續轉發至該容器
      • 工作流程說明
  • 一個完整的包含3個探針的實例yaml文件

startupProbe探針

  • startupProbe 是 Kubernetes 中的一種探針,用于檢測容器的啟動狀態。
    • 如果容器未能在指定的時間內啟動,Kubernetes 將殺死并重啟該容器。【簡單來說startupProbe 用于檢測容器是否已經成功啟動。如果 startupProbe 失敗,Kubernetes 將殺死容器并根據策略進行重啟。】
    • startupProbe 主要用于那些啟動時間較長的應用,以確保它們在完全啟動之前不會被其他探針(如 livenessProbereadinessProbe)誤判為失敗。也就是說,它通常用于那些啟動時間較長的應用程序,以確保在應用程序完全啟動之前不會觸發 livenessProbe 和 readinessProbe。

startupProbe說明

  • 以下是 startupProbe 的常用參數及其說明:

    1. httpGet: 使用 HTTP GET 請求進行探測。
      • path: 要探測的 HTTP 路徑。
      • port: 要探測的端口。
      • scheme: 使用的協議(HTTP 或 HTTPS)。

    示例:

    httpGet:path: /port: 8080scheme: HTTP
    
    1. tcpSocket: 使用 TCP 檢查進行探測。
      • port: 要探測的端口。

    示例:

    tcpSocket:port: 8080
    
    1. exec: 使用命令執行進行探測。
      • command: 要執行的命令及其參數。

    示例:

    exec:command:- cat- /etc/hosts
    
    1. initialDelaySeconds: 在容器啟動后等待多長時間開始進行第一次檢查。
      • 類型:整數
      • 默認值:0
    1. timeoutSeconds: 探針等待響應的時間。如果超過這個時間沒有響應,則認為探針失敗。
      • 類型:整數
      • 默認值:1
    1. periodSeconds: 探針之間的間隔時間,即每隔多少秒進行一次檢查。
    • 類型:整數
    • 默認值:10
    1. successThreshold: 探針連續成功的次數,只有達到這個次數才認為探針成功。
    • 類型:整數
    • 默認值:1
    1. failureThreshold: 探針連續失敗的次數,只有達到這個次數才認為探針失敗,并觸發容器重啟。
    • 類型:整數
    • 默認值:3

示例配置

  • 以下是一個完整的 startupProbe 配置示例:
startupProbe:httpGet:path: /port: 8080scheme: HTTPinitialDelaySeconds: 0timeoutSeconds: 5periodSeconds: 10successThreshold: 1failureThreshold: 3

參數解釋

  • httpGet: 使用 HTTP GET 請求檢查 / 路徑,端口為 8080,使用 HTTP 協議。
  • initialDelaySeconds: 0: 容器啟動后立即開始進行探測。
  • timeoutSeconds: 5: 探針等待5秒以獲取響應。如果超過5秒沒有響應,則認為探針失敗。
  • periodSeconds: 10: 每10秒進行一次探測。
  • successThreshold: 1: 探針只需一次成功就認為探測通過。
  • failureThreshold: 3: 探針需要連續三次失敗才認為探測失敗,并觸發容器重啟。

使用場景說明

  • 使用場景一般有下面2個:

    • 啟動時間較長的應用:對于啟動時間較長的應用,使用 startupProbe 可以確保它們在完全啟動之前不會被誤判為失敗。
    • 避免誤判:在應用啟動過程中,livenessProbereadinessProbe 可能會誤判應用為失敗。使用 startupProbe 可以避免這種情況。
  • 通過合理配置 startupProbe,可以確保容器在啟動過程中得到正確的檢測和處理,避免因啟動時間較長而導致的不必要的重啟。

實例——要求: 容器在8秒內完成啟動,否則殺死對應容器

  • 根據題意,最終參數如下:
    這種配置確保了探針能夠每2秒檢查一次容器狀態,并且在容器未能在8秒內啟動完成時殺死容器。探針等待4秒以獲取響應,如果超過4秒沒有響應,則認為探針失敗。探針需要連續兩次失敗(即8秒內兩次失敗)才會將容器標記為啟動失敗并觸發重啟。
startupProbe:exec:command:- cat- /etc/hostsinitialDelaySeconds: 0timeoutSeconds: 4periodSeconds: 2successThreshold: 1failureThreshold: 2

工作流程說明

  • 解析
startupProbe 【只啟動一次】——容器啟動的時候完成探針,失敗就killexec: 通過在容器內執行命令來檢查應用的健康狀況。command: 要執行的命令。- cat- /etc/hosts`initialDelaySeconds 0` 用于指定在容器啟動后多長時間開始進行首次健康檢查。它的作用是讓容器有足夠的時間來完成初始化操作,避免在容器還未完全啟動時就進行健康檢查,從而導致誤判。例如,如果將 `initialDelaySeconds` 設置為 `30`,那么 Kubernetes 會在容器啟動后的 30 秒才開始進行第一次 `startupProbe` 檢查。`timeoutSeconds 4`: 探測的超時時間(秒)。`periodSeconds 2`: 執行探測的周期(秒)。`successThreshold 1`: 探測成功的閾值。連續成功達到這個閾值后,容器被認為已經成功啟動。默認值是 1。如果設置為 1,只要有一次成功的探測,容器就會被認為啟動成功。`failureThreshold 2`: 探測失敗的閾值。在達到這個閾值之前,容器不會被認為啟動失敗。
  • 參數解釋

    • exec: 使用命令執行方式進行探測,這里使用 ls /mnt 命令。

      • command: 定義了要執行的命令,這里是 ls /mnt
    • initialDelaySeconds: 在容器啟動后等待多長時間開始進行第一次檢查。

      • 在你的配置中,initialDelaySeconds: 0 表示容器啟動后立即開始進行探測。
    • timeoutSeconds: 探針等待響應的時間。如果超過這個時間沒有響應,則認為探針失敗。

      • 在你的配置中,timeoutSeconds: 4 表示探針等待4秒以獲取響應。如果超過4秒沒有響應,則認為探針失敗。
    • periodSeconds: 探針之間的間隔時間,即每隔多少秒進行一次檢查。

      • 在你的配置中,periodSeconds: 2 表示每2秒進行一次探測。
    • successThreshold: 探針連續成功的次數,只有達到這個次數才認為探針成功。

      • 在你的配置中,successThreshold: 1 表示探針只需一次成功就認為探測通過。
    • failureThreshold: 探針連續失敗的次數,只有達到這個次數才認為探針失敗,并觸發容器重啟。

      • 在你的配置中,failureThreshold: 2 表示探針需要連續兩次失敗才認為探測失敗。
  • 工作流程

      1. 容器啟動后,探針會立即開始進行探測(initialDelaySeconds: 0)。
      1. 每2秒,探針會執行一次 ls /mnt 命令(periodSeconds: 2)。
      1. 如果探針在4秒內沒有成功執行 ls /mnt 命令(timeoutSeconds: 4),則認為探針失敗。
      1. 探針需要連續兩次失敗(failureThreshold: 2)才會觸發容器重啟。
  • 適用場景

    • initialDelaySeconds: 0:適用于希望容器啟動后立即開始探測的場景。
    • timeoutSeconds: 4:適用于希望容器在執行命令時有足夠的時間響應。
    • periodSeconds: 2:適用于希望頻繁檢查容器啟動狀態的情況。
    • successThreshold: 1:適用于希望探針只需一次成功就認為容器啟動成功的情況。
    • failureThreshold: 2:適用于希望探針需要連續兩次失敗才認為容器啟動失敗的情況,避免偶發性故障導致不必要的重啟。
  • 結論
    這個配置是合適的,因為它能夠滿足以下需求:
    8秒內完成啟動:探針每2秒檢查一次容器狀態,探針等待4秒以獲取響應。如果超過4秒沒有響應,則認為探針失敗。探針需要連續兩次失敗(即8秒內兩次失敗)才會將容器標記為啟動失敗并觸發重啟。

  • 口水話深度解析

    • 容器啟動后,探針會立即開始進行探測。
    • 開始第一個循環,循環內容持續時間是4秒,循環內容為:探針每4秒(periodSeconds: 4)執行一次 ls /mnt 命令。持續時間為2秒(timeoutSeconds: 2)【時間是包含關系【(periodSeconds: 4)包含(timeoutSeconds: 2)】,而不能(periodSeconds: 4)x(timeoutSeconds: 2)=8秒】
      • 【換種方式來說就是,4秒執行一次,持續時間4秒(periodSeconds: 4),4秒中做的事情是,2秒內(timeoutSeconds: 2)有沒有成功執行 ls /mnt命令】
    • 如果探針在2秒(timeoutSeconds: 2)內沒有成功執行 ls /mnt 命令,則認為探針失敗。然后開始下一個循環(failureThreshold: 2),一組循環的參數是(periodSeconds: 4)和(timeoutSeconds: 2)。
    • 探針需要連續兩次失敗(即8秒內兩次失敗)才會觸發容器重啟。【時間計算是(periodSeconds: 4)x(failureThreshold: 2)】
    • 而所謂的“否則殺死對應容器”,就是表示容器不運行而已

timeoutSeconds: 和 periodSeconds: 參數順序說明

  • 容器在8秒內完成啟動,否則殺死對應容器,下面2個參數哪個更合適?
startupProbe:exec:command:- ls- /mntinitialDelaySeconds: 0timeoutSeconds: 2periodSeconds: 4successThreshold: 1failureThreshold: 2#和startupProbe:exec:command:- ls- /mntinitialDelaySeconds: 0timeoutSeconds: 4periodSeconds: 2successThreshold: 1failureThreshold: 2

根據你的需求:容器在8秒內完成啟動,否則殺死對應容器。

  • 區別

      1. timeoutSeconds:
      • 配置1: timeoutSeconds: 2,探針等待2秒以獲取響應。如果超過2秒沒有響應,則認為探針失敗。
      • 配置2: timeoutSeconds: 4,探針等待4秒以獲取響應。如果超過4秒沒有響應,則認為探針失敗。
      1. periodSeconds:
      • 配置1: periodSeconds: 4,每4秒進行一次探測。
    • 配置2: periodSeconds: 2,每2秒進行一次探測。

  • 需求分析

    • 8秒內完成啟動:需要探針在8秒內檢測到容器是否啟動完成,否則殺死容器。
  • 配置選擇

    • 配置1

      • 探針每4秒檢查一次容器狀態。
      • 探針等待2秒以獲取響應。
      • 探針需要連續兩次失敗(即8秒內兩次失敗)才會將容器標記為啟動失敗并殺死容器。
    • 配置2

      • 探針每2秒檢查一次容器狀態。
      • 探針等待4秒以獲取響應。
      • 探針需要連續兩次失敗(即8秒內兩次失敗)才會將容器標記為啟動失敗并殺死容器。
  • 結論

    • 配置2 更合適,因為它能夠更頻繁地檢查容器狀態,并且在8秒內檢測到容器是否啟動完成。
    • 這種配置確保了探針能夠每2秒檢查一次容器狀態,并且在容器未能在8秒內啟動完成時殺死容器。探針等待4秒以獲取響應,如果超過4秒沒有響應,則認為探針失敗。探針需要連續兩次失敗(即8秒內兩次失敗)才會將容器標記為啟動失敗并殺死容器。
startupProbe:exec:command:- ls- /mntinitialDelaySeconds: 0timeoutSeconds: 4periodSeconds: 2successThreshold: 1failureThreshold: 2

livenessProbe探針

livenessProbe說明

  • livenessProbe 是 Kubernetes 中的一種探針,用于檢測容器是否處于健康狀態。

    • 如果探針失敗,Kubernetes 會殺死容器并根據策略進行重啟。
    • livenessProbe 主要用于確保容器在運行過程中保持健康狀態,如果容器進入不健康狀態,可以通過重啟來恢復。
    • 通過合理配置 livenessProbe,可以確保容器在運行過程中保持健康狀態,并在出現問題時自動重啟容器,從而提高應用的可靠性和可用性。
  • 以下是 livenessProbe 的常用參數及其說明:

    • httpGet: 使用 HTTP GET 請求進行探測。
    • path: 要探測的 HTTP 路徑。
    • port: 要探測的端口。
    • scheme: 使用的協議(HTTP 或 HTTPS)。

    示例:

    httpGet:path: /port: 8080scheme: HTTP
    
    1. tcpSocket: 使用 TCP 檢查進行探測。
    • port: 要探測的端口。

    示例:

    tcpSocket:port: 8080
    
    1. exec: 使用命令執行進行探測。
    • command: 要執行的命令及其參數。

    示例:

    exec:command:- cat- /etc/hosts
    
    1. initialDelaySeconds: 在容器啟動后等待多長時間開始進行第一次檢查。
    • 類型:整數
    • 默認值:0
    1. timeoutSeconds: 探針等待響應的時間。如果超過這個時間沒有響應,則認為探針失敗。
    • 類型:整數
    • 默認值:1
    1. periodSeconds: 探針之間的間隔時間,即每隔多少秒進行一次檢查。
    • 類型:整數
    • 默認值:10
    1. successThreshold: 探針連續成功的次數,只有達到這個次數才認為探針成功。
    • 類型:整數
    • 默認值:1
    1. failureThreshold: 探針連續失敗的次數,只有達到這個次數才認為探針失敗,并觸發容器重啟。
    • 類型:整數
    • 默認值:3

示例配置

  • 以下是一個完整的 livenessProbe 配置示例:
livenessProbe:httpGet:path: /port: 8080scheme: HTTPinitialDelaySeconds: 10timeoutSeconds: 1periodSeconds: 10successThreshold: 1failureThreshold: 3

參數解釋

  • httpGet: 使用 HTTP GET 請求檢查 / 路徑,端口為 8080,使用 HTTP 協議。
  • initialDelaySeconds: 10: 容器啟動后等待10秒再開始進行探測。
  • timeoutSeconds: 1: 探針等待1秒以獲取響應。如果超過1秒沒有響應,則認為探針失敗。
  • periodSeconds: 10: 每10秒進行一次探測。
  • successThreshold: 1: 探針只需一次成功就認為探測通過。
  • failureThreshold: 3: 探針需要連續三次失敗才認為探測失敗,并觸發容器重啟。

使用場景說明

  • 使用場景如下
    • 檢測應用崩潰:如果應用進程崩潰或掛起,livenessProbe 可以檢測到并觸發容器重啟。
    • 檢測死鎖:如果應用進入死鎖狀態,livenessProbe 可以檢測到并觸發容器重啟。
    • 檢測資源耗盡:如果應用耗盡了資源(如內存、CPU),livenessProbe 可以檢測到并觸發容器重啟。

實例——題目要求:如果發現業務4秒后無響應,殺死對應容器,并進行重啟

  • 題目要求:如果發現業務4秒后無響應,殺死對應容器,并進行重啟
  • 最終如下
    這種配置確保了探針能夠每秒檢查一次服務狀態,并且在服務無響應時更準確地將容器標記為不健康。探針等待2秒以獲取響應,如果超過2秒沒有響應,則認為探針失敗。探針需要連續兩次失敗才會觸發容器重啟,同時在服務恢復響應時能夠快速將容器標記為健康。
livenessProbe:httpGet:path: /port: 8090scheme: HTTPinitialDelaySeconds: 10timeoutSeconds: 2periodSeconds: 1successThreshold: 1failureThreshold: 2

工作流程說明

liveness【整個生命周期存在】——檢測狀態,失敗就kill#用于檢測容器是否處于健康狀態。如果探針失敗,Kubernetes 會殺死容器并根據策略進行重啟。#適用于檢測容器是否需要重啟的情況。tcpSocket:  過嘗試建立 TCP 連接來檢查應用的健康狀況。port: 8090  要連接的端口。`initialDelaySeconds 10` 用于指定在容器啟動后多長時間開始進行首次健康檢查。它的作用是讓容器有足夠的時間來完成初始化操作,避免在容器還未完全啟動時就進行健康檢查,從而導致誤判。例如,如果將 `initialDelaySeconds` 設置為 `30`,那么 Kubernetes 會在容器啟動后的 30 秒才開始進行第一次 `startupProbe` 檢查。`timeoutSeconds 2`: 探測的超時時間(秒)。默認值是 1 秒。`periodSeconds 1`: 執行探測的周期(秒)。默認值是 10 秒。`successThreshold 1`: 探測成功的閾值。連續成功達到這個閾值后,容器被認為已經成功啟動。默認值是 1。如果設置為 1,只要有一次成功的探測,容器就會被認為啟動成功。`failureThreshold 2`: 探測失敗的閾值。在達到這個閾值之前,容器不會被認為啟動失敗。默認值是 3
  • 參數解釋

    • httpGet: 使用 HTTP GET 請求進行探測。

    • path: /,這是探針將要檢查的路徑。

    • port: 8090,這是探針將要檢查的端口。

    • scheme: HTTP,使用 HTTP 協議進行探測。

    • initialDelaySeconds: 在容器啟動后等待多長時間開始進行第一次檢查。

      • 在你的配置中,initialDelaySeconds: 10 表示容器啟動后等待10秒再開始進行探測。
    • timeoutSeconds: 探針等待響應的時間。如果超過這個時間沒有響應,則認為探針失敗。

      • 在你的配置中,timeoutSeconds: 2 表示探針等待2秒以獲取響應。如果超過2秒沒有響應,則認為探針失敗。
    • periodSeconds: 探針之間的間隔時間,即每隔多少秒進行一次檢查。

      • 在你的配置中,periodSeconds: 1 表示每1秒進行一次探測。
    • successThreshold: 探針連續成功的次數,只有達到這個次數才認為探針成功。

      • 在你的配置中,successThreshold: 1 表示探針只需一次成功就認為探測通過。
    • failureThreshold: 探針連續失敗的次數,只有達到這個次數才認為探針失敗,并觸發容器重啟。

      • 在你的配置中,failureThreshold: 2 表示探針需要連續兩次失敗才認為探測失敗。
  • 工作流程

      1. 容器啟動后,探針會等待10秒再開始進行探測(initialDelaySeconds: 10)。
      1. 每1秒,探針會對 http://<容器IP>:8090/ 發起一次 HTTP GET 請求(periodSeconds: 1)。
      1. 如果探針在2秒內沒有收到響應(timeoutSeconds: 2),則認為探針失敗。
      1. 探針需要連續兩次失敗(failureThreshold: 2)才會觸發容器重啟。
      1. 探針只需一次成功(successThreshold: 1)就會將容器標記為健康。
  • 適用場景

    • initialDelaySeconds: 10:適用于希望容器啟動后等待一段時間再開始探測的場景。
    • timeoutSeconds: 2:適用于希望快速檢測到服務無響應的情況。
    • periodSeconds: 1:適用于希望頻繁檢查服務健康狀態的情況。
    • successThreshold: 1:適用于希望探針只需一次成功就認為服務健康的情況。
    • failureThreshold: 2:適用于希望探針需要連續兩次失敗才認為服務不健康的情況,避免偶發性故障導致不必要的重啟。
  • 滿足需求

    • 10秒后開始探測:容器啟動后等待10秒再開始進行探測。
    • 2秒無響應:探針等待2秒以獲取響應,如果超過2秒沒有響應,則認為探針失敗。
    • 每1秒檢查一次:探針每1秒檢查一次服務狀態。
    • 連續兩次失敗:探針需要連續兩次失敗才會觸發容器重啟。

readnessProbe探針

readnessProbe說明

  • readinessProbe 是 Kubernetes 中的一種探針,用于檢測容器是否已經準備好接受流量。

    • 如果探針失敗,Kubernetes 會將容器從服務的端點列表中移除,但不會殺死容器。
    • 這主要用于確保只有健康且準備好處理請求的容器才會接收流量。
    • 通過合理配置 readinessProbe,可以確保只有健康且準備好處理請求的容器才會接收流量,從而提高應用的可靠性和可用性。
  • readinessProbe 參數說明
    以下是 readinessProbe 的常用參數及其說明:

    1. httpGet: 使用 HTTP GET 請求進行探測。
    • path: 要探測的 HTTP 路徑。
    • port: 要探測的端口。
    • scheme: 使用的協議(HTTP 或 HTTPS)。

    示例:

    httpGet:path: /port: 8080scheme: HTTP
    
    1. tcpSocket: 使用 TCP 檢查進行探測。
    • port: 要探測的端口。

    示例:

    tcpSocket:port: 8080
    
    1. exec: 使用命令執行進行探測。
    • command: 要執行的命令及其參數。

    示例:

    exec:command:- cat- /etc/hosts
    
    1. initialDelaySeconds: 在容器啟動后等待多長時間開始進行第一次檢查。
    • 類型:整數
    • 默認值:0
    1. timeoutSeconds: 探針等待響應的時間。如果超過這個時間沒有響應,則認為探針失敗。
    • 類型:整數
    • 默認值:1
    1. periodSeconds: 探針之間的間隔時間,即每隔多少秒進行一次檢查。
    • 類型:整數
    • 默認值:10
    1. successThreshold: 探針連續成功的次數,只有達到這個次數才認為探針成功。
    • 類型:整數
    • 默認值:1
    1. failureThreshold: 探針連續失敗的次數,只有達到這個次數才認為探針失敗,并將容器標記為不就緒。
    • 類型:整數
    • 默認值:3

示例配置

以下是一個完整的 readinessProbe 配置示例:

readinessProbe:httpGet:path: /port: 8080scheme: HTTPinitialDelaySeconds: 10timeoutSeconds: 1periodSeconds: 10successThreshold: 1failureThreshold: 3

參數解釋

  • httpGet: 使用 HTTP GET 請求檢查 / 路徑,端口為 8080,使用 HTTP 協議。
  • initialDelaySeconds: 10: 容器啟動后等待10秒再開始進行探測。
  • timeoutSeconds: 1: 探針等待1秒以獲取響應。如果超過1秒沒有響應,則認為探針失敗。
  • periodSeconds: 10: 每10秒進行一次探測。
  • successThreshold: 1: 探針只需一次成功就認為探測通過。
  • failureThreshold: 3: 探針需要連續三次失敗才認為探測失敗,并將容器標記為不就緒。

使用場景說明

  • 檢測應用是否準備好接受流量:在應用啟動過程中,可能需要進行一些初始化操作(如加載配置、連接數據庫等),readinessProbe 可以確保應用在完成這些操作后才開始接收流量。
  • 動態調整服務流量:在運行過程中,如果應用暫時無法處理請求(如進行內部維護或資源不足),readinessProbe 可以將容器從服務的端點列表中移除,待應用恢復后再重新加入。

實例——如果發現業務3秒后無響應,訪問流量將不會傳值該容器,5秒內如果回復響應,訪問流量將繼續轉發至該容器

  • 題目要求:如果發現業務3秒后無響應,訪問流量將不會傳值該容器,5秒內如果回復響應,訪問流量將繼續轉發至該容器
  • 最終用下面參數
    這種配置確保了探針能夠每秒檢查一次服務狀態,并且在服務無響應時更準確地將容器標記為不就緒。探針等待3秒以獲取響應,如果超過3秒沒有響應,則認為探針失敗。探針只需一次失敗就會將容器標記為不就緒,同時在服務恢復響應時能夠在5秒內檢測到并將容器標記為就緒。
readinessProbe:httpGet:path: /port: 8090scheme: HTTPinitialDelaySeconds: 10timeoutSeconds: 3periodSeconds: 1successThreshold: 1failureThreshold: 1

工作流程說明

readness【整個生命周期存在】——檢測業務,失敗就不轉發業務【不會kill掉容器】#用于檢測容器是否準備好接受流量。如果探針失敗,Kubernetes 會將容器從服務的端點列表中移除,但不會殺死容器。#適用于檢測容器是否可以接受流量的情況。httpGet: 通過發送 HTTP GET 請求來檢查應用的健康狀況。path: / 要訪問的 HTTP 路徑。port: 8090 要訪問的端口。scheme: HTTP 指定 HTTP 請求的協議,常見的值為 HTTP 和 HTTPS。`initialDelaySeconds 10` 用于指定在容器啟動后多長時間開始進行首次健康檢查。它的作用是讓容器有足夠的時間來完成初始化操作,避免在容器還未完全啟動時就進行健康檢查,從而導致誤判。例如,如果將 `initialDelaySeconds` 設置為 `30`,那么 Kubernetes 會在容器啟動后的 30 秒才開始進行第一次 `startupProbe` 檢查。`timeoutSeconds 3`: 探測的超時時間(秒)。默認值是 1 秒。`periodSeconds 1`: 執行探測的周期(秒)。默認值是 10 秒。`successThreshold 1`: 探測成功的閾值。連續成功達到這個閾值后,容器被認為已經成功啟動。默認值是 1。如果設置為 1,只要有一次成功的探測,容器就會被認為啟動成功。`failureThreshold 1`: 探測失敗的閾值。在達到這個閾值之前,容器不會被認為啟動失敗。默認值是 3
  • 參數解釋

    • httpGet: 使用 HTTP GET 請求進行探測。

      • path: /,這是探針將要檢查的路徑。
      • port: 8090,這是探針將要檢查的端口。
      • scheme: HTTP,使用 HTTP 協議進行探測。
    • initialDelaySeconds: 在容器啟動后等待多長時間開始進行第一次檢查。

      • 在你的配置中,initialDelaySeconds: 10 表示容器啟動后等待10秒再開始進行探測。
    • timeoutSeconds: 探針等待響應的時間。如果超過這個時間沒有響應,則認為探針失敗。

      • 在你的配置中,timeoutSeconds: 3 表示探針等待3秒以獲取響應。如果超過3秒沒有響應,則認為探針失敗。
    • periodSeconds: 探針之間的間隔時間,即每隔多少秒進行一次檢查。

      • 在你的配置中,periodSeconds: 1 表示每1秒進行一次探測。
    • successThreshold: 探針連續成功的次數,只有達到這個次數才認為探針成功。

      • 在你的配置中,successThreshold: 1 表示探針只需一次成功就認為探測通過。
    • failureThreshold: 探針連續失敗的次數,只有達到這個次數才認為探針失敗,并將容器標記為不就緒。

      • 在你的配置中,failureThreshold: 1 表示探針只需一次失敗就認為探測失敗。
  • 工作流程

      1. 容器啟動后,探針會等待10秒再開始進行探測(initialDelaySeconds: 10)。
      1. 每1秒,探針會對 http://<容器IP>:8090/ 發起一次 HTTP GET 請求(periodSeconds: 1)。
      1. 如果探針在3秒內沒有收到響應(timeoutSeconds: 3),則認為探針失敗。
      1. 探針只需一次失敗(failureThreshold: 1)就會將容器標記為不就緒。
      1. 探針只需一次成功(successThreshold: 1)就會將容器標記為就緒。
  • 適用場景

    • initialDelaySeconds: 10:適用于希望容器啟動后等待一段時間再開始探測的場景。
    • timeoutSeconds: 3:適用于希望快速檢測到服務無響應的情況。
    • periodSeconds: 1:適用于希望頻繁檢查服務健康狀態的情況。
    • successThreshold: 1:適用于希望探針只需一次成功就認為服務就緒的情況。
    • failureThreshold: 1:適用于希望探針只需一次失敗就認為服務不就緒的情況,能夠快速響應服務的異常狀態。
  • 滿足需求

    • 10秒后開始探測:容器啟動后等待10秒再開始進行探測。
    • 3秒無響應:探針等待3秒以獲取響應,如果超過3秒沒有響應,則認為探針失敗。
    • 每1秒檢查一次:探針每1秒檢查一次服務狀態。
    • 一次失敗即標記為不就緒:探針只需一次失敗就會將容器標記為不就緒。
    • 一次成功即標記為就緒:探針只需一次成功就會將容器標記為就緒。

一個完整的包含3個探針的實例yaml文件

可以直接通過下面內容創建一個負載的
在這里插入圖片描述

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

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

相關文章

CSS技巧專欄:一日一例 1.純CSS實現 會討好的熱情按鈕 特效

題外話: 從今天開始,我準備開設一個新的專欄,專門寫 使用CSS實現各種酷炫按鈕的方法,本專欄目前準備寫40篇左右,大概會完成如下按鈕效果: 今天,我來介紹第一個按鈕的實現方法:會討好的熱情按鈕。為什么我給它起這樣的名字呢?你看它像不像一個不停搖尾巴的小黃?當你鼠…

【QML之·基礎語法概述】

系列文章目錄 文章目錄 前言一、QML基礎語法二、屬性三、腳本四、核心元素類型4.1 元素可以分為視覺元素和非視覺元素。4.2 Item4.2.1 幾何屬性(Geometry&#xff09;:4.2.2 布局處理:4.2.3 鍵處理&#xff1a;4.2.4 變換4.2.5 視覺4.2.6 狀態定義 4.3 Rectangle4.3.1 顏色 4.4…

1Panel服務器面板支持哪些Linux操作系統?

1Panel面板支持的Linux操作系統版本有哪些&#xff1f;1Panel支持主流Linux發行版本&#xff0c;包括RedHat、CentOS、Ubuntu、Debian、openEuler及其他國產操作系統。支持多種服務器架構&#xff0c;碼筆記整理詳細1Panel面板支持的服務器系統、架構、內存和瀏覽器支持&#x…

【界面態】霍爾效應表征氮化對SiC/SiO2界面陷阱的影響

引言 引言主要介紹了硅碳化物&#xff08;SiC&#xff09;金屬-氧化物-半導體場效應晶體管&#xff08;MOSFETs&#xff09;作為新一代高壓、低損耗功率器件的商業化背景。SiC MOSFETs因其優越的電氣特性&#xff0c;在高電壓和高溫應用領域具有巨大的潛力。然而&#xff0c;盡…

綜合安全防護

題目 1,DMZ區內的服務器,辦公區僅能在辦公時間內(9:00-18:00)可以訪問,生產區的設備全天可以訪問. 2,生產區不允許訪問互聯網,辦公區和游客區允許訪問互聯網 3,辦公區設備10.0.2.10不允許訪問DMz區的FTP服務器和HTTP服務器,僅能ping通10.0.3.10 4,辦公區分為市場部和研發部,研…

Redis 數據過期及淘汰策略

Redis 數據過期及淘汰策略 過期策略 定時過期 在設置key?的過期時間的同時&#xff0c;為該key?創建一個定時器&#xff0c;讓定時器在key?的過期時間來臨時&#xff0c;對key進行刪除。到過期時間就會立即清除。該策略可以立即清除過期的數據&#xff0c;對內存很友好&a…

動態數據庫設計

動態數據庫設計是一種靈活的方法&#xff0c;用于構建能夠適應不斷變化的數據需求的數據庫結構。它強調在不頻繁修改數據庫表結構的前提下&#xff0c;有效管理和存儲多樣化的數據。以下是實現動態數據庫設計的一些關鍵技術點和策略&#xff1a; 實體-屬性-值&#xff08;EAV&a…

Rockchip RK3588 - Rockchip Linux SDK腳本分析

---------------------------------------------------------------------------------------------------------------------------- 開發板 &#xff1a;ArmSoM-Sige7開發板eMMC &#xff1a;64GBLPDDR4 &#xff1a;8GB 顯示屏 &#xff1a;15.6英寸HDMI接口顯示屏u-boot &a…

LeetCode //C - 214. Shortest Palindrome

214. Shortest Palindrome You are given a string s. You can convert s to a palindrome by adding characters in front of it. Return the shortest palindrome you can find by performing this transformation. Example 1: Input: s “aacecaaa” Output: “aaacec…

如何在JetBrains中寫Codeforce?

目錄 前言 正文 leetcode 個人喜好 參考資料 具體操作步驟 尾聲 &#x1f52d; Hi,I’m Pleasure1234&#x1f331; I’m currently learning Vue.js,SpringBoot,Computer Security and so on.&#x1f46f; I’m studying in University of Nottingham Ningbo China&#x1f4…

Python函數 之 模塊和包

1.模塊 1, 在Python 中, 每個以 .py 結尾的 Python 代碼?件 都可以稱為是?個模塊。 2, 在模塊中 別?書寫好的功能(變量, 函數, 類)&#xff0c;我們可以拿來直接使?。 3, 我們自己寫的代碼文件&#xff0c; 想要作為模塊讓別?使?, 你的代碼?件名(模塊名) 滿足標識符的規…

物流工業三防平板實時跟蹤貨物位置和狀態

在當今全球化和高度數字化的商業環境中&#xff0c;物流行業的高效運作對于企業的成功和經濟的繁榮至關重要。貨物的準確、實時跟蹤不僅能提高物流效率&#xff0c;還能增強客戶滿意度&#xff0c;降低運營成本。物流工業三防平板的出現&#xff0c;為實現貨物位置和狀態的實時…

全網最適合入門的面向對象編程教程:12 類和對象的 Python 實現-Python 使用 logging 模塊輸出程序運行日志

全網最適合入門的面向對象編程教程&#xff1a;12 類和對象的 Python 實現-Python 使用 logging 模塊輸出程序運行日志 摘要&#xff1a; 本文主要介紹了日志的定義和作用&#xff0c;以及 Python 內置日志處理的 logging 模塊&#xff0c;同時簡單說明了日志等級和 logging …

【人工智能】-- 搜索技術(狀態空間法)

個人主頁&#xff1a;歡迎來到 Papicatch的博客 課設專欄 &#xff1a;學生成績管理系統 專業知識專欄&#xff1a; 專業知識 文章目錄 &#x1f349;引言 &#x1f348;介紹 &#x1f349;狀態空間法 &#x1f348;狀態空間的構成 &#x1f34d;狀態 &#x1f34d;算符…

搜維爾科技:觸覺反饋數據手套CyberGlove擊鼓測試

觸覺反饋數據手套CyberGlove擊鼓測試 搜維爾科技&#xff1a;觸覺反饋數據手套CyberGlove擊鼓測試

辦公助手推薦?

辦公助手來啦&#xff01;? 辦公助手來啦&#xff01;?&#x1f31f; 主要亮點&#x1f4dd; 全新PDF編輯器&#x1f3a8; 豐富的幻燈片版式&#x1f30d; 改進的從右至左顯示&#x1f310; 新增本地化選項 &#x1f4ca; 應用場景在線辦公套件&#x1f4f1; 多平臺支持&…

IEC62056標準體系簡介-1.引言

隨著微電子技術和信息技術的發展&#xff0c;電力系統由智能計量儀表、自動化裝置、現代通信設備等組成的各類系統逐步取代過去由感應系計量表計、手動裝置、人工操作等組成的運行模式。為滿足電力市場變革和用戶管理中的抄表&#xff08;含自動&#xff09;、用戶服務、價格表…

torch.autograd.Function自定義前向傳播和反向傳播

torch.autograd.Function 是 PyTorch 提供的一個接口&#xff0c;用于自定義前向傳播和反向傳播的操作。自定義操作需要繼承 torch.autograd.Function 并重載 forward 和 backward 方法。 下面是一個簡單的示例&#xff0c;展示如何自定義一個平方操作的前向傳播和反向傳播。 …

idea創建dynamic web project

由于網課老師用的是eclipse,所以又得自己找教程了…… 解決方案&#xff1a; https://blog.csdn.net/Awt_FuDongLai/article/details/115523552

20240709每日后端--------最優解決Invalid bound statement (not found)

目標 最優解決Invalid bound statement (not found) 步驟 1、打包 2、查看target下是否成雙成對出現 3、核對無誤后&#xff0c;即可解決問題。