探针
一、认识
在 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
) 专门用于检测容器的启动阶段是否完成。它帮助处理那些启动时间较长的应用程序,确保应用完全启动后再执行 Liveness
和 Readiness
探针。
4.1 语法
Kubernetes
提供了三种执行探针的方式:
-
HTTP
探针:Kubernetes
向容器内部暴露的HTTP
端点发送请求,根据响应的状态码(如200
表示成功)来判断健康状况。 -
TCP
探针:Kubernetes
尝试通过TCP
连接到容器的端口,如果连接成功则认为容器正常。 -
命令探针:
Kubernetes
在容器中执行特定命令,根据命令的退出码(如0
表示成功)来判断容器的状态。
一、HTTP
探针
二、TCP
探针
三、命令探针
4.2 用法
4.3 场景
一、应用程序启动时间非常长,使用 Liveness
探针可能导致过早重启容器。