【问题标题】:Kubernetes deployment with two replicas: One pod is running, the other fails具有两个副本的 Kubernetes 部署:一个 pod 正在运行,另一个失败
【发布时间】: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


【解决方案1】:

问题可以解决?

实际上,Pod 只是在花时间启动,而探针启动得太早,此时 Pod 还没有准备好。增加初始探测延迟会有所帮助。

【讨论】:

    猜你喜欢
    • 2019-04-14
    • 2021-05-07
    • 2021-03-25
    • 2017-06-22
    • 2018-12-16
    • 2019-02-03
    • 2019-04-23
    • 2020-07-27
    • 1970-01-01
    相关资源
    最近更新 更多