Kubernetes:readinessProbes 失败,但 livelinessProbe 使用相同的设置成功
Posted
技术标签:
【中文标题】Kubernetes:readinessProbes 失败,但 livelinessProbe 使用相同的设置成功【英文标题】:Kubernetes: readinessProbes failing but the livelinessProbe is succeeding with the same settings 【发布时间】:2019-03-13 15:36:00 【问题描述】:我为我的 pod 配置了一个 livelinessProbe,它在同一个 pod 和特定端口上的路径上执行 http-get。它完美地工作。但是,如果我使用相同的设置并配置 readinessProbe,它会失败并出现以下错误。
Readiness probe failed: wsarecv: read tcp :50578->:80: 现有连接被远程主机强行关闭
实际上,在某个点之后,我什至看到活力探测失败了。不知道为什么。活跃度探测成功应该表明 kube-dns 工作正常,我们能够从节点访问 pod。这是我的 pod 规范的 readinessProbe
readinessProbe:
httpGet:
path: /<path> # -> this works for livelinessProbe
port: 80
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 10
有没有人知道这里可能发生了什么。
【问题讨论】:
【参考方案1】:我认为这与kube-dns
或coredns
无关。最可能的原因是您的 pod/容器/应用程序崩溃或停止服务请求。
好像是这样的时间线:
Pod/容器出现。 Liveliness 探测成功。 一段时间过去了。 可能是应用崩溃或错误。 准备失败。 Liveliness 探测也失败了。有关该错误含义的更多信息: An existing connection was forcibly closed by the remote host
【讨论】:
感谢您的快速回复 :) 但是,如果没有准备就绪探测,livelinessprobe 永远不会失败。只有当我添加了 readinessProbe 时,事情才开始失败。 您是否检查过您的 pod 中的一切都运行良好? 如果我不在 pod 中设置 readinessProbe,一切运行正常。我可以调用我部署的服务,livelinessProbes 也成功了。但是一旦我设置了 readinessProbe,我也无法在该 pod 上运行我的服务。当我运行 wget 时,它一直在失败。 实际上,我的 readinessprobe 第一次大约需要 2-3 分钟。所以,我的超时时间是 180。但是,过了一会儿(大约 2 分钟),它失败并出现错误“wsarecv:现有连接被远程主机强行关闭” 这可能是您的应用程序的问题。我建议您进入 pod 并检查日志文件,或使用kubectl logs <pod-name>
检查标准输出日志以上是关于Kubernetes:readinessProbes 失败,但 livelinessProbe 使用相同的设置成功的主要内容,如果未能解决你的问题,请参考以下文章