k8s-探针

在Kubernetes中,有三种类型的探针(Probes)用于检查容器的健康状况和确定是否应该将请求路由到容器。这些探针可以配置在 Pod 的规范中。

 

存活探针(Liveness Probe)

存活探针用于确定容器是否处于运行状态。如果存活探针失败(返回失败状态码或超时),Kubernetes会认为容器不健康,并会重启容器。这可以用于检测应用程序内部错误或死锁情况。

livenessProbe:
  httpGet:
    path: /health
    port: 8080
  initialDelaySeconds: 15
  periodSeconds: 10

上述示例配置了一个 HTTP GET 请求的存活探针。它将在容器启动后等待 15 秒后开始执行,并且每 10 秒执行一次。探针会发送一个 HTTP GET 请求到容器的 /health 路径,并使用端口号 8080

就绪探针(Readiness Probe)

就绪探针用于确定容器是否准备好接受流量。如果就绪探针失败,Kubernetes 会将容器从服务的负载均衡中剔除,直到探针成功。这可以用于确保应用程序在启动后完成必要的初始化或数据加载。

readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 3

上述示例配置了一个 HTTP GET 请求的就绪探针。它将在容器启动后等待 5 秒后开始执行,并且每 3 秒执行一次。探针会发送一个 HTTP GET 请求到容器的 /ready 路径,并使用端口号 8080。

启动探针(Startup Probe)

这个 1.16 版本增加的,启动探针用于确定容器是否已经启动并且准备好接受流量。与存活探针和就绪探针不同,启动探针在容器的初始启动阶段使用,并且仅会运行一次。启动探针成功后,就绪探针和存活探针才会启动。

startupProbe:
  exec:
    command:
    - cat
    - /tmp/initialized
  initialDelaySeconds: 10
  periodSeconds: 5
  failureThreshold: 30

上述示例配置了一个执行命令的启动探针。它将在容器启动后等待 10秒 后开始执行,并且每 5 秒执行一次。探针会执行命令 cat /tmp/initialized,如果命令成功执行,表示容器已经初始化完成

三种探测方法

ExecAction

在容器中执行指定的命令,如果执行成功,退出码为 0 则探测成功。

HTTPGetAction

通过容器的 IP 地址、端口号及路径调用 HTTP Get 方法,如果响应的状态码大于等于 - 200 且小于 400,则认为容器 健康。

TCPSocketAction

通过容器的 IP 地址和端口号执行 TCP 检 查,如果能够建立 TCP 连接,则表明容器健康。

探针属性

  • initialDelaySeconds:容器启动后要等待多少秒后就探针开始工作,单位“秒”,默认是 0 秒,最小值是 0
  • periodSeconds:执行探测的时间间隔(单位是秒),默认为 10s,单位“秒”,最小值是 1
  • timeoutSeconds:探针执行检测请求后,等待响应的超时时间,默认为 1s,单位“秒”,最小值是 1
  • successThreshold:探针检测失败后认为成功的最小连接成功次数,默认为 1s,在 Liveness 探针中必须为 1s,最小值为 1s。
  • failureThreshold:探测失败的重试次数,重试一定次数后将认为失败,在 readiness 探针中,Pod 会被标记为未就绪,默认为 3s,最小值为 1s

使用例子

posted @ 2023-10-11 13:49  意犹未尽  阅读(158)  评论(0编辑  收藏  举报