使用helm upgrade命令在http
上运行我的容器时,出现此错误:
'准备情况调查失败:获取http://172.17.0.6:3003/:拨打tcp 172.17.0.6:3003:getsockopt:连接被拒绝'。
我的docker镜像用于node.js应用程序,我正在尝试通过minikube进行管理。
答案 0 :(得分:4)
这可以通过增加准备情况检查的初始延迟来解决。实际上,由于与数据库的连接占用的时间超过初始延迟,因此准备情况探测失败了。
答案 1 :(得分:2)
对于此处的其他任何人,如果使用掌舵来管理部署,则需要在initialDelaySeconds
下deployments.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) 放置一些代码,导入包并设置应用以响应 liveness
和 readiness
检查请求。
并确保在 path
- port
中为 livenessProbe
和 readinessProbe
编写正确的 /templates
和 deployment.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/