详细谈谈负载均衡的startupProbe探针、livenessProbe探针、readnessProbe探针如何使用以及使用差异化
文章目录
- startupProbe探针
- startupProbe说明
- 示例配置
- 参数解释
- 使用场景说明
- 实例——要求: 容器在8秒内完成启动,否则杀死对应容器
- 工作流程说明
- timeoutSeconds: 和 periodSeconds: 参数顺序说明
- livenessProbe探针
- livenessProbe说明
- 示例配置
- 参数解释
- 使用场景说明
- 实例——题目要求:如果发现业务4秒后无响应,杀死对应容器,并进行重启
- 工作流程说明
- readnessProbe探针
- readnessProbe说明
- 示例配置
- 参数解释
- 使用场景说明
- 实例——如果发现业务3秒后无响应,访问流量将不会传值该容器,5秒内如果回复响应,访问流量将继续转发至该容器
- 工作流程说明
- 一个完整的包含3个探针的实例yaml文件
startupProbe探针
startupProbe
是 Kubernetes 中的一种探针,用于检测容器的启动状态。- 如果容器未能在指定的时间内启动,Kubernetes 将杀死并重启该容器。【简单来说startupProbe 用于检测容器是否已经成功启动。如果
startupProbe
失败,Kubernetes 将杀死容器并根据策略进行重启。】 startupProbe
主要用于那些启动时间较长的应用,以确保它们在完全启动之前不会被其他探针(如livenessProbe
和readinessProbe
)误判为失败。也就是说,它通常用于那些启动时间较长的应用程序,以确保在应用程序完全启动之前不会触发 livenessProbe 和 readinessProbe。
- 如果容器未能在指定的时间内启动,Kubernetes 将杀死并重启该容器。【简单来说startupProbe 用于检测容器是否已经成功启动。如果
startupProbe说明
-
以下是
startupProbe
的常用参数及其说明: -
- httpGet: 使用 HTTP GET 请求进行探测。
- path: 要探测的 HTTP 路径。
- port: 要探测的端口。
- scheme: 使用的协议(HTTP 或 HTTPS)。
示例:
httpGet:path: /port: 8080scheme: HTTP
- httpGet: 使用 HTTP GET 请求进行探测。
-
- tcpSocket: 使用 TCP 检查进行探测。
- port: 要探测的端口。
示例:
tcpSocket:port: 8080
- tcpSocket: 使用 TCP 检查进行探测。
-
- exec: 使用命令执行进行探测。
- command: 要执行的命令及其参数。
示例:
exec:command:- cat- /etc/hosts
- exec: 使用命令执行进行探测。
-
- initialDelaySeconds: 在容器启动后等待多长时间开始进行第一次检查。
- 类型:整数
- 默认值:0
- initialDelaySeconds: 在容器启动后等待多长时间开始进行第一次检查。
-
- timeoutSeconds: 探针等待响应的时间。如果超过这个时间没有响应,则认为探针失败。
- 类型:整数
- 默认值:1
- timeoutSeconds: 探针等待响应的时间。如果超过这个时间没有响应,则认为探针失败。
-
- periodSeconds: 探针之间的间隔时间,即每隔多少秒进行一次检查。
- 类型:整数
- 默认值:10
-
- successThreshold: 探针连续成功的次数,只有达到这个次数才认为探针成功。
- 类型:整数
- 默认值:1
-
- failureThreshold: 探针连续失败的次数,只有达到这个次数才认为探针失败,并触发容器重启。
- 类型:整数
- 默认值:3
示例配置
- 以下是一个完整的
startupProbe
配置示例:
startupProbe:httpGet:path: /port: 8080scheme: HTTPinitialDelaySeconds: 0timeoutSeconds: 5periodSeconds: 10successThreshold: 1failureThreshold: 3
参数解释
- httpGet: 使用 HTTP GET 请求检查
/
路径,端口为 8080,使用 HTTP 协议。 - initialDelaySeconds: 0: 容器启动后立即开始进行探测。
- timeoutSeconds: 5: 探针等待5秒以获取响应。如果超过5秒没有响应,则认为探针失败。
- periodSeconds: 10: 每10秒进行一次探测。
- successThreshold: 1: 探针只需一次成功就认为探测通过。
- failureThreshold: 3: 探针需要连续三次失败才认为探测失败,并触发容器重启。
使用场景说明
-
使用场景一般有下面2个:
- 启动时间较长的应用:对于启动时间较长的应用,使用
startupProbe
可以确保它们在完全启动之前不会被误判为失败。 - 避免误判:在应用启动过程中,
livenessProbe
和readinessProbe
可能会误判应用为失败。使用startupProbe
可以避免这种情况。
- 启动时间较长的应用:对于启动时间较长的应用,使用
-
通过合理配置
startupProbe
,可以确保容器在启动过程中得到正确的检测和处理,避免因启动时间较长而导致的不必要的重启。
实例——要求: 容器在8秒内完成启动,否则杀死对应容器
- 根据题意,最终参数如下:
这种配置确保了探针能够每2秒检查一次容器状态,并且在容器未能在8秒内启动完成时杀死容器。探针等待4秒以获取响应,如果超过4秒没有响应,则认为探针失败。探针需要连续两次失败(即8秒内两次失败)才会将容器标记为启动失败并触发重启。
startupProbe:exec:command:- cat- /etc/hostsinitialDelaySeconds: 0timeoutSeconds: 4periodSeconds: 2successThreshold: 1failureThreshold: 2
工作流程说明
- 解析
startupProbe 【只启动一次】——容器启动的时候完成探针,失败就killexec: 通过在容器内执行命令来检查应用的健康状况。command: 要执行的命令。- cat- /etc/hosts`initialDelaySeconds 0` 用于指定在容器启动后多长时间开始进行首次健康检查。它的作用是让容器有足够的时间来完成初始化操作,避免在容器还未完全启动时就进行健康检查,从而导致误判。例如,如果将 `initialDelaySeconds` 设置为 `30`,那么 Kubernetes 会在容器启动后的 30 秒才开始进行第一次 `startupProbe` 检查。`timeoutSeconds 4`: 探测的超时时间(秒)。`periodSeconds 2`: 执行探测的周期(秒)。`successThreshold 1`: 探测成功的阈值。连续成功达到这个阈值后,容器被认为已经成功启动。默认值是 1。如果设置为 1,只要有一次成功的探测,容器就会被认为启动成功。`failureThreshold 2`: 探测失败的阈值。在达到这个阈值之前,容器不会被认为启动失败。
-
参数解释
-
exec: 使用命令执行方式进行探测,这里使用
ls /mnt
命令。- command: 定义了要执行的命令,这里是
ls /mnt
。
- command: 定义了要执行的命令,这里是
-
initialDelaySeconds: 在容器启动后等待多长时间开始进行第一次检查。
- 在你的配置中,
initialDelaySeconds: 0
表示容器启动后立即开始进行探测。
- 在你的配置中,
-
timeoutSeconds: 探针等待响应的时间。如果超过这个时间没有响应,则认为探针失败。
- 在你的配置中,
timeoutSeconds: 4
表示探针等待4秒以获取响应。如果超过4秒没有响应,则认为探针失败。
- 在你的配置中,
-
periodSeconds: 探针之间的间隔时间,即每隔多少秒进行一次检查。
- 在你的配置中,
periodSeconds: 2
表示每2秒进行一次探测。
- 在你的配置中,
-
successThreshold: 探针连续成功的次数,只有达到这个次数才认为探针成功。
- 在你的配置中,
successThreshold: 1
表示探针只需一次成功就认为探测通过。
- 在你的配置中,
-
failureThreshold: 探针连续失败的次数,只有达到这个次数才认为探针失败,并触发容器重启。
- 在你的配置中,
failureThreshold: 2
表示探针需要连续两次失败才认为探测失败。
- 在你的配置中,
-
-
工作流程
-
- 容器启动后,探针会立即开始进行探测(
initialDelaySeconds: 0
)。
- 容器启动后,探针会立即开始进行探测(
-
- 每2秒,探针会执行一次
ls /mnt
命令(periodSeconds: 2
)。
- 每2秒,探针会执行一次
-
- 如果探针在4秒内没有成功执行
ls /mnt
命令(timeoutSeconds: 4
),则认为探针失败。
- 如果探针在4秒内没有成功执行
-
- 探针需要连续两次失败(
failureThreshold: 2
)才会触发容器重启。
- 探针需要连续两次失败(
-
-
适用场景
- initialDelaySeconds: 0:适用于希望容器启动后立即开始探测的场景。
- timeoutSeconds: 4:适用于希望容器在执行命令时有足够的时间响应。
- periodSeconds: 2:适用于希望频繁检查容器启动状态的情况。
- successThreshold: 1:适用于希望探针只需一次成功就认为容器启动成功的情况。
- failureThreshold: 2:适用于希望探针需要连续两次失败才认为容器启动失败的情况,避免偶发性故障导致不必要的重启。
-
结论
这个配置是合适的,因为它能够满足以下需求:
8秒内完成启动:探针每2秒检查一次容器状态,探针等待4秒以获取响应。如果超过4秒没有响应,则认为探针失败。探针需要连续两次失败(即8秒内两次失败)才会将容器标记为启动失败并触发重启。 -
口水话深度解析
- 容器启动后,探针会立即开始进行探测。
- 开始第一个循环,循环内容持续时间是4秒,循环内容为:探针每4秒(periodSeconds: 4)执行一次 ls /mnt 命令。持续时间为2秒(timeoutSeconds: 2)【时间是包含关系【(periodSeconds: 4)包含(timeoutSeconds: 2)】,而不能(periodSeconds: 4)x(timeoutSeconds: 2)=8秒】
- 【换种方式来说就是,4秒执行一次,持续时间4秒(periodSeconds: 4),4秒中做的事情是,2秒内(timeoutSeconds: 2)有没有成功执行 ls /mnt命令】
- 如果探针在2秒(timeoutSeconds: 2)内没有成功执行 ls /mnt 命令,则认为探针失败。然后开始下一个循环(failureThreshold: 2),一组循环的参数是(periodSeconds: 4)和(timeoutSeconds: 2)。
- 探针需要连续两次失败(即8秒内两次失败)才会触发容器重启。【时间计算是(periodSeconds: 4)x(failureThreshold: 2)】
- 而所谓的“否则杀死对应容器”,就是表示容器不运行而已
timeoutSeconds: 和 periodSeconds: 参数顺序说明
- 容器在8秒内完成启动,否则杀死对应容器,下面2个参数哪个更合适?
startupProbe:exec:command:- ls- /mntinitialDelaySeconds: 0timeoutSeconds: 2periodSeconds: 4successThreshold: 1failureThreshold: 2#和startupProbe:exec:command:- ls- /mntinitialDelaySeconds: 0timeoutSeconds: 4periodSeconds: 2successThreshold: 1failureThreshold: 2
根据你的需求:容器在8秒内完成启动,否则杀死对应容器。
-
区别
-
- timeoutSeconds:
- 配置1:
timeoutSeconds: 2
,探针等待2秒以获取响应。如果超过2秒没有响应,则认为探针失败。 - 配置2:
timeoutSeconds: 4
,探针等待4秒以获取响应。如果超过4秒没有响应,则认为探针失败。
-
- periodSeconds:
- 配置1:
periodSeconds: 4
,每4秒进行一次探测。
-
配置2:
periodSeconds: 2
,每2秒进行一次探测。
-
-
需求分析
- 8秒内完成启动:需要探针在8秒内检测到容器是否启动完成,否则杀死容器。
-
配置选择
-
配置1
- 探针每4秒检查一次容器状态。
- 探针等待2秒以获取响应。
- 探针需要连续两次失败(即8秒内两次失败)才会将容器标记为启动失败并杀死容器。
-
配置2
- 探针每2秒检查一次容器状态。
- 探针等待4秒以获取响应。
- 探针需要连续两次失败(即8秒内两次失败)才会将容器标记为启动失败并杀死容器。
-
-
结论
- 配置2 更合适,因为它能够更频繁地检查容器状态,并且在8秒内检测到容器是否启动完成。
- 这种配置确保了探针能够每2秒检查一次容器状态,并且在容器未能在8秒内启动完成时杀死容器。探针等待4秒以获取响应,如果超过4秒没有响应,则认为探针失败。探针需要连续两次失败(即8秒内两次失败)才会将容器标记为启动失败并杀死容器。
startupProbe:exec:command:- ls- /mntinitialDelaySeconds: 0timeoutSeconds: 4periodSeconds: 2successThreshold: 1failureThreshold: 2
livenessProbe探针
livenessProbe说明
-
livenessProbe
是 Kubernetes 中的一种探针,用于检测容器是否处于健康状态。- 如果探针失败,Kubernetes 会杀死容器并根据策略进行重启。
livenessProbe
主要用于确保容器在运行过程中保持健康状态,如果容器进入不健康状态,可以通过重启来恢复。- 通过合理配置
livenessProbe
,可以确保容器在运行过程中保持健康状态,并在出现问题时自动重启容器,从而提高应用的可靠性和可用性。
-
以下是
livenessProbe
的常用参数及其说明:- httpGet: 使用 HTTP GET 请求进行探测。
- path: 要探测的 HTTP 路径。
- port: 要探测的端口。
- scheme: 使用的协议(HTTP 或 HTTPS)。
示例:
httpGet:path: /port: 8080scheme: HTTP
-
- tcpSocket: 使用 TCP 检查进行探测。
- port: 要探测的端口。
示例:
tcpSocket:port: 8080
-
- exec: 使用命令执行进行探测。
- command: 要执行的命令及其参数。
示例:
exec:command:- cat- /etc/hosts
-
- initialDelaySeconds: 在容器启动后等待多长时间开始进行第一次检查。
- 类型:整数
- 默认值:0
-
- timeoutSeconds: 探针等待响应的时间。如果超过这个时间没有响应,则认为探针失败。
- 类型:整数
- 默认值:1
-
- periodSeconds: 探针之间的间隔时间,即每隔多少秒进行一次检查。
- 类型:整数
- 默认值:10
-
- successThreshold: 探针连续成功的次数,只有达到这个次数才认为探针成功。
- 类型:整数
- 默认值:1
-
- failureThreshold: 探针连续失败的次数,只有达到这个次数才认为探针失败,并触发容器重启。
- 类型:整数
- 默认值:3
示例配置
- 以下是一个完整的
livenessProbe
配置示例:
livenessProbe:httpGet:path: /port: 8080scheme: HTTPinitialDelaySeconds: 10timeoutSeconds: 1periodSeconds: 10successThreshold: 1failureThreshold: 3
参数解释
- httpGet: 使用 HTTP GET 请求检查
/
路径,端口为 8080,使用 HTTP 协议。 - initialDelaySeconds: 10: 容器启动后等待10秒再开始进行探测。
- timeoutSeconds: 1: 探针等待1秒以获取响应。如果超过1秒没有响应,则认为探针失败。
- periodSeconds: 10: 每10秒进行一次探测。
- successThreshold: 1: 探针只需一次成功就认为探测通过。
- failureThreshold: 3: 探针需要连续三次失败才认为探测失败,并触发容器重启。
使用场景说明
- 使用场景如下
- 检测应用崩溃:如果应用进程崩溃或挂起,
livenessProbe
可以检测到并触发容器重启。 - 检测死锁:如果应用进入死锁状态,
livenessProbe
可以检测到并触发容器重启。 - 检测资源耗尽:如果应用耗尽了资源(如内存、CPU),
livenessProbe
可以检测到并触发容器重启。
- 检测应用崩溃:如果应用进程崩溃或挂起,
实例——题目要求:如果发现业务4秒后无响应,杀死对应容器,并进行重启
- 题目要求:如果发现业务4秒后无响应,杀死对应容器,并进行重启
- 最终如下
这种配置确保了探针能够每秒检查一次服务状态,并且在服务无响应时更准确地将容器标记为不健康。探针等待2秒以获取响应,如果超过2秒没有响应,则认为探针失败。探针需要连续两次失败才会触发容器重启,同时在服务恢复响应时能够快速将容器标记为健康。
livenessProbe:httpGet:path: /port: 8090scheme: HTTPinitialDelaySeconds: 10timeoutSeconds: 2periodSeconds: 1successThreshold: 1failureThreshold: 2
工作流程说明
liveness【整个生命周期存在】——检测状态,失败就kill#用于检测容器是否处于健康状态。如果探针失败,Kubernetes 会杀死容器并根据策略进行重启。#适用于检测容器是否需要重启的情况。tcpSocket: 过尝试建立 TCP 连接来检查应用的健康状况。port: 8090 要连接的端口。`initialDelaySeconds 10` 用于指定在容器启动后多长时间开始进行首次健康检查。它的作用是让容器有足够的时间来完成初始化操作,避免在容器还未完全启动时就进行健康检查,从而导致误判。例如,如果将 `initialDelaySeconds` 设置为 `30`,那么 Kubernetes 会在容器启动后的 30 秒才开始进行第一次 `startupProbe` 检查。`timeoutSeconds 2`: 探测的超时时间(秒)。默认值是 1 秒。`periodSeconds 1`: 执行探测的周期(秒)。默认值是 10 秒。`successThreshold 1`: 探测成功的阈值。连续成功达到这个阈值后,容器被认为已经成功启动。默认值是 1。如果设置为 1,只要有一次成功的探测,容器就会被认为启动成功。`failureThreshold 2`: 探测失败的阈值。在达到这个阈值之前,容器不会被认为启动失败。默认值是 3。
-
参数解释
-
httpGet: 使用 HTTP GET 请求进行探测。
-
path:
/
,这是探针将要检查的路径。 -
port:
8090
,这是探针将要检查的端口。 -
scheme:
HTTP
,使用 HTTP 协议进行探测。 -
initialDelaySeconds: 在容器启动后等待多长时间开始进行第一次检查。
- 在你的配置中,
initialDelaySeconds: 10
表示容器启动后等待10秒再开始进行探测。
- 在你的配置中,
-
timeoutSeconds: 探针等待响应的时间。如果超过这个时间没有响应,则认为探针失败。
- 在你的配置中,
timeoutSeconds: 2
表示探针等待2秒以获取响应。如果超过2秒没有响应,则认为探针失败。
- 在你的配置中,
-
periodSeconds: 探针之间的间隔时间,即每隔多少秒进行一次检查。
- 在你的配置中,
periodSeconds: 1
表示每1秒进行一次探测。
- 在你的配置中,
-
successThreshold: 探针连续成功的次数,只有达到这个次数才认为探针成功。
- 在你的配置中,
successThreshold: 1
表示探针只需一次成功就认为探测通过。
- 在你的配置中,
-
failureThreshold: 探针连续失败的次数,只有达到这个次数才认为探针失败,并触发容器重启。
- 在你的配置中,
failureThreshold: 2
表示探针需要连续两次失败才认为探测失败。
- 在你的配置中,
-
-
工作流程
-
- 容器启动后,探针会等待10秒再开始进行探测(
initialDelaySeconds: 10
)。
- 容器启动后,探针会等待10秒再开始进行探测(
-
- 每1秒,探针会对
http://<容器IP>:8090/
发起一次 HTTP GET 请求(periodSeconds: 1
)。
- 每1秒,探针会对
-
- 如果探针在2秒内没有收到响应(
timeoutSeconds: 2
),则认为探针失败。
- 如果探针在2秒内没有收到响应(
-
- 探针需要连续两次失败(
failureThreshold: 2
)才会触发容器重启。
- 探针需要连续两次失败(
-
- 探针只需一次成功(
successThreshold: 1
)就会将容器标记为健康。
- 探针只需一次成功(
-
-
适用场景
- initialDelaySeconds: 10:适用于希望容器启动后等待一段时间再开始探测的场景。
- timeoutSeconds: 2:适用于希望快速检测到服务无响应的情况。
- periodSeconds: 1:适用于希望频繁检查服务健康状态的情况。
- successThreshold: 1:适用于希望探针只需一次成功就认为服务健康的情况。
- failureThreshold: 2:适用于希望探针需要连续两次失败才认为服务不健康的情况,避免偶发性故障导致不必要的重启。
-
满足需求
- 10秒后开始探测:容器启动后等待10秒再开始进行探测。
- 2秒无响应:探针等待2秒以获取响应,如果超过2秒没有响应,则认为探针失败。
- 每1秒检查一次:探针每1秒检查一次服务状态。
- 连续两次失败:探针需要连续两次失败才会触发容器重启。
readnessProbe探针
readnessProbe说明
-
readinessProbe
是 Kubernetes 中的一种探针,用于检测容器是否已经准备好接受流量。- 如果探针失败,Kubernetes 会将容器从服务的端点列表中移除,但不会杀死容器。
- 这主要用于确保只有健康且准备好处理请求的容器才会接收流量。
- 通过合理配置
readinessProbe
,可以确保只有健康且准备好处理请求的容器才会接收流量,从而提高应用的可靠性和可用性。
-
readinessProbe
参数说明
以下是readinessProbe
的常用参数及其说明: -
- httpGet: 使用 HTTP GET 请求进行探测。
- path: 要探测的 HTTP 路径。
- port: 要探测的端口。
- scheme: 使用的协议(HTTP 或 HTTPS)。
示例:
httpGet:path: /port: 8080scheme: HTTP
-
- tcpSocket: 使用 TCP 检查进行探测。
- port: 要探测的端口。
示例:
tcpSocket:port: 8080
-
- exec: 使用命令执行进行探测。
- command: 要执行的命令及其参数。
示例:
exec:command:- cat- /etc/hosts
-
- initialDelaySeconds: 在容器启动后等待多长时间开始进行第一次检查。
- 类型:整数
- 默认值:0
-
- timeoutSeconds: 探针等待响应的时间。如果超过这个时间没有响应,则认为探针失败。
- 类型:整数
- 默认值:1
-
- periodSeconds: 探针之间的间隔时间,即每隔多少秒进行一次检查。
- 类型:整数
- 默认值:10
-
- successThreshold: 探针连续成功的次数,只有达到这个次数才认为探针成功。
- 类型:整数
- 默认值:1
-
- failureThreshold: 探针连续失败的次数,只有达到这个次数才认为探针失败,并将容器标记为不就绪。
- 类型:整数
- 默认值:3
示例配置
以下是一个完整的 readinessProbe
配置示例:
readinessProbe:httpGet:path: /port: 8080scheme: HTTPinitialDelaySeconds: 10timeoutSeconds: 1periodSeconds: 10successThreshold: 1failureThreshold: 3
参数解释
- httpGet: 使用 HTTP GET 请求检查
/
路径,端口为 8080,使用 HTTP 协议。 - initialDelaySeconds: 10: 容器启动后等待10秒再开始进行探测。
- timeoutSeconds: 1: 探针等待1秒以获取响应。如果超过1秒没有响应,则认为探针失败。
- periodSeconds: 10: 每10秒进行一次探测。
- successThreshold: 1: 探针只需一次成功就认为探测通过。
- failureThreshold: 3: 探针需要连续三次失败才认为探测失败,并将容器标记为不就绪。
使用场景说明
- 检测应用是否准备好接受流量:在应用启动过程中,可能需要进行一些初始化操作(如加载配置、连接数据库等),
readinessProbe
可以确保应用在完成这些操作后才开始接收流量。 - 动态调整服务流量:在运行过程中,如果应用暂时无法处理请求(如进行内部维护或资源不足),
readinessProbe
可以将容器从服务的端点列表中移除,待应用恢复后再重新加入。
实例——如果发现业务3秒后无响应,访问流量将不会传值该容器,5秒内如果回复响应,访问流量将继续转发至该容器
- 题目要求:如果发现业务3秒后无响应,访问流量将不会传值该容器,5秒内如果回复响应,访问流量将继续转发至该容器
- 最终用下面参数
这种配置确保了探针能够每秒检查一次服务状态,并且在服务无响应时更准确地将容器标记为不就绪。探针等待3秒以获取响应,如果超过3秒没有响应,则认为探针失败。探针只需一次失败就会将容器标记为不就绪,同时在服务恢复响应时能够在5秒内检测到并将容器标记为就绪。
readinessProbe:httpGet:path: /port: 8090scheme: HTTPinitialDelaySeconds: 10timeoutSeconds: 3periodSeconds: 1successThreshold: 1failureThreshold: 1
工作流程说明
readness【整个生命周期存在】——检测业务,失败就不转发业务【不会kill掉容器】#用于检测容器是否准备好接受流量。如果探针失败,Kubernetes 会将容器从服务的端点列表中移除,但不会杀死容器。#适用于检测容器是否可以接受流量的情况。httpGet: 通过发送 HTTP GET 请求来检查应用的健康状况。path: / 要访问的 HTTP 路径。port: 8090 要访问的端口。scheme: HTTP 指定 HTTP 请求的协议,常见的值为 HTTP 和 HTTPS。`initialDelaySeconds 10` 用于指定在容器启动后多长时间开始进行首次健康检查。它的作用是让容器有足够的时间来完成初始化操作,避免在容器还未完全启动时就进行健康检查,从而导致误判。例如,如果将 `initialDelaySeconds` 设置为 `30`,那么 Kubernetes 会在容器启动后的 30 秒才开始进行第一次 `startupProbe` 检查。`timeoutSeconds 3`: 探测的超时时间(秒)。默认值是 1 秒。`periodSeconds 1`: 执行探测的周期(秒)。默认值是 10 秒。`successThreshold 1`: 探测成功的阈值。连续成功达到这个阈值后,容器被认为已经成功启动。默认值是 1。如果设置为 1,只要有一次成功的探测,容器就会被认为启动成功。`failureThreshold 1`: 探测失败的阈值。在达到这个阈值之前,容器不会被认为启动失败。默认值是 3。
-
参数解释
-
httpGet: 使用 HTTP GET 请求进行探测。
- path:
/
,这是探针将要检查的路径。 - port:
8090
,这是探针将要检查的端口。 - scheme:
HTTP
,使用 HTTP 协议进行探测。
- path:
-
initialDelaySeconds: 在容器启动后等待多长时间开始进行第一次检查。
- 在你的配置中,
initialDelaySeconds: 10
表示容器启动后等待10秒再开始进行探测。
- 在你的配置中,
-
timeoutSeconds: 探针等待响应的时间。如果超过这个时间没有响应,则认为探针失败。
- 在你的配置中,
timeoutSeconds: 3
表示探针等待3秒以获取响应。如果超过3秒没有响应,则认为探针失败。
- 在你的配置中,
-
periodSeconds: 探针之间的间隔时间,即每隔多少秒进行一次检查。
- 在你的配置中,
periodSeconds: 1
表示每1秒进行一次探测。
- 在你的配置中,
-
successThreshold: 探针连续成功的次数,只有达到这个次数才认为探针成功。
- 在你的配置中,
successThreshold: 1
表示探针只需一次成功就认为探测通过。
- 在你的配置中,
-
failureThreshold: 探针连续失败的次数,只有达到这个次数才认为探针失败,并将容器标记为不就绪。
- 在你的配置中,
failureThreshold: 1
表示探针只需一次失败就认为探测失败。
- 在你的配置中,
-
-
工作流程
-
- 容器启动后,探针会等待10秒再开始进行探测(
initialDelaySeconds: 10
)。
- 容器启动后,探针会等待10秒再开始进行探测(
-
- 每1秒,探针会对
http://<容器IP>:8090/
发起一次 HTTP GET 请求(periodSeconds: 1
)。
- 每1秒,探针会对
-
- 如果探针在3秒内没有收到响应(
timeoutSeconds: 3
),则认为探针失败。
- 如果探针在3秒内没有收到响应(
-
- 探针只需一次失败(
failureThreshold: 1
)就会将容器标记为不就绪。
- 探针只需一次失败(
-
- 探针只需一次成功(
successThreshold: 1
)就会将容器标记为就绪。
- 探针只需一次成功(
-
-
适用场景
- initialDelaySeconds: 10:适用于希望容器启动后等待一段时间再开始探测的场景。
- timeoutSeconds: 3:适用于希望快速检测到服务无响应的情况。
- periodSeconds: 1:适用于希望频繁检查服务健康状态的情况。
- successThreshold: 1:适用于希望探针只需一次成功就认为服务就绪的情况。
- failureThreshold: 1:适用于希望探针只需一次失败就认为服务不就绪的情况,能够快速响应服务的异常状态。
-
满足需求
- 10秒后开始探测:容器启动后等待10秒再开始进行探测。
- 3秒无响应:探针等待3秒以获取响应,如果超过3秒没有响应,则认为探针失败。
- 每1秒检查一次:探针每1秒检查一次服务状态。
- 一次失败即标记为不就绪:探针只需一次失败就会将容器标记为不就绪。
- 一次成功即标记为就绪:探针只需一次成功就会将容器标记为就绪。
一个完整的包含3个探针的实例yaml文件
可以直接通过下面内容创建一个负载的
相关文章:

详细谈谈负载均衡的startupProbe探针、livenessProbe探针、readnessProbe探针如何使用以及使用差异化
文章目录 startupProbe探针startupProbe说明示例配置参数解释 使用场景说明实例——要求: 容器在8秒内完成启动,否则杀死对应容器工作流程说明timeoutSeconds: 和 periodSeconds: 参数顺序说明 livenessProbe探针livenessProbe说明示例配置参数解释 使用…...

守望数据边界:sklearn中的离群点检测技术
守望数据边界:sklearn中的离群点检测技术 在数据分析和机器学习项目中,离群点检测是一项关键任务。离群点,又称异常值或离群点,是指那些与其他数据显著不同的观测值。这些点可能由测量误差、数据录入错误或真实的变异性造成。正确…...

python工作中遇到的坑
1. 字典拷贝 有些场景下,需要对字典拷贝一个副本。这个副本用于保存原始数据,然后原来的字典去参与其他运算,或者作为参数传递给一些函数。 例如, >>> dict_a {"name": "John", "address&q…...

中职网络安全wire0077数据包分析
从靶机服务器的FTP上下载wire0077.pcap,分析该文件,找出黑客入侵使用的协议,提交协议名称 SMTP 分析该文件,找出黑客入侵获取的zip压缩包,提交压缩包文件名 DESKTOP-M1JC4XX_2020_09_24_22_43_12.zip 分析该文件&…...

引领未来:在【PyCharm】中利用【机器学习】与【支持向量机】实现高效【图像识别】
目录 一、数据准备 1. 获取数据集 2. 数据可视化 3. 数据清洗 二、特征提取 1. 数据标准化 2. 图像增强 三、模型训练 1. 划分训练集和测试集 2. 训练 SVM 模型 3. 参数调优 四、模型评估 1. 评估模型性能 2. 可视化结果 五、预测新图像 1. 加载和预处理新图像…...

240707-Sphinx配置Pydata-Sphinx-Theme
Step A. 最终效果 Step B. 为什么选择Pydata-Sphinx-Theme主题 Gallery of sites using this theme — PyData Theme 0.15.4 documentation Step 1. 创建并激活Conda环境 conda create -n rtd_pydata python3.10 conda activate rtd_pydataStep 2. 安装默认的工具包 pip in…...

华为如何做成数字化转型?
目录 企业数字化转型是什么? 华为如何定义数字化转型? 为什么做数字化转型? 怎么做数字化转型? 华为IPD的最佳实践之“金蝶云” 企业数字化转型是什么? 先看一下案例,华为经历了多次战略转型…...

Python | Leetcode Python题解之第229题多数元素II
题目: 题解: class Solution:def majorityElement(self, nums: List[int]) -> List[int]:cnt {}ans []for v in nums:if v in cnt:cnt[v] 1else:cnt[v] 1for item in cnt.keys():if cnt[item] > len(nums)//3:ans.append(item)return ans...

TCP/IP模型和OSI模型的区别(面试题)
OSI模型,是国际标准化组织ISO制定的用于计算机或通讯系统间互联的标准化体系,主要分为7个层级: 物理层数据链路层网络层传输层会话层表示层应用层 虽然OSI模型在理论上更全面,但是在实际网络通讯中,TCP/IP模型更加实…...

UML建模工具Draw.io简介
新书速览|《UML 2.5基础、建模与设计实践 Draw.io是一个非常出色的免费、开源、简洁、方便的绘图软件,利用这款软件可以绘制出生动有趣的图形,包括流程图、地图、网络架构图、UML用例图、流程图等。它支持各种快捷键,免费提供了1000多张画图…...

qt udp 协议 详解
1.qt udp 协议链接举例 在Qt框架中,使用UDP协议进行通信主要依赖于QUdpSocket类。以下是一个基于Qt的UDP通信示例,包括UDP套接字的创建、绑定端口、发送和接收数据报的步骤。 1. 创建UDP套接字 首先,需要创建一个QUdpSocket对象。这通常在…...

ubuntu 换源
sudo apt update 错误如下 Ign:1 http://security.ubuntu.com/ubuntu focal-security InRelease Ign:2 http://us.archive.ubuntu.com/ubuntu focal InRelease Err:3 http://security.ubuntu.com/ubuntu focal-security Release SECURITY: URL redirect target…...

基于ssm的图书管理系统的设计与实现
摘 要 在当今信息技术日新月异的时代背景下,图书管理领域正经历着深刻的变革,传统的管理模式已难以适应现代社会的快节奏和高要求,逐渐向数字化、智能化的方向演进。本论文聚焦于这一转变趋势,致力于设计并成功实现一个基于 SSM&…...

python压缩PDF方案(Ghostscript+pdfc)
第一步:安装Ghostscript Ghostscript是一套建基于Adobe、PostScript及可移植文档格式(PDF)的页面描述语言等而编译成的免费软件。它可以作为文件格式转换器,如PostScript和PDF转换器,也为编程提供API。[1]PDF压缩本质…...

kotlin 基础
文章目录 1、安装 Java 和 Kotlin 环境2、程序代码基本结构3、变量的声明与使用4、数据类型5、数字类型的运算1)布尔类型2)字符类型3)字符串类型 6、 选择结构1)(if - else)2) 选择结构(when&am…...

Spring中的适配器模式和策略模式
1. 适配器模式的应用 1.1适配器模式(Adapter Pattern)的原始定义是:将一个类的接口转换为客户期望的另一个接口,适配器可以让不兼容的两个类一起协同工作。 1.2 AOP中的适配器模式 在Spring的AOP中,使用Advice&#…...

书生浦语大模型实战营---Python task
任务一 请实现一个wordcount函数,统计英文字符串中每个单词出现的次数,通过构建defaultdict字典,可以避免插入值时需要判断值是否存在 from collections import defaultdictdef word_count(text):#构建缓存reval defaultdict(int)words t…...

Chrome 127内置AI大模型攻略
Chrome 127 集成Gemini:本地AI功能 Google将Gemini大模型整合进Chrome浏览器,带来全新免费的本地AI体验: 完全免费、无限制使用支持离线运行,摆脱网络依赖功能涵盖图像识别、自然语言处理、智能推荐等中国大陆需要借助魔法,懂都懂。 安装部署步骤: 1. Chrome V127 dev …...

Yolo的离线运行
Yolo 的离线运行 运行环境准备 比较简单的办法是通过官方的github获取到对应的yolo运行需要的python环境-requirement.txt.通过如下地址可以获取到对应的文件和相应的说明以及实例。 Yolov5 git地址 为了让程序能本地话运行,我们还需要获取相应的模型权重文件&…...

【矿井知识】煤矿动火作业
简介 煤矿动火作业是指在煤矿环境下进行的任何形式的使用火源的工作。这些工作可能包括焊接、切割、加热、打磨等操作,这些操作都可能产生火花、火焰或高温,因此被称为动火作业。 动火作业的主要类型 焊接:包括电弧焊、气焊等,…...

设计模式使用场景实现示例及优缺点(结构型模式——享元模式)
结构型模式 享元模式(Flyweight Pattern) 享元模式,作为软件设计模式中的一员,其核心目标在于通过共享来有效地支持大量细粒度对象的使用。在内存使用优化方面,享元模式提供了一种极为高效的路径,尤其在处…...

开放式耳机哪款比较好?五款开放式耳机测评推荐
开放式耳机真的越来越火了,真的好多人问我,开放式耳机应该怎么选啊,所以这次我亲自测评了几款开放式耳机,作为数码博主这一篇文章就教大家如何挑选开放式耳机,当然最后还有五款开放式耳机的推荐给到大家,话…...

【网络安全】实验三(基于Windows部署CA)
一、配置环境 打开两台虚拟机,并参照下图,搭建网络拓扑环境,要求两台虚拟的IP地址要按照图中的标识进行设置,并根据搭建完成情况,勾选对应选项。注:此处的学号本人学号的最后两位数字,1学号100…...

hive中reverse函数
目录 前言基本函数介绍实战 前言 reverse函数,是一个常用的字符串处理函数,很多编程语言都有。最近开发中,遇到一个reverse解决的需求,发现自己尚未总结过,遂补上。 基本函数介绍 SELECT reverse(string_column) FR…...

SimpleTrack环境配置教程
SimpleTrack环境配置教程 conda create --name SimpleTrack python3.6 conda activate SimpleTrack git clone https://github.com/tusen-ai/SimpleTrack.git cd ./SimpleTrack/ # pip install opencv-python4.5.4.58 # 安装opencv-python报错,可尝试安此版本 pip …...

frameworks 之Zygote
frameworks 之Zygote Zygote.rc 解析Zygote 启动ZygoteInit.javaZygote.cppLiunx fork Zygote 中文意思为受精卵。 和其意思一样,该功能负责android系统孵化service 和 app 进程。 本文讲解Zygote的大概流程。涉及的相同的类,如下所示 system/core/rootd…...

基于考研题库小程序V2.0实现倒计时功能板块和超时判错功能
V2.0 需求沟通 需求分析 计时模块 3.1.1、功能描述←计时模块用于做题过程中对每一题的作答进行30秒倒计时,超时直接判错,同时将总用时显示在界面上;记录每次做题的总用时。 3.1.2、接口描述←与判定模块的接口为超时判定,若单题用时超过 …...

idm站点抓取可以用来做什么 idm站点抓取能抓取本地网页吗 idm站点抓取怎么用 网络下载加速器
在下载工具众多且竞争激烈的市场中,Internet Download Manager(简称IDM)作为一款专业的下载加速软件,仍然能够赢得众多用户的青睐,这都要得益于它的强大的下载功能。我们在开始使用IDM的时候总是有很多疑问,…...

maven7——(重要,构建项目)maven项目构建(命令)
Maven的常用命令管理项目的生命周期 clean命令 清除编译产生的target文件夹内容,可以配合相应命令在cmd中使用,如mvn clean package, mvn clean test D:\工作\公司培训-4班\day20\day20\untitled1>mvn clean compile命令 该命令可以…...

容联云发布容犀大模型应用,重塑企业“营销服”|WAIC 2024
7月6日,在2024世界人工智能大会上,容联云成功举办主题为“数智聚合 产业向上”的生成式应用与大模型商业化实践论坛。 论坛上,容联云发布了容犀智能大模型应用升级,该系列应用包括容犀Agent Copilot、容犀Knowledge Copilot、容犀…...