目录
Configure Liveness, Readiness and Startup Probes
startupProbe 探针
LivenessProbe探针 & ReadinessProbe探针
LivenessProbe探针
HttpGetAction:发送一个http Get请求(ip+port+请求路径),如果返回状态码在200~400之间,则表示健康。
livenessProbe:
failureThreshold: 8
httpGet:
host: 10.x.x.x
path: /healthz
port: 6443
scheme: HTTPS
initialDelaySeconds: 15
timeoutSeconds: 15
ReadinessProbe探针
在 Kubernetes 中,ReadinessProbe 是用于检测容器是否已经准备好接收流量的一种机制。它允许用户定义一个或多个探针来检查容器的健康状态。
以下是一些关于 ReadinessProbe 的常见示例:
- HTTP 探针:通过向容器提供的指定 HTTP 路径发送 GET 请求,并检查返回的状态码来确定容器是否准备就绪。
readinessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
- TCP 探针:通过向容器提供的指定 TCP 端口发送连接请求,检查是否成功建立连接来判断容器的可用性。
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
- 执行命令探针:执行用户定义的命令,并检查其退出码来决定容器是否已经就绪。
readinessProbe:
exec:
command:
- sh
- -c
- "command_to_check_container_readiness"
initialDelaySeconds: 15
periodSeconds: 20
请注意,以上示例中的延迟时间和探测间隔时间可以根据实际需求进行调整。
这些示例展示了如何使用 ReadinessProbe 来确保容器在接收流量之前已经准备就绪。根据实际的应用需求,可以选择使用适合的探测类型和参数配置。
这些参数是用于定义 Kubernetes 中的探针(probe)配置的。探针用于检查容器是否正常运行,以确保应用程序的可用性。
failureThreshold: 3
: 如果连续执行探测失败的次数达到3次,则认为探测失败,并将容器标记为不健康状态。periodSeconds: 10
: 指定两次连续探测之间的时间间隔,每隔10秒进行一次探测。successThreshold: 1
: 如果连续执行探测成功的次数达到1次,则认为探测成功,并将容器标记为健康状态。timeoutSeconds: 1
: 指定探测请求的超时时间,如果在1秒内没有收到响应,则认为探测失败。
这些参数可根据实际情况进行调整,以满足应用程序的可用性和稳定性要求。
postStart/preStop
在 Kubernetes 中,postStart
和 preStop
是 Pod 生命周期钩子(Lifecycle Hooks),它们允许你在容器启动后立即执行一个操作或者在容器终止前执行一个操作。这些钩子可以用来执行一些特定的任务,比如初始化或者清理工作。
以下是关于 postStart
和 preStop
生命周期钩子的 Kubernetes 官方文档链接:
-
容器生命周期钩子
- 容器生命周期钩子:这个页面详细介绍了容器生命周期钩子的概念,包括
postStart
和preStop
。
- 容器生命周期钩子:这个页面详细介绍了容器生命周期钩子的概念,包括
-
postStart 钩子
- postStart 钩子:了解
postStart
钩子的工作原理和如何使用它。
- postStart 钩子:了解
-
preStop 钩子
- preStop 钩子:了解
preStop
钩子的工作原理和如何使用它。
- preStop 钩子:了解
minReadySeconds 和 terminationGracePeriodSeconds
图片中提到的 minReadySeconds
和 terminationGracePeriodSeconds
是 Kubernetes 中用于控制 Pod 状态和生命周期的两个重要参数。
-
minReadySeconds:这是一个 Pod 级别的设置,它指定了 Kubernetes 在认为 Pod 已经准备好并且可以开始接收流量之前,必须等待的最小秒数。这个设置可以防止在 Pod 内部服务完全启动并准备好之前,流量就被路由到该 Pod。默认情况下,这个值是 0,意味着 Kubernetes 会立即认为 Pod 已经准备好。
-
terminationGracePeriodSeconds:这是一个 Pod 级别的设置,它指定了在 Pod 被终止之前,Kubernetes 等待 Pod 中的进程优雅地关闭的秒数。这个设置确保了 Pod 中的应用程序有机会执行清理操作或者保存状态,然后优雅地退出。如果进程在这段时间内没有关闭,Kubernetes 将强制终止它们。
这些参数对于确保服务的高可用性和数据的一致性非常重要。通过合理配置这些参数,可以提高应用程序的稳定性和用户体验。