最新消息:

Kubernetes的健康检查liveness-readiness-startup探针

Linux ipcpu 105浏览 0评论

Kubernetes的健康检查liveness-readiness-startup探针.md

引入

在默认情况下,当 Pod 中的所有容器启动时,Kubernetes 开始向 Pod 发送流量,并在崩溃时重新启动容器。

但是如果Pod中进程启动需要一定的时间,比如springboot项目,容器启动成功后,springboot启动需要一些初始化工作,连接外部数据库,连接外部中间件等等,需要几秒,几十秒,甚至一分多钟才能启动。

Kubernetes 在设计上已经考虑到了这点,它可以通过容器探针来检查服务是否可用。

liveness probe(存活探针)

Kubelet使用liveness probe(存活探针)来确定何时重启容器。如果存活态探测失败,则 kubelet 会杀死容器, 并且容器将根据其重启策略决定是否重启。如果不提供存活探针, 则默认状态为 Success。

    spec:
      containers:
        - image: 'k8s.gcr.io/liveness'
          imagePullPolicy: IfNotPresent
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /healthz
              port: 8080
              scheme: HTTP
            initialDelaySeconds: 30
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1

periodSeconds 字段指定了 kubelet 每隔 10 秒执行一次存活探测。
timeoutSeconds字段指定了探测的超时时间是1秒。
failureThreshold字段指定了探测3次失败,才认为失败。
successThreshold字段指定了探测1次成功,就认为成功。
initialDelaySeconds 字段告诉 kubelet 在执行第一次探测前应该等待 30 秒,这个值一定要根据实际应用启动实际调整,设置过小有可能会引起Pod无限重启。

存活探针的主要用途是,将仍然处在运行状态但却无法正常提供服务的Pod进行重启,对于有bug的程序进行重启,尝试进行恢复。

readiness probe(就绪探针)

kubelet 使用readiness probe(就绪探针)来了解容器何时准备好开始接受流量。通过了就绪探针检查的Pod就可以处于Ready状态。如果不设置就绪态探针,则默认状态为 Success 通过。

就绪探针的一个用途是控制哪些 Pod 作为服务service的后端。当 Pod 未通过就绪探针检查时,它会从服务负载均衡器中删除。由于ingress依赖于service,所以使用了ingress的项目必须开启就绪探针;
就绪探针的另一个用途就是Rolling Updates(滚动发布),设置了就绪探针以后,Pod处于Ready状态,才会进行下一个滚动,否则只要Pod是Running状态(Ready状态会和Running状态一致)就会滚动。

readinessProbe:
  exec:
    command:
    - cat
    - /tmp/healthy
  initialDelaySeconds: 5
  periodSeconds: 5

startup probe(启动探针)

启动探针用来探测Pod内服务是否已经启动。如果提供了启动探针,则所有其他探针都会被 禁用,直到此探针成功为止。如果启动探测失败,kubelet 将杀死容器,而容器依其重启策略进行重启。 如果没有提供启动探测,则默认状态为 Success。

一般来讲,对于需要较长时间才能启动就绪的 Pod 而言,启动探针是有用的。 你不再需要配置一个较长的存活态探测时间间隔,只需要设置另一个独立的配置选定, 对启动期间的容器执行探测就可以了。

这个功能基本上和存活探针的initialDelaySeconds 作用类似。

参考资料

https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/

转载请注明:IPCPU-网络之路 » Kubernetes的健康检查liveness-readiness-startup探针

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址