【k8s的三种探针】

一、探针类型

作用:容器内应用的监测机制,根据不同的探针来判断容器应用当前的状态。

 k8s 有三种类型的探针:StartupProbe(启动探针)、LivenessProbe(存活探针)、ReadinessProbe(就绪探针)。它们可以同时存在,但如果有StartupProbe就会先执行该探针。

探针的基本参数配置:

...
spec: # 期望 Pod 按照这里面的描述进行创建
  containers: # 对于 Pod 中的容器描述
    ...
    livenessProbe: # 探针类型
      initialDelaySeconds: 60 # 初始化时间;n 秒后才会执行探针
      httpGet: # 探测方式
    	path: /api/startup
    	port: 80
      timeoutSeconds: 2 # 超时时间
      periodSeconds: 5 # 监测间隔时间
      successThreshold: 1 # 检查 n 次成功就表示成功
      failureThreshold: 2 # 监测失败 n 次就表示失败
    readinessProbe: # 其他探针
      initialDelaySeconds: 60
      ...

1、StartupProbe(探测成功后启用其他探针)

 k8s 1.16 版本新增的探针,用于判断应用程序是否已经启动了。该探针只会在启动的时候成功的运行一次

当配置了 startupProbe 后,会先禁用其他探针,直到 startupProbe 成功后,其他探针才会继续。防止 LivenessProbe 无限重启应用。另外容器没有真正启用之前,ReadinessProbe 也没必要去检测。

**作用:**由于有时候不能准确预估应用一定是多长时间启动成功,因此配置另外两种方式不方便配置初始化时长来检测;而配置了 statupProbe 后,只有在容器启动成功了,才会执行另外两种探针。

startupProbe:
  httpGet:
    path: /api/startup
    port: 80
  ...

2、LivenessProbe(探测失败后重启)

 用于定期探测容器中的应用是否运行,如果探测失败,kubelet 会根据配置的重启策略进行重启;若没有配置,默认就认为容器启动成功,不会执行重启策略。

livenessProbe:
  httpGet:
    path: /health
    port: 8080
    scheme: HTTP
  initialDelaySeconds: 60
  periodSeconds: 10
  successThreshold: 1
  timeoutSeconds: 5
  failureThreshold: 3

 如果超时时间为5秒,而实际启功时间为6秒。LivenessProbe 会在5秒时就判断失败,然后去重启应用,之后会一直重复此判断并重启。为了防止这种情况的出现,需要配合使用 StartupProbe 。

3、ReadinessProbe(探测成功后开放外部访问)

 用于定期探测容器内的程序是否就绪,它的返回值如果返回 success,那么就认为该容器已经完全启动,并且该容器是可以接收外部流量的。

readinessProbe:
  httpGet:
    path: /ready
    port: 8181
    scheme: HTTP
  periodSeconds: 10
  successThreshold: 1
  timeoutSeconds: 1
  failureThreshold: 3

二、探测方式

1、ExecAction(命令)

 命令方式探测:在容器内部执行一个命令,如果返回值为 0,则任务容器时健康的。

livenessProbe:
  exec:
    command:
      \- cat
      \- /health

2、TCPSocketAction(端口)

 TCP访问端口方式探测:通过 tcp 连接监测容器内端口是否开放,如果开放则证明该容器健康。

livenessProbe:
  tcpSocket:
    port: 80

3、HTTPGetAction(get请求)

 HTTP请求方式探测:生产环境用的较多的方式,发送 HTTP 请求到容器内的应用程序,如果接口返回的状态码在 200~400 之间,则认为容器健康。

livenessProbe:
  failureThreshold: 5
  httpGet:
    path: /health
    port: 8080
    scheme: HTTP
    httpHeaders:
      \- name: xxx
      value: xxx

  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
k8s存活探针和就绪探针是用来检测容器的状态和可用性的。存活探针(Liveliness Probe)用于判断容器是否处于正在运行状态,如果容器出现故障或死锁,k8s会自动将其下线并重新启动。而就绪探针(Readiness Probe)用于判断服务是否已经准备好接收流量,如果服务还未完全启动或出现异常情况,k8s会将其从服务的负载均衡器中移除,不再接受或响应任何请求。 存活探针可以通过执行容器内部的shell命令、检查容器的TCP连接或发送HTTP请求来进行健康检查,如果探测失败,k8s会将故障的容器kill掉,并根据设置的重启策略进行重启。而就绪探针则通过HTTP请求来检查服务是否准备就绪,如果就绪探测失败,k8s会将服务从负载均衡器中移除,直到服务完全就绪后再将其添加回负载均衡器。 在使用存活探针和就绪探针时,建议将检查服务的时间短于检查容器的时间,以实现先下线再重启的策略。这样,在故障发生后,服务会先被下线,如果一段时间后服务无法自动恢复,k8s会根据重启策略进行重启。通过使用这两种探针,可以确保服务的可用性和自动恢复能力。 总结来说,存活探针用于判断容器是否处于运行状态,并在容器故障时重新启动,而就绪探针用于判断服务是否已经准备好接收流量,并将未就绪的服务下线,直到服务完全就绪后再上线。这两种探针是确保k8s中应用的稳定性和可用性的重要工具。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [k8s的就绪探针和存活探针](https://blog.csdn.net/qingqingxiangyang/article/details/118026170)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值