網(wǎng)站首頁 編程語言 正文
文章目錄
- 生命周期
- 重啟策略
- Pod 健康檢查 & 服務可用性檢查
- 探針實現(xiàn)方式
- setupProbe 參考
生命周期
正常就正常,不正常看日志。下一個
重啟策略
Pod 重啟策略包括 Always、Never、OnFailure。
kubelet 重啟失敗容器的時間間隔以 sync-frequency 乘 2n 來計算,如 1、2、4、8 倍等,最長時延 5min,并在重啟成功之后的 10 min 后重置該時間。
當前可用于管理 Pod 的控制器包括 RC、Job、DaemonSet,還可以通過 kubelet 管理(靜態(tài) Pod),每種控制器對應的 Pod 重啟策略要求如下:
- RC 和 DS:必須設置為 Always,需要保證容器的正常運行。
- Job:必須不設置為 Always,確保 Job 執(zhí)行完畢之后不會重啟。
- 對于 kubelet,在 Pod 失效時自動啟動它。
Pod 健康檢查 & 服務可用性檢查
k8s 對 Pod 的檢查有三種探針,LivenessProbe、ReadinessProbe、SetupProbe。相對前兩種比較常用,kubelet 會定期執(zhí)行這兩種探針來診斷容器的健康狀況。
LibenessProbe 用于判斷容器是否存活,如果不健康,就殺掉,然后看看要不要重啟。如果沒有設定該探針,則默認一直是存活的,至于真實是死是活就不好說了。
ReadinessProbe 用于判斷容器服務是否可用,對于被 Service 管理的 Pod,如果發(fā)現(xiàn)容器不可用,系統(tǒng)將從 Service 的后端 Pod Endpoint 列表中將該 pod 隔離出去,直到它什么時候可用了再放回來。這樣可以防止 Service 將業(yè)務轉發(fā)到不可用的 Pod 上。
SetupProbe 探針,用于一些啟動比較慢的情況。此時 ReadinessProbe 就不適用了,對于這種有且僅有一次的操作,使用 SetupProbe。
探針實現(xiàn)方式
以上三種探針均可使用以下三種實現(xiàn)方式:
1)execAction,在容器內(nèi)部運行一個命令,如果命令返回碼為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 # 健康檢查發(fā)送請求之后等待響應的時間,如果超時,則 kubelet 認為容器已無法提供服務
2)通過 tcpSocket
通過容器的 IP 地址和端口號執(zhí)行 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、端口號以及路徑調(diào)用 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
相關推薦
- 2022-06-12 3種Python?實現(xiàn)酷炫進度條的實用方法_python
- 2022-07-15 QT中QByteArray與char、int、float之間的互相轉化_C 語言
- 2022-05-26 Flutter自定義年月日倒計時_Android
- 2022-10-07 android?studio廣播機制使用詳解_Android
- 2022-10-27 Kotlin?Flow操作符及基本使用詳解_Android
- 2023-06-19 Python進行文件處理的示例詳解_python
- 2023-01-17 C#實現(xiàn)自定義ListBox背景的示例詳解_C#教程
- 2022-09-02 R語言數(shù)據(jù)結構之矩陣、數(shù)組與數(shù)據(jù)框詳解_R語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支