探针有哪些?探测方法有哪些?
Kubernetes中的探针(Probes)用于检查Pod内的容器状态,以确保其正常运行。主要有三种类型的探针,每种探针都有不同的探测方法。下面详细介绍这三种探针及其探测方法。
1. Liveness Probe(活跃探针)
- 目的:判断容器是否仍在运行。如果探针失败,Kubernetes将重启该容器。
- 探测方法:
- HTTP GET:向指定的HTTP端点发送GET请求。
- TCP Socket:尝试连接到指定的端口,检查服务是否可用。
- Exec:在容器内执行指定命令,检查返回值。
2. Readiness Probe(就绪探针)
- 目的:判断容器是否准备好接收流量。如果探针失败,该Pod将不会接收流量,直到探针成功。
- 探测方法:
- HTTP GET:向指定的HTTP端点发送GET请求。
- TCP Socket:尝试连接到指定的端口。
- Exec:在容器内执行指定命令。
3. Startup Probe(启动探针)
- 目的:用于检测容器是否已经启动完成,尤其适用于启动时间较长的应用。如果探针失败,Kubernetes将重启该容器。此探针在容器启动时使用,一旦容器成功启动,Liveness Probe和Readiness Probe将接管。
- 探测方法:
- HTTP GET:向指定的HTTP端点发送GET请求。
- TCP Socket:尝试连接到指定的端口。
- Exec:在容器内执行指定命令。
配置示例
以下是一个包含三种探针的Pod配置示例:
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
containers:
- name: example-container
image: example-image
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
startupProbe:
exec:
command:
- cat
- /ready
initialDelaySeconds: 15
periodSeconds: 5
总结
Kubernetes的探针通过不同的方法(HTTP GET、TCP Socket、Exec)来检查容器的健康状况。Liveness Probe用于重启失败的容器,Readiness Probe用于控制流量的接收,而Startup Probe则用于判断容器的启动状态。合理配置探针可以有效提高应用的可靠性和可用性。