容器探測(cè)
容器探測(cè)用于檢測(cè)容器中的應(yīng)用實(shí)例是否正常工作,是保障業(yè)務(wù)可用性的一種傳統(tǒng)機(jī)制。如果經(jīng)過探測(cè),實(shí)例的狀態(tài)不符合預(yù)期,那么kubernetes就會(huì)把該問題實(shí)例" 摘除 "隆圆,不承擔(dān)業(yè)務(wù)流量。kubernetes提供了兩種探針來實(shí)現(xiàn)容器探測(cè)翔烁,分別是:
- liveness probes:存活性探針渺氧,用于檢測(cè)應(yīng)用實(shí)例當(dāng)前是否處于正常運(yùn)行狀態(tài),如果不是蹬屹,k8s會(huì)重啟容器
- readiness probes:就緒性探針侣背,用于檢測(cè)應(yīng)用實(shí)例當(dāng)前是否可以接收請(qǐng)求,如果不能慨默,k8s不會(huì)轉(zhuǎn)發(fā)流量
livenessProbe 決定是否重啟容器贩耐,readinessProbe 決定是否將請(qǐng)求轉(zhuǎn)發(fā)給容器。
上面兩種探針目前均支持三種探測(cè)方式:
-
Exec命令:在容器內(nèi)執(zhí)行一次命令厦取,如果命令執(zhí)行的退出碼為0潮太,則認(rèn)為程序正常,否則不正常
…… livenessProbe: exec: command: - cat - /tmp/healthy ……
-
TCPSocket:將會(huì)嘗試訪問一個(gè)用戶容器的端口虾攻,如果能夠建立這條連接消别,則認(rèn)為程序正常,否則不正常
…… livenessProbe: tcpSocket: port: 8080 ……
-
HTTPGet:調(diào)用容器內(nèi)Web應(yīng)用的URL台谢,如果返回的狀態(tài)碼在200和399之間寻狂,則認(rèn)為程序正常,否則不正常
…… livenessProbe: httpGet: path: / #URI地址 port: 80 #端口號(hào) host: 127.0.0.1 #主機(jī)地址 scheme: HTTP #支持的協(xié)議朋沮,http或者h(yuǎn)ttps ……