当前位置:   article > 正文

k8s 存活探针LivenessProbe

livenessprobe

目录

为什么需要存活探针

k8s容器探测机制

http get

tcp socket

exec

给pod添加存活探针:livenessProbe

查看pod存活探针信息

livenessProbe描述 

添加livenessProbe参数


为什么需要存活探针

如果没有探针,k8s无法知道应用是否还活着,只要进程还在运行,k8s则认为容器是健康的。

k8s容器探测机制

http get

对容器的ip地址(指定的端口和路径)执行http get请求

如果探测器收到响应,并且响应码是2xx, 3xx,则认为探测成功。如果服务器没有响应或者返回错误响应则说明探测失败,容器将重启。

tcp socket

探针与容器指定端口建立tcp连接,如果连接建立则探测成功,否则探测失败容器重启。

exec

在容器内执行任意命令,并检查命令退出状态码,如果状态码为0,则探测成功,否则探测失败容器重启。

给pod添加存活探针:livenessProbe

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. namespace: ctg
  5. name: kubia-unhealthy
  6. labels:
  7. name: kubia-unhealthy
  8. spec:
  9. containers:
  10. - image: luksa/kubia-unhealthy
  11. name: kubia
  12. livenessProbe:
  13. httpGet:
  14. path: /
  15. port: 8080

查看pod存活探针信息

通过describe可以查看当前pod详情。

里面有关于pod存活探针的信息:

livenessProbe描述 

  1. Liveness: http-get http://:8080/ delay=0s timeout=1s period=10s #success=1 #failure=3
  2. delays: 延迟,delays=0s,表示在容器启动后立即开始探测
  3. timeout: 超时,timeout=1s,表示容器必须在1s内进行响应,否则这次探测记作失败
  4. period: 周期,period=10s,表示每10s探测一次容器
  5. failure: 失败,failure=3,连续3次失败后重启容器
  6. 以上存活探针表示:容器启动后立即进行探测,如果1s内容器没有给出回应则记作探测失败。每次间隔10s进行一次探测,在探测连续失败3次后重启容器。

添加livenessProbe参数

initialDelaySeconds。如果没有设置,探针将在启动时立即探测,通常会导致探测失败,因为程序还没准备好开始接收请求。

这种情况很常见,看到容器在重启,使用describe会看到容器退出码为137或者143

Killing container with id docker://kubia:Container failed liveness probe.. Container will be killed and recreated.

如果在pod启动时遇到这种情况,一般是没有设置 initialDelaySeconds导致的

  1. # 设置初始化延迟initialDelaySeconds。
  2. livenessProbe:
  3. httpGet:
  4. path: /
  5. port: 8080
  6. initialDelaySeconds: 15 # 在k8s第一次探测前等待15s.

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/247246
推荐阅读
相关标签
  

闽ICP备14008679号