考虑一个通过/health端口80 上的http端点进行运行状况检查的pod,它准备就绪并为流量提供服务大约需要60秒。
readinessProbe:
httpGet:
path: /health
port: 80
initialDelaySeconds: 60
livenessProbe:
httpGet:
path: /health
port: 80
Run Code Online (Sandbox Code Playgroud)
问题:
initialDelaySecondsfor livenessProbe。如果它们是独立的,那么在吊舱本身尚未准备就绪时检查livenessProbe的意义何在!?如果希望您的Container能够自行拆卸进行维护,则可以指定一个就绪探针,以检查特定于与活跃探针不同的就绪端点。
我以为,仅当livenessProbe失败时,运行中的吊舱才会自行倒下。不是readinessProbe。医生说另一种方式。
澄清!
fgu*_*gul 19
我从第二个问题开始回答。第二个问题是:
活性探针是否只有在 pod 准备就绪后才开始工作?换句话说,我假设一旦 POD 准备好,准备探测工作就完成了。之后 livenessProbe 负责健康检查。
我们最初的理解是 liveness probe 会在 readiness probe 成功后开始检查,但事实并非如此。它为这个挑战打开了一个问题。Yon 可以看看这里。然后通过添加启动探针解决了这个问题。
总结:
- 活性探针
livenessProbe:指示容器是否正在运行。如果活性探测失败,kubelet 会杀死 Container,并且 Container 会受到其重启策略的约束。如果容器不提供活性探测,the default state is Success.
- 就绪探针
readinessProbe:指示容器是否准备好为请求提供服务。如果就绪探测失败,端点控制器会从与 Pod 匹配的所有服务的端点中删除 Pod 的 IP 地址。初始延迟之前的默认就绪状态为失败。如果容器不提供就绪探测,the default state is Success.
- 启动探针
startupProbe:指示容器内的应用程序是否启动。如果提供了启动探测器,则禁用所有其他探测器,直到它成功。如果启动探测失败,kubelet 会杀死 Container,并且 Container 会受到其重启策略的约束。如果 Container 不提供启动探测器,the default state is Success
抬头看这里。
活动性探针将检查容器是否已启动并处于活动状态。如果不是这种情况,kubernetes最终将重新启动容器。
反过来,就绪探针还会检查依赖关系,例如数据库连接或您的容器要完成其工作所依赖的其他服务。作为开发人员,您需要在这里花更多的时间在实施上,而不仅仅是活动性探针。您必须公开一个端点,该端点在查询时还要检查提到的依赖项。
您当前的配置使用活动性探针通常使用的运行状况终结点。它可能不会检查您的服务是否真的准备好接受流量。
Kubernetes依赖于准备情况探针。在滚动更新期间,它将使旧容器保持运行状态,直到新服务声明已准备好接受流量为止。因此,准备情况探针必须正确实施。
活性探针
\n livenessProbe:\n httpGet:\n path: /healthz\n port: 8080\n initialDelaySeconds: 3\n periodSeconds: 3\nRun Code Online (Sandbox Code Playgroud)\n准备状态探测
\n readinessProbe:\n httpGet:\n path: /healthz\n port: 8080\n initialDelaySeconds: 3\n periodSeconds: 3\nRun Code Online (Sandbox Code Playgroud)\n概括
\nLiveness Probes:用于检查容器是否可用且处于活动状态。
\n就绪探针:用于检查应用程序是否已准备好使用并为流量提供服务。
\n| 归档时间: |
|
| 查看次数: |
3201 次 |
| 最近记录: |