Pod 的健康检查是 Kubernetes 中一种用于监控和维护容器状态的机制,可以确保容器在运行期间保持健康状态。Kubernetes 提供了两种类型的健康检查:Liveness 探针和 Readiness 探针。
常见的 Liveness 探针实现方式包括发送 HTTP 请求、执行命令或检查 TCP 端口。例如,可以通过发送 HTTP GET 请求到容器的 /health
路径来检查容器的健康状态。
常见的 Readiness 探针实现方式包括发送 HTTP 请求、执行命令或检查 TCP 端口。例如,可以通过发送 HTTP GET 请求到容器的 /ready
路径来检查容器是否准备好接收请求。
在 Pod 的定义文件中,可以使用 livenessProbe
和 readinessProbe
字段来配置相应的探针。这些字段包含了探针的类型、路径、端口和探测频率等参数。
以下示例 定义了一个基于 HTTP 接口的 Liveness 探针和一个基于 TCP 端口的 Readiness 探针:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: my-image
ports:
- containerPort: 8080
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
上述示例中,容器的 Liveness 探针通过发送 HTTP GET 请求到 /health
路径来检查容器的健康状态。而容器的 Readiness 探针通过检查容器的 8080 端口是否处于打开状态来判断容器是否准备好接收流量。
探针有多种实现方式,Kubernetes 支持以下三种类型的探针实现方式:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: my-image
livenessProbe:
exec:
command:
- cat
- /tmp/health
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 1
配置中的 initialDelaySeconds 字段表示容器启动后等待多少秒开始进行首次探测,而 periodSeconds 字段表示每隔多少秒进行一次探测,timeoutSeconds表示健康检查发送请求后等待响应的超时时间。当超时发生时,kubelet会认为容器已经无法提供服务,将会重启该容器,上面三个属性单位都为s
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 10