问题标签 [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.
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 之前),所以我猜想具有空闲实例的滚动更新情况是由它的逻辑处理的。
kubernetes - 如何验证配置为 https 的 Liveness 探针的证书?
我在我的容器上使用 readinessProbe 并将其配置为在具有方案属性的 HTTPS 上工作。我的服务器期望获得证书。如何配置就绪探测以支持带有证书交换的 HTTPS?我不希望它跳过证书
kubernetes - 如何将 http 响应连接到就绪和活跃度探针
当端点在 /health 端点上返回 HTTP 500 时,我尝试重新启动 pod。服务,probe-pod,不应该在失败时向 pod 发送流量。
- 应用程序需要有一个端点 /start,它将通过返回 HTTP 200 来指示它是否可以接受流量。如果端点返回 HTTP 500,则表明应用程序尚未完成初始化
- 应用程序需要有另一个端点 /health 来指示应用程序是否仍按预期通过返回 HTTP 200 工作。如果端点返回 HTTP 500,则应用程序不再响应。
- 探针应使用端口 8080
我知道就绪和活跃度探针是如何工作的,但是如何连接它们的输出响应基础?我无法解决第一项和第二项。我该如何测试解决方案?有人可以帮我吗?
kubernetes - 如何为worker pod定义k8s liveness probe和readness probe
我有一个 k8s 集群。我们的服务是基于队列的。我们的 pod 订阅一个事件队列,获取事件并执行任务。那么对于这种服务,如何定义k8s liveness probe和readiness probe呢?
kubernetes - Kubernetes:使用 httpGet 进行就绪检查
我对准备探测感到很困惑。假设我使用带有 /health 的 httpGet 作为探测端点。一旦就绪检查返回 500,服务器将停止服务流量。那么 /health 端点如何工作?换句话说,一旦准备检查失败,它怎么能再次工作,因为它不能再回答未来的 /health 检查?
我想一个有效的解释是路径是在本地调用的?(即不通过 https:${ip and port}/health)
kubernetes - k8s 命令健康探测的最佳实践
我有一个订阅服务队列的工作 pod。我们需要定义 liveness probe 来监控 worker 的健康。worker pod 不公开任何 HTTP 或 TCP 端口。所以我使用命令来检查工人的健康状况。像这样。
每 5 秒,worker pod 会将健康信息输出到日志文件。日志文件名格式为healthy-YYYY-MM-DD-HH.log。每个日志信息如下:
所以我需要检查日志时间戳和消息是否健康。
我的问题是:
- 我的方法是否遵循 k8s 健康探测的最佳实践?
- k8s 是否支持更强大的命令?例如:python 脚本或 jq。我需要解析 JSON 并验证时间戳和消息?
- 对于worker pod,我们不需要定义readiness probe,因为它不绑定k8s service或者endpoint,对吧?
kubernetes - 我将 8888 用于 kubernetes 运行状况探测,将 8887 用于正常 HTTP 请求。因此,如果就绪探测失败,我还应该期待 8887 上的流量吗?
我使用 8888 进行活性和就绪探测,8887 用于正常 HTTP 请求,就绪探测失败并且 pod 处于 0/1,未就绪状态。但是我仍然看到 pod 正在处理正常的 POST 请求。这是预期的吗。是否应该在同一个端口上接收健康探测和正常请求?
kubernetes - 就绪探测失败时的 Kubernetes 自定义操作
我目前正在尝试在其当前运行的 Pod 的就绪探测失败时自动扩展部署。
一个 pod 处于空闲状态,直到向它发送一个 POST 请求,并且在它处理请求时,它不响应任何其他请求。
为了知道处理何时进行,我创建了一个端点,如果 pod 是空闲的,则返回 TRUE,否则返回 FALSE。
我将准备就绪探测器配置为查询此端点,以在处理正在进行时将其标记为不可用(并在不再处理时将其标记回可用)。
默认情况下,我有一个有限的 pod 池(比如 5 个)可以回答请求。
但是当我的 5 个 pod 都不可用时,我仍然希望能够发送另一个带有其他参数的 POST 以触发另一个处理。
因此,当所有 pod 的就绪性探测失败时,我想扩展部署以便让其他 pod 可以响应请求。
这里的问题是我没有找到如何用 K8S 做这样的事情,或者这是否可能。有人可以帮助我吗?
另一种方法是创建一个“观察者”pod,它会观察给定部署的所有就绪探测,当我对所有 pod 都失败时,手表将负责扩展部署。
但是这种替代方案意味着如果在 K8S 中本身可以进行,我希望避免这种开发。
谢谢 :)
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)