kubernetes livenessProbe探針的簡單使用

  • 記錄一個簡單的livenessProb的使用

建立livenessProbe探針

具體的liveness-httpget.yaml文件以下:html

apiVersion: v1
kind: Pod
metadata:
  name: liveness-httpget-pod
  namespace: default
spec:
  containers:
    - name: liveness-exec-container
      image: ikubernetes/myapp:v1
      imagePullPolicy: IfNotPresent
      ports:
        - name: http
          containerPort: 80
      livenessProbe:
        httpGet:
          port: http
          path: /index.html
        initialDelaySeconds: 1
        periodSeconds: 3
[root@master manifests]# cat liveness-httpget.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: liveness-httpget-pod
  namespace: default
spec:
  containers:
    - name: liveness-exec-container
      image: ikubernetes/myapp:v1
      imagePullPolicy: IfNotPresent
      ports:
        - name: http
          containerPort: 80
      livenessProbe:
        httpGet:
          port: http
          path: /index.html
        initialDelaySeconds: 1
        periodSeconds: 3

建立該podnode

[root@master manifests]# kubectl create -f liveness-httpget.yaml 
pod/liveness-httpget-pod created

查看當前pod的狀態nginx

[root@master manifests]# kubectl describe pod liveness-httpget-pod
Name:               liveness-httpget-pod
Namespace:          default
Priority:           0
PriorityClassName:  <none>
Node:               node02/192.168.18.130
Start Time:         Fri, 17 Aug 2018 18:24:26 +0800
Labels:             <none>
Annotations:        <none>
Status:             Running
IP:                 10.244.2.40
Containers:
  liveness-exec-container:
    Container ID:   docker://b00bc09eac7c4dcadb482dd9795a9f7e6d9b68ca63e75384da18feb0ef7bdc6d
    Image:          ikubernetes/myapp:v1
    Image ID:       docker-pullable://ikubernetes/myapp@sha256:9c3dc30b5219788b2b8a4b065f548b922a34479577befb54b03330999d30d513
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Fri, 17 Aug 2018 18:24:27 +0800
    Ready:          True
    Restart Count:  0
    Liveness:       http-get http://:http/index.html delay=1s timeout=1s period=3s #success=1 #failure=3
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-qcfxf (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  default-token-qcfxf:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-qcfxf
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Pulled     37s   kubelet, node02    Container image "ikubernetes/myapp:v1" already present on machine
  Normal  Created    37s   kubelet, node02    Created container
  Normal  Started    37s   kubelet, node02    Started container
  Normal  Scheduled  32s   default-scheduler  Successfully assigned default/liveness-httpget-pod to node02

測試將容器內的index.html刪除掉

登錄容器

使用命令 kubectl exec liveness-httpget-pod -c liveness-exec-container -it -- /bin/sh 登錄容器docker

[root@master manifests]# kubectl exec liveness-httpget-pod -c liveness-exec-container -it  -- /bin/sh
/ # ls
bin    dev    etc    home   lib    media  mnt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # mv /usr/share/nginx/html/index.html index.html
/ # command terminated with exit code 137

能夠看到,當咱們把index.html移走後,這個容器立馬就退出了api

此時,查看pod的信息app

[root@master manifests]# kubectl describe pod liveness-httpget-pod
Name:               liveness-httpget-pod
Namespace:          default
Priority:           0
PriorityClassName:  <none>
Node:               node02/192.168.18.130
Start Time:         Fri, 17 Aug 2018 18:24:26 +0800
Labels:             <none>
Annotations:        <none>
Status:             Running
IP:                 10.244.2.40
Containers:
  liveness-exec-container:
    Container ID:   docker://ac663b9e29c2cbc9c1d0283f1609914be69964149247945266ddcc8b33dde12f
    Image:          ikubernetes/myapp:v1
    Image ID:       docker-pullable://ikubernetes/myapp@sha256:9c3dc30b5219788b2b8a4b065f548b922a34479577befb54b03330999d30d513
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Fri, 17 Aug 2018 18:48:07 +0800
    Last State:     Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Fri, 17 Aug 2018 18:24:27 +0800
      Finished:     Fri, 17 Aug 2018 18:48:06 +0800
    Ready:          True
    Restart Count:  1
    Liveness:       http-get http://:http/index.html delay=1s timeout=1s period=3s #success=1 #failure=3
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-qcfxf (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  default-token-qcfxf:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-qcfxf
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason     Age               From               Message
  ----     ------     ----              ----               -------
  Normal   Scheduled  24m               default-scheduler  Successfully assigned default/liveness-httpget-pod to node02
  Warning  Unhealthy  1m (x3 over 1m)   kubelet, node02    Liveness probe failed: HTTP probe failed with statuscode: 404
  Normal   Pulled     1m (x2 over 24m)  kubelet, node02    Container image "ikubernetes/myapp:v1" already present on machine
  Normal   Created    1m (x2 over 24m)  kubelet, node02    Created container
  Normal   Started    1m (x2 over 24m)  kubelet, node02    Started container
  Normal   Killing    1m                kubelet, node02    Killing container with id docker://liveness-exec-container:Container failed liveness probe.. Container will be killed and recreated.

看輸出,容器因爲健康檢查未經過,pod會被殺掉,並從新建立測試

[root@master manifests]# kubectl get pods
NAME                   READY     STATUS    RESTARTS   AGE
liveness-httpget-pod   1/1       Running   1          33m

restarts 爲 1spa

從新登錄容器查看

從新登錄容器,發現index.html又出現了,證實容器是被重拉了。3d

[root@master manifests]# kubectl exec liveness-httpget-pod -c liveness-exec-container -it  -- /bin/sh
/ # cat /usr/share/nginx/html/index.html 
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
相關文章
相關標籤/搜索