kubernetes基础知识之存活探测

360影视 2025-01-27 00:24 2

摘要:存活探针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

相关推荐