k8s的pod檢測

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方法更多一點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章