一、概述
Kubernetes启动探针是一种机制,用于确保在Pod中的容器已经启动并准备好接受网络流量。它们通常与存活性探针一起使用,以确保容器在运行时不仅处于活动状态,而且已经完成了初始化并准备好接受流量。
二、启动探针类型
Kubernetes提供了两种类型的启动探针:HTTP和Exec。它们都允许在容器启动后立即执行命令或请求,并在容器已准备好接受流量时返回成功状态。下面是每种类型的详细信息和示例。
HTTP启动探针
HTTP启动探针使用HTTP GET请求检查应用程序是否已经启动并准备好接受流量。它需要指定一个HTTP路径,并且期望在启动后立即返回200响应代码。以下是一个使用HTTP启动探针的示例:
代码语言:javascript复制apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: my-image
ports:
- containerPort: 8080
readinessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
在上面的示例中,我们在容器规格中添加了一个名为my-container的容器,并指定了一个HTTP启动探针。探针将在容器启动后的5秒钟后发送一个HTTP GET请求到容器的端口8080,并期望获得响应代码200。如果探针未能获得响应或者响应代码不是200,则Kubernetes将不会将流量发送到该容器。
Exec启动探针
Exec启动探针允许在容器启动后立即执行一个命令,并检查其退出代码。如果命令返回零退出代码,则Kubernetes将认为容器已准备好接受流量。以下是一个使用Exec启动探针的示例:
代码语言:javascript复制apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: my-image
ports:
- containerPort: 8080
readinessProbe:
exec:
command:
- /bin/sh
- -c
- check-service.sh
initialDelaySeconds: 5
periodSeconds: 10
在上面的示例中,我们使用Exec启动探针来执行一个名为check-service.sh的脚本,并检查其退出代码。如果脚本返回零退出代码,则Kubernetes将认为容器已准备好接受流量。