Kubernetes 探針 (Probe) 介紹及配置示例

探針 (Probe) 用于檢查容器的健康狀態(tài)唆貌,確保 Kubernetes (K8s) 能夠 正確管理 Pod 的生命周期起趾。本文將介紹 Liveness胰挑、Readiness试读、Startup 三種探針杠纵,并詳細(xì)說明常用 配置字段


1. 探針類型

探針類型 作用 失敗后行為 適用場景
Liveness 探針 檢查容器是否存活 失敗后 重啟容器 防止進(jìn)程卡死
Readiness 探針 檢查容器是否能接收流量 失敗后 從負(fù)載均衡中移除 需要外部資源的應(yīng)用
Startup 探針 檢查應(yīng)用是否已啟動完成 失敗后 重啟容器 啟動慢的應(yīng)用

2. 探針的常見配置字段

K8s 提供了多種 探針參數(shù)钩骇,用于控制探測的方式和頻率比藻。

配置項 說明 默認(rèn)值
initialDelaySeconds 初始延遲時間(秒),容器啟動后等待多少秒才開始探測 0
periodSeconds 探測間隔時間(秒)倘屹,多久探測一次 10
timeoutSeconds 探測超時時間(秒)银亲,探測請求最多等待多久 1
failureThreshold 連續(xù)探測失敗多少次 才認(rèn)為容器異常 3
successThreshold 連續(xù)探測成功多少次 才認(rèn)為容器恢復(fù)正常 1
httpGet 通過 HTTP 方式探測,定義 pathport N/A
tcpSocket 通過 TCP 方式探測纽匙,檢測端口是否打開 N/A
exec 通過 執(zhí)行命令探測务蝠,返回 0 表示成功 N/A

3. 探針的三種檢查方式

K8s 提供 三種探測方式,每種方式適用于不同的場景烛缔。

3.1 HTTP 請求方式 (httpGet)

適用于 提供 HTTP API 的應(yīng)用馏段,如 Web 服務(wù)RESTful API

livenessProbe:
  httpGet:
    path: /health
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10
  timeoutSeconds: 3
  failureThreshold: 3

解釋:

  • 10 秒 訪問 /health 接口 檢查健康狀態(tài)力穗。
  • 超過 3 秒無響應(yīng) 視為失敗毅弧。
  • 連續(xù) 3 次失敗,容器將被 重啟当窗。

3.2 TCP 端口檢查 (tcpSocket)

適用于 沒有 HTTP 健康檢查必須保持端口可用 的服務(wù),例如 數(shù)據(jù)庫寸宵、Redis崖面、MQTT 服務(wù)器

readinessProbe:
  tcpSocket:
    port: 3306
  initialDelaySeconds: 5
  periodSeconds: 10

解釋:

  • 檢查 3306 端口是否可連接(用于 MySQL)梯影。
  • 失敗則 不接受新請求巫员。

3.3 命令執(zhí)行方式 (exec)

適用于 沒有 Web API,但可以通過 執(zhí)行命令 檢查狀態(tài)的應(yīng)用甲棍,例如 后臺任務(wù)守護(hù)進(jìn)程简识。

startupProbe:
  exec:
    command:
    - cat
    - /tmp/healthy
  initialDelaySeconds: 10
  periodSeconds: 5
  failureThreshold: 30

解釋:

  • 運行 cat /tmp/healthy,如果文件存在則表示啟動成功。
  • 失敗 30 次(150 秒)才重啟容器七扰,適用于 啟動時間較長的應(yīng)用奢赂。

4. 綜合示例(多個探針)

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: my-app
    image: my-app-image

    # 存活探針
    livenessProbe:
      httpGet:
        path: /health
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 10
      timeoutSeconds: 3
      failureThreshold: 3

    # 就緒探針
    readinessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5

    # 啟動探針
    startupProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 10
      periodSeconds: 5
      failureThreshold: 30

解析:

  • Liveness Probe(存活探針):每 10 秒 訪問 /health,失敗 3 次 重啟容器颈走。
  • Readiness Probe(就緒探針):檢測 8080 端口 是否可用膳灶,失敗則 不接受新流量
  • Startup Probe(啟動探針):運行 cat /tmp/healthy 檢查應(yīng)用是否啟動完成立由,失敗 30 次才重啟轧钓。

5. 探針優(yōu)化建議

建議 說明
使用 Startup 探針防止誤判 啟動慢的應(yīng)用(如 JVM)應(yīng)使用 startupProbe,避免 K8s 誤判啟動失敗
適當(dāng)調(diào)整 failureThreshold 業(yè)務(wù)容器可能 偶爾超時锐膜,適當(dāng)增加 failureThreshold 可減少不必要的重啟
超時時間 (timeoutSeconds) 適配應(yīng)用 確保超時時間足夠應(yīng)用響應(yīng)探測請求毕箍,避免因網(wǎng)絡(luò)延遲導(dǎo)致誤判
避免探測過于頻繁 periodSeconds 不宜設(shè)置過小,否則會 增加探測壓力

6. 總結(jié)

  1. Liveness Probe(存活探針) 確保容器不死鎖道盏,失敗會 重啟容器霉晕。
  2. Readiness Probe(就緒探針) 確保容器能接受請求,失敗會 臨時移出負(fù)載均衡捞奕。
  3. Startup Probe(啟動探針) 適用于 啟動慢的應(yīng)用牺堰,失敗會 重啟容器
  4. 支持 HTTP颅围、TCP伟葫、命令執(zhí)行三種探測方式,根據(jù)應(yīng)用特性選擇合適的檢查方式院促。

通過 合理配置探針筏养,可以提升 Kubernetes 集群的 穩(wěn)定性高可用性

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末常拓,一起剝皮案震驚了整個濱河市渐溶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弄抬,老刑警劉巖茎辐,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異掂恕,居然都是意外死亡拖陆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門懊亡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來依啰,“玉大人,你說我怎么就攤上這事店枣∷倬” “怎么了叹誉?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長闷旧。 經(jīng)常有香客問我长豁,道長,這世上最難降的妖魔是什么鸠匀? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任蕉斜,我火速辦了婚禮,結(jié)果婚禮上缀棍,老公的妹妹穿的比我還像新娘宅此。我一直安慰自己,他們只是感情好爬范,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布父腕。 她就那樣靜靜地躺著,像睡著了一般青瀑。 火紅的嫁衣襯著肌膚如雪璧亮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天斥难,我揣著相機與錄音枝嘶,去河邊找鬼。 笑死哑诊,一個胖子當(dāng)著我的面吹牛群扶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播镀裤,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼竞阐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了暑劝?” 一聲冷哼從身側(cè)響起骆莹,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎担猛,沒想到半個月后幕垦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡毁习,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年智嚷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纺且。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖稍浆,靈堂內(nèi)的尸體忽然破棺而出载碌,到底是詐尸還是另有隱情猜嘱,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布嫁艇,位于F島的核電站朗伶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏步咪。R本人自食惡果不足惜论皆,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦霎桅、人聲如沸然走。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春屠橄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背闰挡。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工锐墙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人长酗。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓溪北,卻偏偏與公主長得像,于是被迫代替她去往敵國和親花枫。 傳聞我的和親對象是個殘疾皇子刻盐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容