pod檢測
對於Pod的健康狀態檢測,kubernetes提供了兩類探針(Probe)三種方法來執行對Pod的健康狀態檢測
LivenessProbe探針:
用於判斷容器是否存活,即Pod是否爲running狀態,如果LivenessProbe探針探測到容器不健康,則kubelet將kill掉容器,並根據容器的重啓策略是否重啓,如果一個容器不包含LivenessProbe探針,則Kubelet認爲容器的LivenessProbe探針的返回值永遠成功
代碼如下:
apiVersion: v1
kind: Pod
metadata:
name: httpget
spec:
containers:
- name: nginx
image: 10.0.0.11:5000/nginx:1.13
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /index.html
port: 80
initialDelaySeconds: 3
periodSeconds: 3
ReadinessProbe探針:
用於判斷容器是否啓動完成,即容器的Ready是否爲True,可以接收請求,如果ReadinessProbe探測失敗,則容器的Ready將爲False,控制器將此Pod的Endpoint從對應的service的Endpoint列表中移除,從此不再將任何請求調度此Pod上,直到下次探測成功.
apiVersion: v1
kind: ReplicationController
metadata:
name: readiness
spec:
replicas: 2
selector:
app: readiness
template:
metadata:
labels:
app: readiness
spec:
containers:
- name: readiness
image: 10.0.0.11:5000/nginx:1.13
ports:
- containerPort: 80
readinessProbe:
httpGet:
path: /zhiming.html
port: 80
initialDelaySeconds: 3
periodSeconds: 3
選擇一個pod在html下創建zhiming.html
就會起來,另一個因爲本來html下沒有zhiming,html所以起不來
每類探針都支持三種探測方法:
exec:通過執行命令來檢查服務是否正常,針對複雜檢測或無HTTP接口的服務,命令返回值爲0則表示容器健康。
httpGet:通過發送http請求檢查服務是否正常,返回200-399狀態碼則表明容器健康。
tcpSocket:通過容器的IP和Port執行TCP檢查,如果能夠建立TCP連接,則表明容器健康。
通常使用httpGet方法更多一點