Kubernetes Readiness探测失败错误

时间:2018-01-31 11:20:47

标签: docker minikube kubernetes-helm

使用helm upgrade命令在http上运行我的容器时,出现此错误:

  

'准​​备情况调查失败:获取http://172.17.0.6:3003/:拨打tcp   172.17.0.6:3003:getsockopt:连接被拒绝'。

我的docker镜像用于node.js应用程序,我正在尝试通过minikube进行管理。

6 个答案:

答案 0 :(得分:4)

这可以通过增加准备情况检查的初始延迟来解决。实际上,由于与数据库的连接占用的时间超过初始延迟,因此准备情况探测失败了。

答案 1 :(得分:2)

对于此处的其他任何人,如果使用掌舵来管理部署,则需要在initialDelaySecondsdeployments.yaml文件夹中的/templates模板中设置livenessProbe。如果探针无法连接(如我的情况),则livenessProbe将强制重新启动Pod。它没有给我的应用程序足够的时间来构建。

答案 2 :(得分:1)

将coredns映像从v1.5.0更新到当前版本v1.6.9,然后错误得到解决。

答案 3 :(得分:0)

头盔:

我建议在initialDelaySeconds文件中设置values.yaml值 并使用操作{{ .Values.initialDelaySeconds }}将值插入deployment.yaml模板中。

kubectl:

如果要在(部署,吊舱,复制集等)清单中保留5秒,只需添加initialDelaySeconds: 5并应用您的更改。

如果失败,请喝咖啡,然后开始查看容器中的日志

kubectl logs -h获取更多帮助

答案 4 :(得分:0)

我也有这个问题。通过使用我的 dockerfile 中设置的命令指定我的 docker 镜像在主机 0.0.0.0 上侦听来修复它:ENV HOST '0.0.0.0'

在部署到 Docker 以及可能的其他容器时,建议侦听 0.0.0.0,因为它们不会默认将映射端口暴露给 localhost。

答案 5 :(得分:0)

Helm 和 NodeJ:

对于我的 Node.js 应用程序,initialDelaySeconds 的 5 秒并不是准确的解决方案。

我使用来自@cloudnative 的 health-connect library 解决了这个问题。

只需按照说明 (README) 放置一些代码,导入包并设置应用以响应 livenessreadiness 检查请求。

并确保在 path - port 中为 livenessProbereadinessProbe 编写正确的 /templatesdeployment.yaml

  livenessProbe:
     initialDelaySeconds: {{ .Values.initialDelaySeconds }}
     httpGet:
       path: /live
       port: 3000
  readinessProbe:
     initialDelaySeconds: {{ .Values.initialDelaySeconds }}
     httpGet:
       path: /ready
       port: 3000

参考:https://developer.ibm.com/tutorials/health-checking-kubernetes-nodejs-application/