Kubernetes中容器探測,你都了解了嗎?
容器探測用于檢測容器中的應(yīng)用實例是否正常工作,是保障業(yè)務(wù)可用性的一種傳統(tǒng)機制。如果經(jīng)過探測,實例的狀態(tài)不符合預(yù)期,那么kubernetes就會把該問題實例" 摘除 ",不承擔業(yè)務(wù)流量。kubernetes提供了兩種探針來實現(xiàn)容器探測,分別是:
【資料圖】
liveness probes:存活性探針,用于檢測應(yīng)用實例當前是否處于正常運行狀態(tài),如果不是,k8s會重啟容器readiness probes:就緒性探針,用于檢測應(yīng)用實例當前是否可以接收請求,如果不能,k8s不會轉(zhuǎn)發(fā)流量livenessProbe 決定是否重啟容器,readinessProbe 決定是否將請求轉(zhuǎn)發(fā)給容器。
上面兩種探針目前均支持三種探測方式:
Exec命令:在容器內(nèi)執(zhí)行一次命令,如果命令執(zhí)行的退出碼為0,則認為程序正常,否則不正常…… livenessProbe: exec: command: - cat - /tmp/healthy……
TCPSocket:將會嘗試訪問一個用戶容器的端口,如果能夠建立這條連接,則認為程序正常,否則不正常…… livenessProbe: tcpSocket: port: 8080……
HTTPGet:調(diào)用容器內(nèi)Web應(yīng)用的URL,如果返回的狀態(tài)碼在200和399之間,則認為程序正常,否則不正常…… livenessProbe: httpGet: path: / #URI地址 port: 80 #端口號 host: 127.0.0.1 #主機地址 scheme: HTTP #支持的協(xié)議,http或者https……
2、存活性探針(1)Exec模式創(chuàng)建pod-liveness-exec.yaml。
apiVersion: v1kind: Podmetadata: name: pod-liveness-exec namespace: devspec: containers: - name: nginx image: nginx ports: - name: nginx-port containerPort: 80 livenessProbe: exec: command: ["/bin/cat","/tmp/hello.txt"] # 執(zhí)行一個查看文件的命令
因為/tmp/hello.txt 文件不存在,導致反復(fù)重啟容器。
#進入yaml目錄[root@k8s-master ~]# lsanaconda-ks.cfg pod-liveness-exec.yaml[root@k8s-master ~]# clear[root@k8s-master ~]#[root@k8s-master ~]##查看當前dev命名空間下無pod[root@k8s-master ~]# kubectl get pod -n devNo resources found in dev namespace.[root@k8s-master ~]##創(chuàng)建pod[root@k8s-master ~]# kubectl apply -f pod-liveness-exec.yamlpod/pod-liveness-exec created[root@k8s-master ~]##再次查看dev命名空間已創(chuàng)建pod[root@k8s-master ~]# kubectl get pod -n devNAME READY STATUS RESTARTS AGEpod-liveness-exec 0/1 ContainerCreating 0 5s#查看pod詳情[root@k8s-master ~]# kubectl describe pod pod-liveness-exec -n dev#在最下面Events中,容器創(chuàng)建過程報錯Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 28s default-scheduler Successfully assigned dev/pod-liveness-exec to k8s-node2 Normal Pulling 27s kubelet Pulling image "nginx" Normal Pulled 11s kubelet Successfully pulled image "nginx" in 15.48165061s Normal Created 11s kubelet Created container nginx Normal Started 11s kubelet Started container nginx Warning Unhealthy 7s kubelet Liveness probe failed: /bin/cat: /tmp/hello.txt: No such file or directory#再次頻繁查看dev下pod信息可以發(fā)現(xiàn) pod的重啟次數(shù)一直在增加[root@k8s-master ~]# kubectl get pod -n devNAME READY STATUS RESTARTS AGEpod-liveness-exec 1/1 Running 3 (53s ago) 2m54s[root@k8s-master ~]# kubectl get pod -n devNAME READY STATUS RESTARTS AGEpod-liveness-exec 1/1 Running 4 (20s ago) 3m1s
這個時候我們將 yaml改為查看已存在的文件。
apiVersion: v1kind: Podmetadata: name: pod-liveness-exec namespace: devspec: containers: - name: nginx image: nginx ports: - name: nginx-port containerPort: 80 livenessProbe: exec: command: ["/bin/cat","/usr/share/nginx/html/index.html"] # 執(zhí)行一個查看文件的命令 此文件為nginx歡迎頁面 因為我們的容器就是nginx所以這個文件肯定存在的
再看效果:
(2)TCPSocket模式創(chuàng)建pod-liveness-tcpsocket.yaml。
apiVersion: v1kind: Podmetadata: name: pod-liveness-tcpsocket namespace: devspec: containers: - name: nginx image: nginx ports: - name: nginx-port containerPort: 80 livenessProbe: tcpSocket: port: 8080 # 嘗試訪問8080端口,端口不存在
因為容器中8080端口未開通,所以連接失敗。
[root@k8s-master ~]# lsanaconda-ks.cfg pod-liveness-tcpsocket.yaml[root@k8s-master ~]##創(chuàng)建pod[root@k8s-master ~]# kubectl apply -f pod-liveness-tcpsocket.yamlpod/pod-liveness-tcpsocket created[root@k8s-master ~]##獲取pod[root@k8s-master ~]# kubectl get pod -n devNAME READY STATUS RESTARTS AGEpod-liveness-tcpsocket 1/1 Running 0 12s#查看詳情可以看出最后一步 連接被拒絕[root@k8s-master ~]# kubectl describe pod pod-liveness-tcpsocket -n devEvents: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 23s default-scheduler Successfully assigned dev/pod-liveness-tcpsocket to k8s-node2 Normal Pulling 22s kubelet Pulling image "nginx" Normal Pulled 21s kubelet Successfully pulled image "nginx" in 475.556438ms Normal Created 21s kubelet Created container nginx Normal Started 21s kubelet Started container nginx Warning Unhealthy 2s (x2 over 12s) kubelet Liveness probe failed: dial tcp 172.17.169.138:8080: connect: connection refused#頻繁獲取pod詳情可以看出 重啟次數(shù)也在不斷增加[root@k8s-master ~]# kubectl get pod -n devNAME READY STATUS RESTARTS AGEpod-liveness-tcpsocket 1/1 Running 3 (32s ago) 2m13s[root@k8s-master ~]#[root@k8s-master ~]# kubectl get pod -n devNAME READY STATUS RESTARTS AGEpod-liveness-tcpsocket 1/1 Running 3 (46s ago) 2m27s[root@k8s-master ~]#[root@k8s-master ~]# kubectl get pod -n devNAME READY STATUS RESTARTS AGEpod-liveness-tcpsocket 1/1 Running 4 (16s ago) 2m37s
然后將 tcpSocket.port 改為80 再重復(fù)以上步驟就會發(fā)現(xiàn),容器正常啟動。
(3)HTTPGet模式創(chuàng)建pod-liveness-httpget.yaml。
apiVersion: v1kind: Podmetadata: name: pod-liveness-httpget namespace: devspec: containers: - name: nginx image: nginx ports: - name: nginx-port containerPort: 80 livenessProbe: httpGet: # 其實就是訪問http://127.0.0.1:80/hello scheme: HTTP #支持的協(xié)議,http或者https port: 80 #端口號 path: /hello #URI地址 此地址不存在
[root@k8s-master ~]##創(chuàng)建pod[root@k8s-master ~]# kubectl apply -f pod-liveness-httpget.yamlpod/pod-liveness-httpget created#獲取pod[root@k8s-master ~]# kubectl get pod -n devNAME READY STATUS RESTARTS AGEpod-liveness-httpget 0/1 ContainerCreating 0 7s[root@k8s-master ~]# kubectl get pod -n devNAME READY STATUS RESTARTS AGEpod-liveness-httpget 0/1 ContainerCreating 0 13s#查看pod詳情 發(fā)現(xiàn)最后HTTP執(zhí)行報404[root@k8s-master ~]# kubectl describe pod pod-liveness-httpget -n devEvents: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 24s default-scheduler Successfully assigned dev/pod-liveness-httpget to k8s-node2 Normal Pulling 23s kubelet Pulling image "nginx" Normal Pulled 8s kubelet Successfully pulled image "nginx" in 15.416092349s Normal Created 8s kubelet Created container nginx Normal Started 8s kubelet Started container nginx Warning Unhealthy 4s kubelet Liveness probe failed: HTTP probe failed with statuscode: 404#頻繁獲取pod,發(fā)現(xiàn)pod重啟次數(shù)不斷增加[root@k8s-master ~]# kubectl get pod -n devNAME READY STATUS RESTARTS AGEpod-liveness-httpget 1/1 Running 0 36s[root@k8s-master ~]# kubectl get pod -n devNAME READY STATUS RESTARTS AGEpod-liveness-httpget 1/1 Running 1 (3s ago) 43s[root@k8s-master ~]# kubectl get pod -n devNAME READY STATUS RESTARTS AGEpod-liveness-httpget 1/1 Running 2 (47s ago) 117s
然后將 httpGet.path 改為/ 再重復(fù)以上步驟就會發(fā)現(xiàn),容器正常啟動。
至此,已經(jīng)使用liveness Probe演示了三種探測方式,但是查看livenessProbe的子屬性,會發(fā)現(xiàn)除了這三種方式,還有一些其他的配置,在這里一并解釋下:
[root@k8s-master01 ~]# kubectl explain pod.spec.containers.livenessProbeFIELDS: exec
關(guān)鍵詞:
您可能也感興趣:
今日熱點
為您推薦
2023《sky光遇》6月27日季節(jié)蠟燭位置介紹-世界看熱訊
怎么關(guān)閉contra 小娜_cortana小娜怎么關(guān)閉
世界熱消息:沈陽:心理服務(wù)進社區(qū)
排行
- 港股公告掘金|醫(yī)藥公司“重磅炸彈”藥上市申請獲受理 有望...
- 上海將對既有多層住宅加裝電梯提取住房公積金政策做出惠民調(diào)整
- 深圳進一步規(guī)范住房公積金繳存提取等業(yè)務(wù)事項
- 北京樓市迎重磅通知 嚴厲打擊房屋銷售、租賃市場違法違規(guī)行為
- 《北京市深化住宅專項維修資金管理改革實施方案》公開征求意見
- 美的置業(yè)經(jīng)過61輪競價競得義烏1宗商住地,溢價率20.08%
- 深圳3個安居型商品房項目今日起接受網(wǎng)上認購
- 天津61宗地塊掛牌出讓起始時間調(diào)整為9月1日
- 南京大力推進“智慧公積金”建設(shè) 線上貸款申請功能享便利
- 一季度置業(yè)旺季 新房月度訪問熱度同比上漲20.9%
最近更新
- Kubernetes中容器探測,你都了解了嗎?
- 基于EMP2 V3平臺/采用全新設(shè)計 全新DS 4將于7月13日正式上市
- 北京多處公共場所貼出警示:穿洞洞鞋乘扶梯易受傷!
- 世界即時看!這家人工智能初創(chuàng)公司希望通過構(gòu)建腦細胞驅(qū)動的...
- 美國禁毒,內(nèi)病外治行不通(鐘聲) 天天報道
- 當前時訊:暑期研學|懷化慢旅行,采摘楊梅和逛古城吧(組圖)
- 海拔4526米,全國首座“零海拔天文觀測站”交付_焦點熱門
- 朱湖鎮(zhèn)推進高標準農(nóng)田建設(shè) 守好百姓“飯碗田”|環(huán)球看點
- 濮陽市前5個月簽約億元以上項目167個,合同額1103.7億元
- 環(huán)球快資訊:農(nóng)發(fā)行重慶市分行:守護一江碧水兩岸青山
- 滬指微幅高開 餐飲旅游板塊領(lǐng)漲_天天新要聞
- 世界今熱點:四川天府新區(qū)第五幼兒園開展燃氣安全專項檢查
- 環(huán)球熱點評!想穿出氣質(zhì)?別錯過這個夏季“韭菜綠”流行色!
- 陜西省關(guān)于高性能播種機補貼額一覽表的公告_世界時快訊
- 畢業(yè)照只有一人沒被馬賽克 轉(zhuǎn)發(fā)!致敬!
- 海報尺寸(海報尺寸是多少) 天天通訊
- 世界快資訊:山西賊王王彥青,在行刑之前決定用“絕技”換命...
- 美白人婦女不滿鄰居孩子玩耍 隔門射殺黑人母親 僅被控過失...
- 熱議:升班馬青年軍打天下,正視差距收獲成長,未來在明天
- 寧德時代入選美國《時代》周刊,麒麟電池和凝聚態(tài)電池被高度贊揚
- 加速推動材料產(chǎn)業(yè)實現(xiàn)根本性轉(zhuǎn)變|全球快播報
- 中國高鐵首次出海!印尼雅萬高鐵達到時速350公里 三個月免費...
- 天天最新:世貿(mào)組織總干事拉:全球割裂、貿(mào)易增長下滑、全球...
- 57186萬元!茂名這里約224.9畝地塊掛牌出讓,須配建九年制學...
- 家長如何正確看待孩子的“馬虎”?
- 熱頭條丨新金路受行業(yè)周期波動影響單季虧2428萬 終止重...
- 研究生錄取通知書丟失 蕪湖火車站民警快速找回|環(huán)球快播報
- 鼎鎵半導體攜國內(nèi)首張6英寸高功率深紫外LED外延片亮相第九屆...
- 用戶用iPhone充電被嚴重電傷,蘋果客服回應(yīng)讓人失望透頂!-環(huán)...
- “客戶盈利比”納入銷售考核 能否破解基民痛點?|每日熱門
今日要聞
- 家長如何正確看待孩子的“馬虎”?
- 美白人婦女不滿鄰居孩子玩耍 隔門射殺黑人母親 僅被控過失殺人-全球熱議
- 想出爆款文創(chuàng)產(chǎn)品?這些需要了解-全球報道
- 每日訊息!神州高鐵激進擴張三年累虧31億 16億投資款恐難收回負債率逾60%
- 君圣泰攜對賭協(xié)議赴港IPO:兩年虧損超4億元 5款藥物在研均未商業(yè)化
- A股下跌門戶洞開? 分析人士:短期趨勢不容樂觀
- 加速推動材料產(chǎn)業(yè)實現(xiàn)根本性轉(zhuǎn)變|全球快播報
- 盤中異動 | 國泰中證滬港深動漫游戲ETF漲2.17%|環(huán)球時訊
- 多少分可以上湖南科技大學、南華大學、湖南工商大學?
- 成都翡玥蘭庭怎么預(yù)約看房?|環(huán)球新要聞