Kubernetes详解(十七)——Pod存活性探针应用实战

今天继续给大家介绍Linux运维相关知识,本文主要内容是Pod存活性探针应用实战。
在上文Kubernetes详解(十六)——Pod容器探测中,我们讲解了Pod容器的探针。今天,我们就来进行以下Pod容器的探针实战。

一、EXEC探针实战

首先,我们进行EXEC的探针实战,创建liveness-probe.yaml的资源配置清单,并写入如下内容:

apiVersion: v1
kind: Pod
metadata:
  name: liveness-probe
  namespace: default
  labels:
    probe: liveness
spec:
  containers:
  - name: liveness-probe-container
    image: busybox
    imagePullPolicy: IfNotPresent
    command: ["/bin/sh","-c","touch /tmp/healthy;sleep 30;rm -rf /tmp/healthy","sleep 600"]
    livenessProbe:
      exec:
        command: ["test","-e","/tmp/healthy"]
      initialDelaySeconds: 2
      periodSeconds: 5

完成后的资源配置清单文件如下所示:
在这里插入图片描述
在上述配置中,我们使用了命令的存活性探针,该探针会不断探测/tmp/healthy文件的存在性,如果该文件不存在,探针就会探测处异常。根据我们镜像的command的配置,容器在启动后,运行30秒就会删除该文件,因此该Pod的运行必然会引发探针异常。我们只需要观察探针异常后是否有Pod容器的重启,就可以判定探针是否工作正常。
然后,我们运行该资源清单配置文件,创建Pod容器,执行命令:

kubectl create -f liveness-probe.yaml

Pod容器运行后如下所示:
在这里插入图片描述
从上图中可以看出,我们的Pod容器运行成功。接下来,我们等待一段时间,来测试一下探针的作用。
等待一段时间后,Pod容器结果如下:
在这里插入图片描述
在上图中可以看出,在pod容器的运行中,随着command命令的作用,探针探测到容器异常,因此Kubernetes会杀死容器并重启。我们的命令探针配置成功!

二、HTTP探针实战

接下来,我们进行HTTP的探针实战,创建http-probe.yaml的资源配置清单,并写入如下内容:

apiVersion: v1
kind: Pod
metadata:
  name: http-probe
  namespace: default
  labels:
    probe: http
spec:
  containers:
  - name: http-probe
    image: nginx:1.12
    imagePullPolicy: IfNotPresent
    ports:
    - name: http
      containerPort: 80
    lifecycle:
      postStart:
        exec:
          command: ["/bin/bash","-c","echo Http-Probe > /usr/share/nginx/html/ishealth.html"]
    livenessProbe:
      httpGet:
        path: /ishealth.html
        port: http
        scheme: HTTP

完成后的资源配置清单文件如下所示:
在这里插入图片描述
在上述配置中,我们定义了一个HTTP的探针,该探针会不断探测网站根目录下/ishealth.html文件(该文件由容器中的command命令创建)的存在性,如果该文件不存在,探针就会探测到异常。
我们运行该资源清单配置文件,创建Pod容器,执行命令:

kubectl create -f http-probe.yaml

该容器运行后,我们进入该容器,删除ishealth.html的文件,观察容器状态,结果如下所示:
在这里插入图片描述
可以看出,当我们删除容器后,由于探针探测到异常,引发容器的重启。我们的HTTP探针成功!

三、TCP探针实战

最后,我们进行TCP的探针实战,创建tcp-probe.yaml的资源配置清单,并写入如下内容:

apiVersion: v1
kind: Pod
metadata:
  name: tcp-probe
  namespace: default
  labels:
    probe: tcp
spec:
  containers:
  - name: tcp-rpobe
    image: nginx:1.12
    ports:
    - name: http
      containerPort: 80
    livenessProbe:
      tcpSocket:
        port: http

完成后的资源配置清单文件如下所示:
在这里插入图片描述
在上述配置中,我们的探针会不断探测容器的80端口,如果80端口不通,则探针会探测到异常。
我们运行该资源清单配置文件,创建Pod容器,执行命令:

kubectl create -f tcp-probe.yaml

启动容器。
容器启动后,我们可以执行命令:

kubectl describe pods/tcp-probe

来查看该Pod的TCP探针设置,结果如下所示:
在这里插入图片描述
从上图中,也可以看出我们配置的TCP探针的内容。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

猜你喜欢

转载自blog.csdn.net/weixin_40228200/article/details/124286729
今日推荐