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 @   IT运维成长笔记  阅读(467)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示