问题标签 [livenessprobe]
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 集群中的 Liveness 和 Readiness 探测失败 - 在应用程序中启用了 istio 代理 sidecar 注入
以下是我的应用程序 helm 图表中的探针配置
当我部署时,在 deployment.yaml
但在 pod.yaml 中,它是
然后在 pod 中给出以下错误:
`Readiness probe failed: Get http://IP:15021/healthz/ready: dial tcp IP:15021: connect: connection denied spec.containers{istio-proxy}
警告 Liveness probe failed: Get http://localhost:15020/app-health/app-name/livez: dial tcp 127.0.0.1:15020: connect: connection denied spec.containers{app-name}
警告准备探测失败:获取 http://localhost:15020/app-health/app-name/readyz: dial tcp 127.0.0.1:15020: connect: connection denied spec.containers{app-name} `
为什么 pod 使用不同的路径和端口进行探测,但未能给出上述错误。有人可以帮我解决缺少的问题吗?
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 启动时才需要它们。
是否有与此相关的最佳实践?
kubernetes - Kubernetes liveness probe httpGet schema 无法正常工作
我正在 kubernetes 上部署一些 Web 应用程序,我想为此应用程序设置活动探测。当我使用 liveness probe 配置我的部署时,kubelet 会启动健康检查。我使用方案“HTTP”参数定义了 httpGet,但 kubelet 随机使用 https 模式。
这是我的活性探针配置:
这是 kubelet 的结果:
kubectl 描述 pod greenlight-7877dc58b7-6s78l
输出:
警告 Unhealthy 31s (x4 over 46s) kubelet Liveness probe failed: Get "https://10.244.4.182/": dial tcp 10.244.4.182:443: connect: connection denied
Kubernetes 版本:v1.19.9
感谢您的帮助!
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。
提前致谢。
apache - 您能否通过专用连接为 Kubernetes 活性端点提供服务,这些连接在常规连接池耗尽时可用?
当我们的 POD 耗尽并且可能需要扩展时,Kubernetes 会将这种耗尽与死亡混淆并重新启动我们的 POD:s。当然,这会产生相反的效果,剩余的 POD:s 负载会更大……所以我的问题来了,你能否通过专用的、未耗尽的连接来为 Kubernetes 和 LB 的活跃度和就绪度端点提供服务?
我们有一个在 Kubernetes 中运行的旧系统,一个 Apache httpd 和一个捆绑在每个 POD 中的 tomcat。负载均衡由 Kubernetes 在不同的 POD:s 之间完成,而不是在 httpd 中。Httpd 正在运行 mpm_event+mod_jk 并且有一个到 Tomcat 的 AJP 1.3 连接。Httpd 还从没有 Tomcat 的磁盘中提供一些静态资源。当出现故障时,我们很快就会用完 AJP 线程和 HTTPD 工作线程。
基本上我们看到的是这样的:
- 应用程序无法连接到某些资源。某些网络、Memcached、DB 或其他服务开始超时。等待超时会导致线程的寿命很长,我们很快就会用完它们。
- Readiness/Liveness probs 没有及时响应,Kubernetes 重新启动 POD(或者,在我们移除 liveness probes 后,使用 readiness 的 LB 将它们从负载均衡中移除,效果基本相同)。
- 根本原因问题已解决(以某种方式),但现在负载平衡中剩下的(非)POD 太少了。当 POD 返回时,它会受到所有流量的影响,耗尽,并从 LB 中删除,因为它再次在就绪探测上太慢了。
- 我们现在发现很难摆脱这种状态......(到目前为止它发生了两次,我们基本上不得不切断 Cloudflare WAF 上的所有流量,直到重新启动足够的 POD:s/在负载平衡中......)
我对解决方案的想法:
我想我可以从 httpd->tomcat 为 liveness 和 readiness 端点打开一个优先的快速通道,见下文。但是,我可以以某种方式将 httpd (mpm_event) 中的工作人员专用于这些端点吗?否则,当我用完 httpd 工作人员时,我猜我的快车道不会提供任何帮助。或者关于如何确保只要tomcat还活着,即使它已经用尽,我们总是可以服务于活跃/准备就绪的任何其他想法?
这是我当前的 httpd worker 设置:
也许只需要一个工作人员来分析请求并找出 URI ... :-/ 或者我可以以某种方式将一个特定的工作人员池专用于活跃性和准备工作吗?
我的 httpd->tomcat 快速通道:
我正在玩弄与 tomcat 的第二个 AJP 连接,专门用于准备就绪和活跃度端点。乍一看,它似乎工作。
在 server.xml 中,我在端口 8008 上添加了一个连接器:
在我workers.properties
的(JkWorkersFile)中,我添加了新连接并将其命名为ajp13prio
:
在我的 httpd conf 中,我将探针配置为使用新的连接器:
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 中通过。
kubernetes - kubernetes liveness 探测失败但手动探测成功
我已经为 pod 中长时间运行的应用程序设置了一个活性探针。它在一天内失败了几次,导致 Pod 重新启动了几次。没有准备就绪探测。
进一步检查应用程序代码或 docker 镜像没有发现异常。所以我禁用了活性探测,并使用连接到网络的 PC 上的 python 脚本每 10 秒手动探测一次 NodePort 服务。手动探测虽然比活性探测更频繁、更严格,但成功并没有失败。每次ping大约持续200~400ms
手动探针与设置的活性探针大致相同
为什么它成功了,而 liveness 探测失败了?它是否表示 k8s 网络问题?
吊舱清单: