k8s應(yīng)用監(jiān)控探針詳解
應(yīng)用監(jiān)控
參考 http://www.dbjr.com.cn/article/241418.htm
在pod之上 添加一個(gè)探針, kubelet通過(guò)探針去檢查應(yīng)用
pod狀態(tài)轉(zhuǎn)換
pod的啟動(dòng)流程?
- schduler環(huán)節(jié) 先綁定節(jié)點(diǎn)
- kubelet接管
- 準(zhǔn)備CNI CSI CRI
- 啟動(dòng)pod中的container
- 啟動(dòng)探針
- 存活探針
- 監(jiān)測(cè)pod是否健康
- 就緒探針
容器式運(yùn)行的應(yīng)用類(lèi)似于“黑盒”,默認(rèn)不會(huì)配置探針時(shí) 所以kublet只會(huì)監(jiān)視pod的存活狀態(tài)(但是無(wú)法檢查是否處于正常的服務(wù) 對(duì)于pod不處理請(qǐng)求的情況無(wú)法檢查 不能執(zhí)行一些高級(jí)的檢查)
為了便于k8s對(duì)其進(jìn)行監(jiān)測(cè),云原生應(yīng)用應(yīng)該輸出用于監(jiān)視自身的API
- 包括健康狀態(tài)、指標(biāo)、分布式跟蹤和日志等
- 最基本要提供用于健康狀態(tài)監(jiān)測(cè)的API
Pod支持的監(jiān)測(cè)類(lèi)型(健康探針)
- startup Probe 啟動(dòng)探針,用來(lái)檢查應(yīng)用是否已經(jīng)啟動(dòng)成功,適合那些有大量初始化工作要做,啟動(dòng)很慢的應(yīng)用
- liveness Probe 存活探針,用來(lái)檢查應(yīng)用是否正常運(yùn)行,是否存在死鎖、死循環(huán)
- readiness Probe 就緒探針,用來(lái)檢查應(yīng)用是否可以接收流量,是否能夠?qū)ν馓峁┓?wù)。
監(jiān)測(cè)機(jī)制
- Exec Action:執(zhí)行一個(gè) Linux 命令看狀態(tài)碼,根據(jù)指定命令的結(jié)果狀態(tài)碼判定,
- TcpSocket Action:使用TCP協(xié)議嘗試連接容器的指定端口,根據(jù)相應(yīng)TCP套接字連接建立狀態(tài)判定
- HTTPGet Action:連接端口并發(fā)送 HTTP GET 請(qǐng)求, 根據(jù)指定https/http服務(wù)URL的響應(yīng)結(jié)果判定
配置參數(shù)
initialDelaySeconds
periodSeconds: 執(zhí)行探測(cè)動(dòng)作的時(shí)間間隔,默認(rèn)是 10 秒探測(cè)一次。
timeoutSeconds: 探測(cè)動(dòng)作的超時(shí)時(shí)間,如果超時(shí)就認(rèn)為探測(cè)失敗,默認(rèn)是 1 秒。successThreshold: 連續(xù)幾次探測(cè)成功才認(rèn)為是正常,對(duì)于 startupProbe 和 livenessProbe 來(lái)說(shuō)它只能是 1。
failureThreshold: 連續(xù)探測(cè)失敗幾次才認(rèn)為是真正發(fā)生了異常,默認(rèn)是 3 次。
示例
同時(shí)定義了三種探針
- startup使用Exec Action
- liveness和readiness使用HTTPGet Action
測(cè)試效果
- 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 無(wú)論本地是否有相關(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)控探針的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
k8s部署Ingress并創(chuàng)建規(guī)則的詳細(xì)介紹
這篇文章主要介紹了k8s部署Ingress并創(chuàng)建規(guī)則,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03使用sealos快速搭建K8s集群環(huán)境的過(guò)程
這篇文章主要介紹了使用sealos快速搭建K8s集群環(huán)境,主要包括sealos安裝方法,虛擬機(jī)設(shè)置方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09Rainbond自動(dòng)部署初始化Schema的數(shù)據(jù)庫(kù)步驟教程
這篇文章主要為大家介紹了Rainbond自動(dòng)部署初始化Schema的數(shù)據(jù)庫(kù)過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04k8s?service?nodePort無(wú)法訪(fǎng)問(wèn)的問(wèn)題解決
今天有一個(gè)項(xiàng)目做service nodeport轉(zhuǎn)發(fā),結(jié)果設(shè)置完之后發(fā)現(xiàn)外網(wǎng)訪(fǎng)問(wèn)失敗,下面這篇文章主要給大家介紹了關(guān)于k8s?service?nodePort無(wú)法訪(fǎng)問(wèn)的問(wèn)題解決,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01