K8S探针介绍

Kubernetes(K8S)探针(Probe)是一种机制,用于在 Pod 内部周期性地执行某些检查,以确保应用程序的可用性和健康状况。探针帮助 Kubernetes 决定如何管理你的容器,例如何时重新启动容器,何时将服务请求路由到相应 Pod,等等。Kubernetes 提供了三种类型的探针:livenessProbe readinessProbe和 startupProbe。它们各自有不同的用途和配置选项。

1. livenessProbe (存活探针)

用途:

1
livenessProbe

检查容器是否仍然存活。如果探针失败,Kubernetes 将重新启动容器。这对于长时间运行的应用程序非常有用,可以确保它们在出现死锁或其他无法恢复的问题时重新启动。

典型配置:


1
2
3
4
5
6
livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 3
  periodSeconds: 3

2. readinessProbe (就绪探针)

用途:

1
readinessProbe

检查容器是否已准备好接收流量。如果探针失败,Kubernetes 将从服务端点中移除该容器。这对于确保服务只处理来自已准备好接收请求的 Pod 的流量非常有用。

典型配置:


1
2
3
4
5
readinessProbe:
  tcpSocket:
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 5

3. startupProbe (启动探针)

用途:

1
startupProbe

用于容器的启动检查,特别适用于那些启动时间较长的应用程序。在

1
startupProbe

成功之前,

1
livenessProbe

1
readinessProbe

都不会被执行。如果

1
startupProbe

失败,容器将会被重新启动。

典型配置:


1
2
3
4
5
6
7
8
startupProbe:
  exec:
    command:
    - echo
    - "The application has started"
  initialDelaySeconds: 10
  periodSeconds: 10
  failureThreshold: 30

探针的配置方法

1. HTTP 探针 (httpGet)
探针通过 HTTP GET 请求来访问容器内部的特定路径。如果返回状态码在 200 到 399 之间,则认为探针成功。


1
2
3
4
5
6
httpGet:
  path: /healthz
  port: 8080
  httpHeaders:
  - name: Custom-Header
    value: Awesome

2. TCP 探针 (tcpSocket)
探针通过 TCP 连接到指定的端口。如果连接成功,则认为探针成功。


1
2
tcpSocket:
  port: 8080

3. 命令执行探针 (exec)
探针执行指定的命令,如果返回状态码是 0,则认为探针成功。


1
2
3
4
exec:
  command:
  - cat
  - /tmp/healthy

共同配置参数

  • initialDelaySeconds: 第一次探测之前的延迟时间(秒)。
  • periodSeconds: 探测之间的时间间隔(秒)。
  • timeoutSeconds: 探测的超时时间(秒)。
  • successThreshold: 成功的累积次数。在某些情况下,探针需要多次连续成功才能认为是健康状态。
  • failureThreshold: 失败的累积次数。在容器被重新启动或从服务端点移除之前,探针允许的最大连续失败次数。

通过配置这些探针,可以使 Kubernetes 更加智能地管理你的应用程序,提供高可用性和自动恢复能力。

阅读剩余
THE END