Kubernetes:健康檢查
Blog:博客園 個(gè)人
應(yīng)用在運(yùn)行過程中難免會(huì)出現(xiàn)錯(cuò)誤,如程序異常、軟件異常、硬件故障、網(wǎng)絡(luò)故障等。因此,系統(tǒng)通過一些手段來判斷應(yīng)用是否運(yùn)行正常,這些手段稱之為健康檢查(診斷)。
前置知識(shí)
回顧一下Pod的生命周期:
檢查機(jī)制(Check mechanisms)
有以下幾種方法來檢查容器:
exec:在容器內(nèi)執(zhí)行指定命令。如果命令退出時(shí)返回碼為 0 則認(rèn)為診斷成功。 gRPC:使用gRPC執(zhí)行遠(yuǎn)程過程調(diào)用。目標(biāo)應(yīng)該實(shí)施gRPC運(yùn)行狀況檢查。如果響應(yīng)的狀態(tài)為SERVING,則認(rèn)為診斷成功。gRPC檢查是一項(xiàng)Alpha功能,僅當(dāng)您啟用GRPCContainerProbe時(shí)才可用。 httpGet:對(duì)容器的 IP 地址上指定端口和路徑執(zhí)行 HTTP Get 請(qǐng)求。如果響應(yīng)的狀態(tài)碼大于等于 200 且小于 400,則診斷被認(rèn)為是成功的。 tcpSocket:對(duì)容器的 IP 地址上的指定端口執(zhí)行 TCP 檢查。如果端口打開,則診斷被認(rèn)為是成功的。每次探測(cè)都將獲得以下三種結(jié)果之一:
Success(成功):容器通過了診斷。 Failure(失?。喝萜魑赐ㄟ^診斷。 Unknown(未知):診斷失敗,因此不會(huì)采取任何行動(dòng)。針對(duì)運(yùn)行中的容器,kubelet 可以選擇是否執(zhí)行以下三種探針,以及如何針對(duì)探測(cè)結(jié)果作出反應(yīng):
livenessProbe:指示容器是否正在運(yùn)行。如果存活態(tài)探測(cè)失敗,則 kubelet 會(huì)殺死容器, 并且容器將根據(jù)其重啟策略決定未來。如果容器不提供存活探針, 則默認(rèn)狀態(tài)為 Success。 readinessProbe:指示容器是否準(zhǔn)備好為請(qǐng)求提供服務(wù)。如果就緒態(tài)探測(cè)失敗, 端點(diǎn)控制器將從與 Pod 匹配的所有服務(wù)的端點(diǎn)列表中刪除該 Pod 的 IP 地址。 初始延遲之前的就緒態(tài)的狀態(tài)值默認(rèn)為 Failure。 如果容器不提供就緒態(tài)探針,則默認(rèn)狀態(tài)為 Success。 startupProbe: 指示容器中的應(yīng)用是否已經(jīng)啟動(dòng)。如果提供了啟動(dòng)探針,則所有其他探針都會(huì)被 禁用,直到此探針成功為止。如果啟動(dòng)探測(cè)失敗,kubelet 將殺死容器,而容器依其重啟策略進(jìn)行重啟。 如果容器沒有提供啟動(dòng)探測(cè),則默認(rèn)狀態(tài)為 Success。exec方式檢測(cè)存活示例
創(chuàng)建一個(gè) Pod,其中運(yùn)行一個(gè)基于 busybox 鏡像的容器:
apiVersion: v1 kind: Pod metadata: labels: test: liveness name: liveness-exec spec: containers: - name: liveness image: registry.aliyuncs.com/google_containers/busybox args: - /bin/sh - -c - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600 livenessProbe: exec: command: - cat - /tmp/healthy initialDelaySeconds: 5 periodSeconds: 5
當(dāng)容器啟動(dòng)時(shí),執(zhí)行如下的命令:
/bin/sh -c "touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600"
這個(gè)容器生命的前 30 秒, /tmp/healthy 文件是存在的。 所以在這最開始的 30 秒內(nèi),執(zhí)行命令 cat /tmp/healthy 會(huì)返回成功代碼。 30 秒之后,執(zhí)行命令 cat /tmp/healthy 就會(huì)返回失敗代碼。
事件如下:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 41s default-scheduler Successfully assigned default/liveness-exec to node-1 Normal Pulling 40s kubelet Pulling image "registry.aliyuncs.com/google_containers/busybox" Normal Pulled 39s kubelet Successfully pulled image "registry.aliyuncs.com/google_containers/busybox" in 727.748993ms Normal Created 39s kubelet Created container liveness Normal Started 39s kubelet Started container liveness Warning Unhealthy 1s (x2 over 6s) kubelet Liveness probe failed: cat: can't open '/tmp/healthy': No such file or directory
檢查看這個(gè)容器被重啟了:
[root@master test] NAME READY STATUS RESTARTS AGE liveness-exec 1/1 Running 1 82s
httpGet方式檢測(cè)存活示例
創(chuàng)建一個(gè) Pod ,其中運(yùn)行一個(gè)基于 liveness 鏡像的容器:
apiVersion: v1 kind: Pod metadata: labels: test: liveness name: liveness-http spec: containers: - name: liveness image: mirrorgooglecontainers/liveness args: - /server livenessProbe: httpGet: path: /healthz port: 8080 httpHeaders: - name: Custom-Header value: Awesome initialDelaySeconds: 3 periodSeconds: 3
通過看 Pod 事件來檢測(cè)存活探測(cè)器已經(jīng)失敗了并且容器被重新啟動(dòng)了。
kubectl describe pod liveness-http
事件如下:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 100s default-scheduler Successfully assigned default/liveness-http to node-1 Normal Pulled 84s kubelet Successfully pulled image "mirrorgooglecontainers/liveness" in 15.537483195s Normal Pulled 52s kubelet Successfully pulled image "mirrorgooglecontainers/liveness" in 15.375906607s Normal Pulled 19s kubelet Successfully pulled image "mirrorgooglecontainers/liveness" in 15.388654652s Normal Created 18s (x3 over 83s) kubelet Created container liveness Normal Started 18s (x3 over 83s) kubelet Started container liveness Warning Unhealthy 1s (x9 over 73s) kubelet Liveness probe failed: HTTP probe failed with statuscode: 500 Normal Killing 1s (x3 over 67s) kubelet Container liveness failed liveness probe, will be restarted Normal Pulling 1s (x4 over 99s) kubelet Pulling image "mirrorgooglecontainers/liveness"
tcpSocket方式檢測(cè)存活示例
創(chuàng)建一個(gè) Pod ,其中運(yùn)行一個(gè)基于 goproxy 鏡像的容器:
apiVersion: v1 kind: Pod metadata: name: goproxy labels: app: goproxy spec: containers: - name: goproxy image: mirrorgooglecontainers/goproxy:0.1 ports: - containerPort: 8080 readinessProbe: tcpSocket: port: 8080 initialDelaySeconds: 5 periodSeconds: 10 livenessProbe: tcpSocket: port: 8080 initialDelaySeconds: 15 periodSeconds: 20
kubelet 會(huì)在容器啟動(dòng) 5 秒后發(fā)送第一個(gè)就緒探測(cè)。 這會(huì)嘗試連接 goproxy 容器的 8080 端口。 如果探測(cè)成功,這個(gè) Pod 會(huì)被標(biāo)記為就緒狀態(tài),kubelet 將繼續(xù)每隔 10 秒運(yùn)行一次檢測(cè)。
除了就緒探測(cè),這個(gè)配置包括了一個(gè)存活探測(cè)。 kubelet 會(huì)在容器啟動(dòng) 15 秒后進(jìn)行第一次存活探測(cè)。 與就緒探測(cè)類似,會(huì)嘗試連接 goproxy 容器的 8080 端口。 如果存活探測(cè)失敗,這個(gè)容器會(huì)被重新啟動(dòng)。
前置知識(shí)檢查機(jī)制(Check mechanisms)exec方式檢測(cè)存活示例httpGet方式檢測(cè)存活示例tcpSocket方式檢測(cè)存活示例
__EOF__
本文作者: 時(shí)間之旅 本文鏈接: https://www.cnblogs.com/Rohn/p/15903872.html 關(guān)于博主: 評(píng)論和私信會(huì)在第一時(shí)間回復(fù)?;蛘咧苯铀叫盼摇?版權(quán)聲明: 本博客所有文章除特別聲明外,均采用 BY-NC-SA 許可協(xié)議。轉(zhuǎn)載請(qǐng)注明出處! 聲援博主: 如果您覺得文章對(duì)您有幫助,可以點(diǎn)擊文章右下角【推薦】一下。
相關(guān)知識(shí)
[云原生] Kubernetes(k8s)健康檢查詳解與實(shí)戰(zhàn)演示(就緒性探針 和 存活性探針)
k8s健康檢查 spring k8s健康檢查探針多個(gè)地址
spring boot 應(yīng)用在 k8s 中的健康檢查(一)
如何為托管到SAE的應(yīng)用配置健康檢查
Docker安全性:最佳實(shí)踐和常見安全考慮
ASP.NET Core 中的健康狀態(tài)檢查
孕前檢查,健康檢查……
檢查身體健康!檢查身體健康
健康檢查
職業(yè)健康檢查包括()。A.上崗前的健康檢查B.在崗期間的健康檢查C.應(yīng)急檢查D.離崗時(shí)的健康檢查E.職
網(wǎng)址: Kubernetes:健康檢查 http://www.u1s5d6.cn/newsview905319.html
推薦資訊
- 1發(fā)朋友圈對(duì)老公徹底失望的心情 12775
- 2BMI體重指數(shù)計(jì)算公式是什么 11235
- 3補(bǔ)腎吃什么 補(bǔ)腎最佳食物推薦 11199
- 4性生活姿勢(shì)有哪些 盤點(diǎn)夫妻性 10428
- 5BMI正常值范圍一般是多少? 10137
- 6在線基礎(chǔ)代謝率(BMR)計(jì)算 9652
- 7一邊做飯一邊躁狂怎么辦 9138
- 8從出汗看健康 出汗透露你的健 9063
- 9早上怎么喝水最健康? 8613
- 10五大原因危害女性健康 如何保 7828
- 今日水素:陽臺(tái)菜園,居家種出健康芽菜指南
- 運(yùn)動(dòng)女孩的休閑穿搭
- 《居家健康監(jiān)測(cè)證明》可在“隨申辦”在線開
- 【便民提示】在線開具“居家健康監(jiān)測(cè)證明”
- 健身休閑館如何經(jīng)營(yíng)管理
- 這個(gè)集運(yùn)動(dòng)、休閑、時(shí)尚為一體的運(yùn)動(dòng)品牌進(jìn)
- 知名運(yùn)動(dòng)休閑服裝品牌
- 江北新區(qū)兩案例入選省級(jí)居家社區(qū)養(yǎng)老服務(wù)典
- 康健園·戰(zhàn)“疫”|慢性病患者如何做好居家
- 北京啟明康健休閑健身中心 (北京市豐臺(tái)區(qū)