【发布时间】:2018-07-04 02:56:17
【问题描述】:
我们使用replica=2 部署了一个简单的 Node.js 应用程序。第一个 pod 出现并完美运行,第二个 pod 处于状态CrashLoopBackOff,因为它的就绪探测失败:
就绪探测失败:获取http://100.107.65.32:8000/:拨打tcp 100.107.65.32:8000:getsockopt:连接被拒绝
很遗憾,无论您是否指定--previous,日志都是空的。
容器或底层映像不会有问题,因为 pod 1 可以轻松运行。我找到了https://github.com/kubernetes/kubernetes/issues/62594,但它是开放的,并且提出的解决方案与其说是修复不如说是一种解决方法,特别是因为它没有解释任何关于为什么会发生这种情况的内容。
关于如何进行此操作的任何想法?
【问题讨论】:
-
你能检查它是否总是在同一个节点上失败吗?我们最近遇到了类似的问题,在不同的节点上重新启动失败的 pod 解决了它。它归结为本地 docker 映像存储库在某种程度上不一致,并且将新映像获取到该本地节点(故障始终在同一节点上)永久解决了该问题。 pod 日志等中也没有任何内容,并且在就绪探测上连接被拒绝错误...
-
您能否将 kubelet 日志与与第二个 pod 相关的事件共享?如果您手动将此 pod 作为单独的 pod 而不是部署的一部分运行,它会失败吗?你有足够的资源来运行一个 pod 吗? (CPU、RAM、节点上的磁盘空间)如果将部署的映像更改为简单可靠的东西会发生什么,例如nginx?
-
感谢您的所有提示。实际上,吊舱只是在花时间启动,而探测启动得太早,此时吊舱还没有准备好。增加初始延迟有帮助。
标签: kubernetes