pod资源的健康检查-liveness探针的httpGet使用

使用liveness探针httpget方式检测pod健康,httpGet方式使用的最多

[root@k8s-master1 tanzhen]# cat nginx_pod_httpGet.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: httpget
  labels:
        app: my-dep
spec:
  containers:
    - name: nginx
      image: centos-nginx:1.23.0
      imagePullPolicy: Never
      ports:
        - containerPort: 80
      
      livenessProbe:
        httpGet:
          path: /index.html
          port: 80
        initialDelaySeconds: 5
        periodSeconds: 5
        timeoutSeconds: 3
        successThreshold: 1
        failureThreshold: 2

创建pod

[root@k8s-master1 tanzhen]# kubectl create -f nginx_pod_httpGet.yaml 
pod/httpget created

查询pod描述

由于检测的是Nginx80端口index.html页面,这个连接正常存在,所以状态一直是Normal

[root@k8s-master1 ~]# kubectl describe pod httpget
Name:         httpget
Namespace:    default
Priority:     0
Node:         k8s-node1/192.168.198.146
Start Time:   Tue, 23 Aug 2022 10:56:44 +0800
Labels:       app=my-dep
Annotations:  <none>
Status:       Running
IP:           10.244.1.53
IPs:
  IP:  10.244.1.53
Containers:
  nginx:
    Container ID:   docker://00e017fcb9763c113b39433f1e33516d25ed9426f85bca78e89f17c13a0c0282
    Image:          centos-nginx:1.23.0
    Image ID:       docker://sha256:704f81f69b5bf4f7b52006b1ebea4c4c25c92dd95994dacad66780ae82395607
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Tue, 23 Aug 2022 10:56:45 +0800
    Ready:          True
    Restart Count:  0
    Liveness:       http-get http://:80/index.html delay=5s timeout=3s period=5s #success=1 #failure=2
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-clqrl (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  default-token-clqrl:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-clqrl
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  6m34s  default-scheduler  Successfully assigned default/httpget to k8s-node1
  Normal  Pulled     6m32s  kubelet            Container image "centos-nginx:1.23.0" already present on machine
  Normal  Created    6m32s  kubelet            Created container nginx
  Normal  Started    6m32s  kubelet            Started container nginx

重新发布一个pod:httpget2,检测端口改成8080,测试检测结果

apiVersion: v1
kind: Pod
metadata:
  name: httpget2
  labels:
        app: my-dep
spec:
  containers:
    - name: nginx
      image: centos-nginx:1.23.0
      imagePullPolicy: Never
      ports:
        - containerPort: 80

      livenessProbe:
        httpGet:
          path: /index.html
          port: 8080
        initialDelaySeconds: 5
        periodSeconds: 5
        timeoutSeconds: 3
        successThreshold: 1
        failureThreshold: 2
[root@k8s-master1 tanzhen]# kubectl apply -f nginx_pod_httpGet.yaml 
pod/httpget2 created

 探针检测 Get "http://10.244.1.54:8080/index.html"失败,容器kill掉重启

Events:
  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  46s                default-scheduler  Successfully assigned default/httpget2 to k8s-node1
  Normal   Pulled     13s (x4 over 45s)  kubelet            Container image "centos-nginx:1.23.0" already present on machine
  Normal   Created    13s (x4 over 45s)  kubelet            Created container nginx
  Normal   Started    13s (x4 over 45s)  kubelet            Started container nginx
  Warning  Unhealthy  3s (x8 over 38s)   kubelet            Liveness probe failed: Get "http://10.244.1.54:8080/index.html": dial tcp 10.244.1.54:8080: connect: connection refused
  Normal   Killing    3s (x4 over 33s)   kubelet            Container nginx failed liveness probe, will be restarted
  Warning  BackOff    3s                 kubelet            Back-off restarting failed container

 httpget2  可以看到已经重启了6次

[root@k8s-master1 tangzheng]# kubectl get pod
NAME                       READY   STATUS    RESTARTS   AGE
httpget                    1/1     Running   0          28m
httpget2                   1/1     Running   6          3m8s

 

posted @ 2022-08-23 11:27  IT运维成长笔记  阅读(533)  评论(0)    收藏  举报