日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Pod 生命周期、重啟策略、健康檢查、服務可用性檢查

作者:看,未來 更新時間: 2022-09-22 編程語言

文章目錄

    • 生命周期
    • 重啟策略
    • Pod 健康檢查 & 服務可用性檢查
      • 探針實現方式
      • setupProbe 參考

生命周期

正常就正常,不正??慈罩?。下一個

重啟策略

Pod 重啟策略包括 Always、Never、OnFailure。
kubelet 重啟失敗容器的時間間隔以 sync-frequency 乘 2n 來計算,如 1、2、4、8 倍等,最長時延 5min,并在重啟成功之后的 10 min 后重置該時間。

當前可用于管理 Pod 的控制器包括 RC、Job、DaemonSet,還可以通過 kubelet 管理(靜態 Pod),每種控制器對應的 Pod 重啟策略要求如下:

  • RC 和 DS:必須設置為 Always,需要保證容器的正常運行。
  • Job:必須不設置為 Always,確保 Job 執行完畢之后不會重啟。
  • 對于 kubelet,在 Pod 失效時自動啟動它。

Pod 健康檢查 & 服務可用性檢查

k8s 對 Pod 的檢查有三種探針,LivenessProbe、ReadinessProbe、SetupProbe。相對前兩種比較常用,kubelet 會定期執行這兩種探針來診斷容器的健康狀況。

LibenessProbe 用于判斷容器是否存活,如果不健康,就殺掉,然后看看要不要重啟。如果沒有設定該探針,則默認一直是存活的,至于真實是死是活就不好說了。
ReadinessProbe 用于判斷容器服務是否可用,對于被 Service 管理的 Pod,如果發現容器不可用,系統將從 Service 的后端 Pod Endpoint 列表中將該 pod 隔離出去,直到它什么時候可用了再放回來。這樣可以防止 Service 將業務轉發到不可用的 Pod 上。
SetupProbe 探針,用于一些啟動比較慢的情況。此時 ReadinessProbe 就不適用了,對于這種有且僅有一次的操作,使用 SetupProbe。

探針實現方式

以上三種探針均可使用以下三種實現方式:

1)execAction,在容器內部運行一個命令,如果命令返回碼為0,則表明容器健康。

apiVersion: v1
kind: Pod
meatdate:
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: busybox:latest
    args:
    - /bin/sh
    - -c
    - echo ok > /tmp/health; sleep 10; rm -rf /tmp/health; sleep 60
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/health
      initialDelaySeconds: 15	# 啟動容器后首次警醒健康檢查的等待時間
      timeoutSeconds: 1			# 健康檢查發送請求之后等待響應的時間,如果超時,則 kubelet 認為容器已無法提供服務

2)通過 tcpSocket
通過容器的 IP 地址和端口號執行 TCP 檢查,如果能夠建立連接則說明容器健康。
以下以 localhost:80 為例:

apiVersion: v1
kind: Pod
meatdate:
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: busybox:latest
    args:
    - /bin/sh
    - -c
    - echo ok > /tmp/health; sleep 10; rm -rf /tmp/health; sleep 60
    livenessProbe:
      tcpSocket:
        port:80
      initialDelaySeconds: 15
      timeoutSeconds: 1

3)httpGet 方式
通過容器 IP、端口號以及路徑調用 Get 方法,如果返回值結余 200~400 則說明正常。

apiVersion: v1
kind: Pod
meatdate:
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: busybox:latest
    args:
    - /bin/sh
    - -c
    - echo ok > /tmp/health; sleep 10; rm -rf /tmp/health; sleep 60
    livenessProbe:
      httpGet: 
        path: /_status/healthz
        port: 80
      initialDelaySeconds: 15
      timeoutSeconds: 1

setupProbe 參考

apiVersion: v1
kind: Pod
meatdate:
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: busybox:latest
    args:
    - /bin/sh
    - -c
    - echo ok > /tmp/health; sleep 10; rm -rf /tmp/health; sleep 60
    startupProbe:
      httpGet:
        path: /_status/healthz
        port: 80
      failureThreshold: 20
      periodSeconds: 10

這個 Pod 有 20 * 10 = 200s 的啟動時間。


原文鏈接:https://lion-wu.blog.csdn.net/article/details/126922367

欄目分類
最近更新