摘要:存活探针livenessProbe:kubernetes通过添加存活探针,解决虽然容器运行,但是服务无法访问的问题。
kubernetes的探测方式分成:1.启动探测startup Probe 2. 就绪探针 readiness Probe 3.存活探针 liveness Probe。
存活探针livenessProbe:kubernetes通过添加存活探针,解决虽然容器运行,但是服务无法访问的问题。
选项说明:
initialdelayseconds:容器启动后要等待多少秒后探针开始工作,单位是秒。默认值是0秒,最小值是0。
periodSeconds:执行探测的时间间隔(单位是秒,默认是10s,单位是秒,最小值是1。
timeoutSeconds:探针执行检测请求后,等待响应的超时时间。默认为1s,单位是秒,最小值为1。TCP访问、脚本超时、HTTP的访问,会有一个超时时间。所有的探测命令、执行的探测脚本,必须它所消耗资源的量级足够小,才不会影响当前的真正的应用。
successThreshold:探针检测失败后认为成功的最小连接成功次数。默认为1,必须为1才能激活和启动,最小值为1。
failureThreshold:探测失败的重试次数,重试一定次数后将认为失败,默认值是3,最小值是1。
存活探测,如果pod内不指定存活探测,可能会发生容器运行但是无法提供服务的情况。
我们需要定义存活探测LivenessProbe,以此去保证只要运行就存活。如果存活探测,探测的是成功的,那么就静默。
如果存活探测livenessProbe探测失败,我们会根据当前的重启策略对它进行重启。虽然说是重启,实际上是进行重建。会创建一个新的对应容器,以此取代容器。默认的重启策略可以通过命令查看:
kubectl get pod $pod_name -o yaml
默认的重启策略是Always。
restartPolicy的重启策略有三种:
①:Always:当容器终止时,无论原因如何,Kubernetes都会自动重启这个容器。
②:OnFailure:仅当容器以非零退出代码终止时,kubernetes才会重启这个容器。如果容器正常退出,退出码为0,那么不会重启。
③:Never:一旦容器终止,无论是因为错误还是正常退出,kubernetes都不会重启这个容器。
restartPolicy重启策略是Always,表示不管容器终止时是以0的返回码终止,还是以非零的返回码终止,都会进行重建,或者叫重启的动作。Never是永不重启,OnFailure是失败的时候才重启。
存活探测livenessProbe检测结果是未知的情况,那么就保持静默。虽然说容器启动或者创建容器的代价比较低,但是也是有代价的。所以我们不知道容器的存活探测的结果下,没有必要终止掉容器。
kubernetes进入容器:
kubectl exec -it(交互TTY接口) $pod_name -c -n $namespace -- /bin/bash
容器没有通过存活探测(livenessProbe),它既存在着,又无法给客户提供正常访问,所以9我们要终止掉容器。但是如果重启策略restartPolicy是Always总是,那么就会重建新的容器取代没有通过存活探测的容器。
查看pod的详细信息:
kubectl get pod -n $namespace -o wide
docker ps查询结果的第二列是镜像ID。
查看容器的镜像:
docker images | grep $image_ID
kubernetes 集群中pod的命名格式:
k8s_容器名_pod名_命名空间_MD5值_重启序号(重启序号从0开始)
如果容器的重启序号是1,代表这是第二个容器。
当容器出现损坏的时候,我们就会用重建的容器替换掉损坏的部分,使容器达到自愈的目的。
基于TCP Check(TCP Socket)的探测方式,是作为存活探测livenessProbe的一种补充。
通过设置存活探测livenessProbe,我们一定能保证pod只要运行,那么它一定是可以提供给客户正常访问的状态,除非存活探测liveness Probe设置的有问题。
五星红旗
鼓励的话语:未来没有稳定的工作,只有稳定的能力。未来只有一种稳定:是你到哪里都有饭吃。有本事的人到哪里都有饭吃,即使身背巨债,依旧可以东山再起!
来源:白领小黑黑i