今天继续给大家介绍Linux运维相关知识,本文主要内容是Pod存活性探针应用实战。
在上文Kubernetes详解(十六)——Pod容器探测中,我们讲解了Pod容器的探针。今天,我们就来进行以下Pod容器的探针实战。
一、EXEC探针实战
首先,我们进行EXEC的探针实战,创建liveness-probe.yaml的资源配置清单,并写入如下内容:
apiVersion: v1kind: Podmetadata:name: liveness-probenamespace: defaultlabels:probe: livenessspec:containers:- name: liveness-probe-containerimage: busyboximagePullPolicy: IfNotPresentcommand: ["/bin/sh","-c","touch /tmp/healthy;sleep 30;rm -rf /tmp/healthy","sleep 600"]livenessProbe:exec:command: ["test","-e","/tmp/healthy"]initialDelaySeconds: 2periodSeconds: 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: v1kind: Podmetadata:name: http-probenamespace: defaultlabels:probe: httpspec:containers:- name: http-probeimage: nginx:1.12imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80lifecycle:postStart:exec:command: ["/bin/bash","-c","echo Http-Probe > /usr/share/nginx/html/ishealth.html"]livenessProbe:httpGet:path: /ishealth.htmlport: httpscheme: HTTP
完成后的资源配置清单文件如下所示:
在上述配置中,我们定义了一个HTTP的探针,该探针会不断探测网站根目录下/ishealth.html文件(该文件由容器中的command命令创建)的存在性,如果该文件不存在,探针就会探测到异常。
我们运行该资源清单配置文件,创建Pod容器,执行命令:
kubectl create -f http-probe.yaml
该容器运行后,我们进入该容器,删除ishealth.html的文件,观察容器状态,结果如下所示:
可以看出,当我们删除容器后,由于探针探测到异常,引发容器的重启。我们的HTTP探针成功!
三、TCP探针实战
最后,我们进行TCP的探针实战,创建tcp-probe.yaml的资源配置清单,并写入如下内容:
apiVersion: v1kind: Podmetadata:name: tcp-probenamespace: defaultlabels:probe: tcpspec:containers:- name: tcp-rpobeimage: nginx:1.12ports:- name: httpcontainerPort: 80livenessProbe:tcpSocket:port: http
完成后的资源配置清单文件如下所示:
在上述配置中,我们的探针会不断探测容器的80端口,如果80端口不通,则探针会探测到异常。
我们运行该资源清单配置文件,创建Pod容器,执行命令:
kubectl create -f tcp-probe.yaml
启动容器。
容器启动后,我们可以执行命令:
kubectl describe pods/tcp-probe
来查看该Pod的TCP探针设置,结果如下所示:
从上图中,也可以看出我们配置的TCP探针的内容。
原创不易,转载请说明出处:/weixin_40228200
如果觉得《Kubernetes详解(十七)——Pod存活性探针应用实战》对你有帮助,请点赞、收藏,并留下你的观点哦!