跳到主要内容

探针

2024年08月30日
柏拉文
越努力,越幸运

一、认识


Kubernetes 中,Pod 探针(Probe)是用于检查容器的健康状况和可用性的重要机制。探针可以确保容器正确启动、运行,并能响应请求。探针有三种类型,分别是 就绪探针(Readiness Probe存活探针(Liveness Probe启动探针(Startup Probe

二、就绪探针(Readiness Probe)


就绪探针(Readiness Probe 用于决定容器是否可以接受流量或请求。它的作用是在应用程序准备好处理请求之前,阻止 Kubernetes 将流量路由到该容器。如果探针失败,Kubernetes 将从服务端点中移除该 Pod

2.1 语法

Kubernetes 提供了三种执行探针的方式:

  • HTTP 探针Kubernetes 向容器内部暴露的 HTTP 端点发送请求,根据响应的状态码(如 200 表示成功)来判断健康状况。

  • TCP 探针Kubernetes 尝试通过 TCP 连接到容器的端口,如果连接成功则认为容器正常。

  • 命令探针Kubernetes 在容器中执行特定命令,根据命令的退出码(如 0 表示成功)来判断容器的状态。

一、HTTP 探针

apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
containers:
- name: my-app
image: my-app-image
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
  • readinessProbe: 检查 /ready 端点,探测容器是否准备好接收请求。

二、TCP 探针

三、命令探针

2.2 用法

2.3 场景

一、当应用启动较慢,且需要在启动后初始化资源时

三、存活探针(Liveness Probe)


存活探针(Liveness Probe 用于检查容器是否处于健康状态。如果存活探针失败,Kubernetes 会将容器重启。这对于那些可能在运行过程中出现崩溃或陷入死循环的应用非常有用。

3.1 语法

Kubernetes 提供了三种执行探针的方式:

  • HTTP 探针Kubernetes 向容器内部暴露的 HTTP 端点发送请求,根据响应的状态码(如 200 表示成功)来判断健康状况。

  • TCP 探针Kubernetes 尝试通过 TCP 连接到容器的端口,如果连接成功则认为容器正常。

  • 命令探针Kubernetes 在容器中执行特定命令,根据命令的退出码(如 0 表示成功)来判断容器的状态。

一、HTTP 探针

apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
containers:
- name: my-app
image: my-app-image
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
  • livenessProbe: 检查 /healthz 端点,探测容器是否健康,若失败则重启容器。

二、TCP 探针

三、命令探针

3.2 用法

3.3 场景

一、应用程序可能在运行一段时间后挂掉,Kubernetes 需要自动重启此类容器。

四、启动探针(Startup Probe)


启动探针(Startup Probe 专门用于检测容器的启动阶段是否完成。它帮助处理那些启动时间较长的应用程序,确保应用完全启动后再执行 LivenessReadiness 探针。

4.1 语法

Kubernetes 提供了三种执行探针的方式:

  • HTTP 探针Kubernetes 向容器内部暴露的 HTTP 端点发送请求,根据响应的状态码(如 200 表示成功)来判断健康状况。

  • TCP 探针Kubernetes 尝试通过 TCP 连接到容器的端口,如果连接成功则认为容器正常。

  • 命令探针Kubernetes 在容器中执行特定命令,根据命令的退出码(如 0 表示成功)来判断容器的状态。

一、HTTP 探针

二、TCP 探针

三、命令探针

4.2 用法

4.3 场景

一、应用程序启动时间非常长,使用 Liveness 探针可能导致过早重启容器。