问题标签 [readinessprobe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
2145 浏览

spring-boot - 在 Kafka Streams 上运行的 Spring Boot 服务的 Liveness/Readiness 健康指标集

应如何为在具有数据库连接的 Kafka Streams 之上运行的 Spring Boot 服务正确配置健康指标?我们使用 Spring Cloud Streams 和 Kafka Streams 绑定、Spring-Data JPA、Kubernetes 作为容器管理程序。我们假设每个主题有 3 个服务副本和 9 个分区。典型的服务通常将来自两个主题的消息连接起来,并将数据保存在数据库中,然后将数据发布回另一个 kafka 主题。

切换到 Spring Boot 2.3.1 并将 K8s liveness/readiness 端点更改为新端点后:

  • /执行器/健康/活力
  • /执行器/健康/准备就绪

我们发现默认情况下它们不包含任何健康指标。

根据文件

Actuator 将“liveness”和“readiness”探针配置为 Health Groups;这意味着他们可以使用所有健康组功能。(...) 默认情况下,Spring Boot 不会将其他 Health Indicators 添加到这些组中。

我相信这是正确的方法,但我没有测试过:

我们尝试涵盖以下用例:

  • 滚动更新:添加新副本时不可用的消费槽(空闲实例)
  • 流已死(已抛出运行时异常)
  • DB 在容器启动期间/服务运行时不可用
  • 经纪人不可用

我发现了一个类似的问题,但是我相信当前的问题与 Kafka 服务特别相关。它们在本质上与 REST 服务不同。

更新: 在 Spring Boot 2.3.1 中,Binders 健康指示器检查流是否处于 Kafka 2.5 的 RUNNING 或 REBALANCING 状态(仅在 RUNNING 之前),所以我猜想具有空闲实例的滚动更新情况是由它的逻辑处理的。

0 投票
1 回答
344 浏览

kubernetes - 如何验证配置为 https 的 Liveness 探针的证书?

我在我的容器上使用 readinessProbe 并将其配置为在具有方案属性的 HTTPS 上工作。我的服务器期望获得证书。如何配置就绪探测以支持带有证书交换的 HTTPS?我不希望它跳过证书

0 投票
2 回答
2338 浏览

kubernetes - 如何将 http 响应连接到就绪和活跃度探针

当端点在 /health 端点上返回 HTTP 500 时,我尝试重新启动 pod。服务,probe-pod,不应该在失败时向 pod 发送流量。

  • 应用程序需要有一个端点 /start,它将通过返回 HTTP 200 来指示它是否可以接受流量。如果端点返回 HTTP 500,则表明应用程序尚未完成初始化
  • 应用程序需要有另一个端点 /health 来指示应用程序是否仍按预期通过返回 HTTP 200 工作。如果端点返回 HTTP 500,则应用程序不再响应。
  • 探针应使用端口 8080

我知道就绪和活跃度探针是如何工作的,但是如何连接它们的输出响应基础?我无法解决第一项和第二项。我该如何测试解决方案?有人可以帮我吗?

0 投票
2 回答
1294 浏览

kubernetes - 如何为worker pod定义k8s liveness probe和readness probe

我有一个 k8s 集群。我们的服务是基于队列的。我们的 pod 订阅一个事件队列,获取事件并执行任务。那么对于这种服务,如何定义k8s liveness probe和readiness probe呢?

0 投票
1 回答
418 浏览

kubernetes - Kubernetes:使用 httpGet 进行就绪检查

我对准备探测感到很困惑。假设我使用带有 /health 的 httpGet 作为探测端点。一旦就绪检查返回 500,服务器将停止服务流量。那么 /health 端点如何工作?换句话说,一旦准备检查失败,它怎么能再次工作,因为它不能再回答未来的 /health 检查?

我想一个有效的解释是路径是在本地调用的?(即不通过 h​​ttps:${ip and port}/health)

0 投票
1 回答
1179 浏览

kubernetes - k8s 命令健康探测的最佳实践

我有一个订阅服务队列的工作 pod。我们需要定义 liveness probe 来监控 worker 的健康。worker pod 不公开任何 HTTP 或 TCP 端口。所以我使用命令来检查工人的健康状况。像这样。

每 5 秒,worker pod 会将健康信息输出到日志文件。日志文件名格式为healthy-YYYY-MM-DD-HH.log。每个日志信息如下:

所以我需要检查日志时间戳和消息是否健康。

我的问题是:

  1. 我的方法是否遵循 k8s 健康探测的最佳实践?
  2. k8s 是否支持更强大的命令?例如:python 脚本或 jq。我需要解析 JSON 并验证时间戳和消息?
  3. 对于worker pod,我们不需要定义readiness probe,因为它不绑定k8s service或者endpoint,对吧?
0 投票
2 回答
89 浏览

kubernetes - 我将 8888 用于 kubernetes 运行状况探测,将 8887 用于正常 HTTP 请求。因此,如果就绪探测失败,我还应该期待 8887 上的流量吗?

我使用 8888 进行活性和就绪探测,8887 用于正常 HTTP 请求,就绪探测失败并且 pod 处于 0/1,未就绪状态。但是我仍然看到 pod 正在处理正常的 POST 请求。这是预期的吗。是否应该在同一个端口上接收健康探测和正常请求?

0 投票
1 回答
184 浏览

kubernetes - 就绪探测失败时的 Kubernetes 自定义操作

我目前正在尝试在其当前运行的 Pod 的就绪探测失败时自动扩展部署。

一个 pod 处于空闲状态,直到向它发送一个 POST 请求,并且在它处理请求时,它不响应任何其他请求。

为了知道处理何时进行,我创建了一个端点,如果 pod 是空闲的,则返回 TRUE,否则返回 FALSE。

我将准备就绪探测器配置为查询此端点,以在处理正在进行时将其标记为不可用(并在不再处理时将其标记回可用)。

默认情况下,我有一个有限的 pod 池(比如 5 个)可以回答请求。

但是当我的 5 个 pod 都不可用时,我仍然希望能够发送另一个带有其他参数的 POST 以触发另一个处理。

因此,当所有 pod 的就绪性探测失败时,我想扩展部署以便让其他 pod 可以响应请求。

这里的问题是我没有找到如何用 K8S 做这样的事情,或者这是否可能。有人可以帮助我吗?

另一种方法是创建一个“观察者”pod,它会观察给定部署的所有就绪探测,当我对所有 pod 都失败时,手表将负责扩展部署。

但是这种替代方案意味着如果在 K8S 中本身可以进行,我希望避免这种开发。

谢谢 :)

0 投票
1 回答
761 浏览

spring-boot - 尝试配置探针时,Spring 引导中的“无法解析配置属性”

在我的Spring Boot 2.3.3.RELEASE情况下,我很想启用 toreadinessliveness端点。

我将此添加到 yml 文件中:

在此处输入图像描述

但是 IntelliJ 用 "Cannot resolve configuration property" 标记这些值,并且端点不可访问(例如 http://localhost:8080/actuator/health/readiness)

0 投票
2 回答
16918 浏览

http - Liveness 和 Readiness 探针连接被拒绝

当我尝试为我的 awx_web 容器设置 liveness & readiness prob 时,我不断收到此错误

我的容器 awx_web 部署中的 Liveness & Readiness 部分

如果我测试端口 8052 是否从与包含容器 awx_web 的 pod 位于同一命名空间中的另一个 pod 中打开,或者如果我使用与容器 awx_web 部署在同一 pod 中的容器进行测试,我会得到这个(端口已打开)

如果我从部署包含容器 awx_web 的 pod 的工作节点使用 netcat (nc),我会得到相同的结果(端口 8052 已打开)。

有关信息,我使用 NodePort 服务将流量重定向到该容器(awx_web)