k8s應(yīng)用監(jiān)控探針詳解
應(yīng)用監(jiān)控
參考 http://www.dbjr.com.cn/article/241418.htm
在pod之上 添加一個探針, kubelet通過探針去檢查應(yīng)用
pod狀態(tài)轉(zhuǎn)換
pod的啟動流程?
- schduler環(huán)節(jié) 先綁定節(jié)點(diǎn)
- kubelet接管
- 準(zhǔn)備CNI CSI CRI
- 啟動pod中的container
- 啟動探針
- 存活探針
- 監(jiān)測pod是否健康
- 就緒探針
容器式運(yùn)行的應(yīng)用類似于“黑盒”,默認(rèn)不會配置探針時 所以kublet只會監(jiān)視pod的存活狀態(tài)(但是無法檢查是否處于正常的服務(wù) 對于pod不處理請求的情況無法檢查 不能執(zhí)行一些高級的檢查)
為了便于k8s對其進(jìn)行監(jiān)測,云原生應(yīng)用應(yīng)該輸出用于監(jiān)視自身的API
- 包括健康狀態(tài)、指標(biāo)、分布式跟蹤和日志等
- 最基本要提供用于健康狀態(tài)監(jiān)測的API
Pod支持的監(jiān)測類型(健康探針)
- startup Probe 啟動探針,用來檢查應(yīng)用是否已經(jīng)啟動成功,適合那些有大量初始化工作要做,啟動很慢的應(yīng)用
- liveness Probe 存活探針,用來檢查應(yīng)用是否正常運(yùn)行,是否存在死鎖、死循環(huán)
- readiness Probe 就緒探針,用來檢查應(yīng)用是否可以接收流量,是否能夠?qū)ν馓峁┓?wù)。
監(jiān)測機(jī)制
- Exec Action:執(zhí)行一個 Linux 命令看狀態(tài)碼,根據(jù)指定命令的結(jié)果狀態(tài)碼判定,
- TcpSocket Action:使用TCP協(xié)議嘗試連接容器的指定端口,根據(jù)相應(yīng)TCP套接字連接建立狀態(tài)判定
- HTTPGet Action:連接端口并發(fā)送 HTTP GET 請求, 根據(jù)指定https/http服務(wù)URL的響應(yīng)結(jié)果判定
配置參數(shù)
initialDelaySeconds
periodSeconds: 執(zhí)行探測動作的時間間隔,默認(rèn)是 10 秒探測一次。
timeoutSeconds: 探測動作的超時時間,如果超時就認(rèn)為探測失敗,默認(rèn)是 1 秒。successThreshold: 連續(xù)幾次探測成功才認(rèn)為是正常,對于 startupProbe 和 livenessProbe 來說它只能是 1。
failureThreshold: 連續(xù)探測失敗幾次才認(rèn)為是真正發(fā)生了異常,默認(rèn)是 3 次。
示例
同時定義了三種探針
- startup使用Exec Action
- liveness和readiness使用HTTPGet Action
測試效果
- liveness
- URL "/livez" 支持以POST方法為livez參數(shù)設(shè)定不同值,非OK值都以5xx響應(yīng)碼響應(yīng);
- readiness
- URL "/readyz" 支持以POST方法為readyz參數(shù)設(shè)定不同值,非OK值都以5xx響應(yīng)碼響應(yīng);
image pull policy 鏡像管理策略
Always 無論本地是否有相關(guān)的鏡像 總是要到registry上下載 - 缺點(diǎn) 浪費(fèi)帶寬 - 好處 避免本地污染
if not present 本地不存在相關(guān)的image是 才去registry上下載 - 好處 運(yùn)行快 - 缺點(diǎn) 可能被污染 never 從不下載
特殊情況 image 的tag是latest
apiVersion: v1 kind: Pod metadata: name: pod-probe-demo namespace: default spec: containers: - name: demo image: ikubernetes/demoapp:v1.0 imagePullPolicy: IfNotPresent startupProbe: exec: command: ['/bin/sh','-c','test','"$(curl -s 127.0.0.1/livez)"=="OK"'] initialDelaySeconds: 0 failureThreshold: 3 periodSeconds: 2 livenessProbe: httpGet: path: '/livez' port: 80 scheme: HTTP initialDelaySeconds: 3 timeoutSeconds: 2 readinessProbe: httpGet: path: '/readyz' port: 80 scheme: HTTP initialDelaySeconds: 15 timeoutSeconds: 2 restartPolicy: Always
以上就是k8s應(yīng)用監(jiān)控探針詳解的詳細(xì)內(nèi)容,更多關(guān)于k8s應(yīng)用監(jiān)控探針的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
k8s部署Ingress并創(chuàng)建規(guī)則的詳細(xì)介紹
這篇文章主要介紹了k8s部署Ingress并創(chuàng)建規(guī)則,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03Rainbond自動部署初始化Schema的數(shù)據(jù)庫步驟教程
這篇文章主要為大家介紹了Rainbond自動部署初始化Schema的數(shù)據(jù)庫過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04