Kubernetes中的就绪探针(readiness probe)是一种用于检查应用程序是否已准备好接收流量的机制。就绪探针可以帮助Kubernetes确保应用程序只有在准备好接收流量时才会被暴露给外部服务。
工作原理
就绪探针是通过向容器发送HTTP请求或TCP套接字连接来检查容器是否已准备好接收流量。当就绪探针返回成功响应(HTTP状态码为200-399)或TCP连接成功时,Kubernetes认为该容器已准备好接收流量。如果就绪探针返回失败响应(HTTP状态码为400或以上)或TCP连接失败,则Kubernetes认为该容器尚未准备好接收流量。
就绪探针可以与存活探针(liveness probe)配合使用,存活探针用于检查容器是否存活。如果存活探针检测到容器不存活,则Kubernetes将尝试重新启动该容器。如果就绪探针检测到容器不准备好接收流量,则Kubernetes将不会将该容器暴露给外部服务。
使用方法
就绪探针可以通过PodSpec中的readinessProbe字段进行配置。readinessProbe字段可以包含以下三个属性:
- exec:执行一条命令来检查容器是否已准备好接收流量。命令的返回值应该是0表示容器已准备好接收流量,非0表示容器尚未准备好接收流量。
- httpGet:向容器发送HTTP GET请求来检查容器是否已准备好接收流量。如果响应状态码为200-399,则认为容器已准备好接收流量,否则认为容器尚未准备好接收流量。
- tcpSocket:向容器发送TCP连接请求来检查容器是否已准备好接收流量。如果连接成功,则认为容器已准备好接收流量,否则认为容器尚未准备好接收流量。
下面是一个使用就绪探针的PodSpec示例:
代码语言:javascript复制apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
ports:
- containerPort: 80
readinessProbe:
httpGet:
path: /
port: 80
上面的示例中,就绪探针使用httpGet方法,发送HTTP GET请求到容器的80端口。如果响应状态码为200-399,则认为容器已准备好接收流量。