问题标签 [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.
kubernetes - 部署模板中的 Kubernetes 探针
我有一个关于 Kubernetes Liveness/Readiness 探针配置的问题。
我有一个在netCore 3.1 中开发的应用程序,目前在生产环境(版本 1.0.0)中没有配置健康检查。我已经在第二个版本(版本 2.0.0)中实现了运行状况端点,但是如何管理 Kubernetes 部署模板文件以符合没有端点的 v1 版本?
如果我将部署配置了探针的模板,则在 v1 上运行的所有容器都将失败,因为无法访问任何端点。我想了解我是否可以维护一个与 v1(无运行状况)和 v2(运行状况)兼容的部署 yml 文件。
这里我贴一个我实际部署 yml 的例子:
server_image_version 变量可用于识别我是否必须执行健康检查。
在此先感谢,戴夫。
amazon-s3 - S3 - Kubernetes 探测
我有以下情况:
应用程序使用 S3 在 Amazon 中存储数据。应用程序在 kubernetes 中部署为 pod。有时,一些开发人员会弄乱 S3 的访问数据(例如用户/密码),并且应用程序无法连接到 S3 - 但 pod 正常启动并杀死之前工作正常的 pod 版本(因为所有就绪和活跃度探测都正常)。我想将 S3 探针添加到就绪状态 - 为了HeadBucketRequest
在 S3 上执行,如果这个成功,它就能够连接到 S3。这里的问题是这些请求需要花钱,而我真的只在 pod 启动时才需要它们。
是否有与此相关的最佳实践?
mysql - Mysql Kubernetes Deployment helm chart 失败,准备就绪,liveness probe failed
我是 stackoverflow 的新手,所以如果我没有遵循提出这个问题的所有规则,请原谅。
所以,我正在使用这个 helm 图表:https ://github.com/helm/charts/tree/master/stable/mysql为我们的生产环境部署 mysql。事实上,我们在生产中运行了这个设置,但它只创建了 1 个 mysql pod,而我需要运行 3 个 pod。我尝试在 helm 图表的 values.yaml 文件中设置 replicas=3 并重新部署该图表,但它不断失败并出现一些错误,错误是:
此外,当我尝试查看mysqld袜子时,它也不见了。但我不明白为什么。由于单个 pod 部署工作正常,但 3 pod 部署会产生此错误。
也可能有一些方法可以通过明确定义袜子的路径来解决这个问题,其他 StackOverflow 答案建议像这个答案1 或这个答案2。但需要注意的是,我们通过 Jenkins 自动化了整个生产图表部署,并且没有为每个生产版本显式运行这些命令的范围。
所以,我需要知道如何解决这个问题,或者知道是什么导致了这个问题,以便我可以更改或更改我在开头提到的 helm chart 中的一些参数。还要告诉我是否无法扩展此部署,这意味着此 helm 图表不支持或不适用于多个 mysql pod。
提前致谢。
kubernetes - 是否在就绪探测失败后重试 Pod
readinessProbe:指示容器是否准备好响应请求。如果就绪探测失败,端点控制器会从与 Pod 匹配的所有服务的端点中删除 Pod 的 IP 地址。初始延迟之前的默认就绪状态是失败。如果 Container 不提供就绪探测,则默认状态为 Success
如果就绪探测失败(并且 Pod 的 IP 地址从端点中删除),接下来会发生什么?是否会再次检查 Pod 的就绪探测条件?它会在初始延迟后再次检查吗?Pod 的 IP 地址是否有可能再次添加到端点(如果 Pod 在就绪探测失败后自我修复)?如果 Pod 痊愈了,它会再次接收流量吗?
spring-boot - 如何使用 Spring Actuator 配置 Kubernetes 启动探针
我已经阅读了一些文档,并弄清楚了如何使用 Actuator 设置就绪和活跃端点,就像这个一样。但我无法弄清楚如何为“启动”探针设置端点。
我的应用程序 yml:
我的部署配置:
执行器似乎没有提供“启动”探测的 URL,或者换句话说,http://localhost:8080/actuator/health/startup 不起作用。我该如何设置?
kubernetes - k8s readiness and liveness probes failing even though the endpoints are working
I've got a Next.js app which has 2 simple readiness
and liveness
endpoints with the following implementation:
I've created the endpoints as per the api routes docs. Also, I've got a /stats
basePath as per the docs here. So, the probes endpoints are at /stats/api/readiness
and /stats/api/liveness
.
When I build and run the app in a Docker container locally - the probe endpoints are accessible and returning 200 OK.
When I deploy the app to my k8s cluster, though, the probes fail. There's plenty of initialDelaySeconds
time, so that's not the cause.
I connect to the service
of the pod thru port-forward
and when the pod has just started, before it fails, I can hit the endpoint and it returns 200 OK. And a bit after it starts failing as usual.
I also tried accessing the failing pod thru a healthy pod:
And the same situation - in the beginning, while the pod hasn't failed yet, I get 200 OK on the curl command. And a bit after, it start failing.
The error on the probes that I get is:
Funny experiment - I tried putting a random, non-existent endpoint for the probes, and I get the same error. Which leads me to the thought that the probes fail because it cannot access the proper endpoints?
But then again, the endpoints are accessible for a period of time before the probes start failing. So, I have literally no idea why this is happening.
Here is my k8s deployment config for the probes:
Update
used curl -v
as requested from comments. The result is:
Then, ofcourse, once it starts failing, the result is:
kubernetes - 一个 pod 中多个容器的活跃度和就绪度探测
我想知道是否有可能对 pod 中的多个容器或仅对 pod 中的一个容器应用活性和就绪探测检查。我确实尝试使用多个容器进行检查,但容器 A 的探测检查失败,并且容器 B 在 pod 中通过。
spring-boot - 就绪探针发出停止服务错误
我已将 spring boot 更新为2.5.2
from 2.1.8.RELEASE
。在此之前,liveness 和 readiness 探测很好。现在更新 spring boot 后,我更新了我的应用程序属性文件:
我已分别为某些文档添加了最后 4 行。
在本地启动项目并从浏览器检查后:
http://localhost:8090/actuator/health/liveness
给{"status":"UP"}
但
http://localhost:8090/actuator/health/readiness
给出{"status":"OUT_OF_SERVICE"}
的是503状态。
在我的依赖项下的pom文件中:
postgresql - 由于“root”,Postgres 的就绪探测失败
我正在尝试将非常标准的SELECT 1
命令作为readiness
探测命令执行。我已经看过很多关于 Postgres、root 用户和 Kubernetes 的帖子,但我仍然无法正确理解,尽管这可能是微不足道的。
POSTGRES_USER=postgres
我在我的 Postgres StatefulSet 清单的配置清单中定义了 ENV 变量POSTGRES_DB=mydb
。
我知道我必须使用bash
来执行命令,因为 ENV 变量没有被插值。
以下所有命令都以FATAL失败,角色“root”
然后我执行命令以检查是否bash
获取 ENV 变量-> NO
但:
成功,没有 bash 但没有 ENV 变量。
最后,直接设置值而不使用bash
with psql -U postgres -c 'SELECT 1;
(without bash
) 作为readiness
探测命令也会失败:Postgres 已启动,但测试返回“Readiness probe failed”。
我直接用了:
有点迷茫,有什么建议吗?