(资料图)
一、概述
Kubernetes启动探针是一种机制,用于确保在Pod中的容器已经启动并准备好接受网络流量。它们通常与存活性探针一起使用,以确保容器在运行时不仅处于活动状态,而且已经完成了初始化并准备好接受流量。
二、启动探针类型
Kubernetes提供了两种类型的启动探针:HTTP和Exec。它们都允许在容器启动后立即执行命令或请求,并在容器已准备好接受流量时返回成功状态。下面是每种类型的详细信息和示例。
HTTP启动探针
HTTP启动探针使用HTTP GET请求检查应用程序是否已经启动并准备好接受流量。它需要指定一个HTTP路径,并且期望在启动后立即返回200响应代码。以下是一个使用HTTP启动探针的示例:
apiVersion: v1kind: Podmetadata: name: my-podspec: 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启动探针的示例:
apiVersion: v1kind: Podmetadata: name: my-podspec: 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将认为容器已准备好接受流量。