【问题标题】:How to ensure readiness of container replicas in Kubernetes?如何确保 Kubernetes 中容器副本的就绪性?
【发布时间】:2019-03-04 19:43:28
【问题描述】:

我是 Kubernetes 新手,我想知道是否可以让容器副本一次启动一个?换句话说,如果我部署一个 compose 文件,产生一个包含 N 个副本的容器或 pod 配置,是否有可能(如果可以的话)确保每个副本在启动之前等待前一个副本准备好?

我阅读了有关就绪探针的信息,但如果我理解正确,它们会确保 pod 排序而不是副本,还是我误解了?

谢谢

【问题讨论】:

    标签: docker kubernetes


    【解决方案1】:

    A StatefulSet has this property:给定三个副本,在第一个副本运行并准备好之前,第二个副本不会启动。

    (通常“replica”和“pod”的含义相同。如果您创建一个具有 3 个副本的 Deployment 或 StatefulSet,并在完成后运行 kubectl get pods,您应该会看到 3 个 pod。)

    如果您使用 Kompose 进行部署,则至少有 a hint that it doesn't support StatefulSets;你需要为此编写原生 Kubernetes YAML。

    【讨论】:

      【解决方案2】:

      Kubernetes 有 StatefulSet 对象来管理 Pod 的一组副本。 StatefulSet 与默认 Deployment 的不同之处在于它提供了有关这些 Pod 的顺序和唯一性的保证。来自the documentation

      对于具有 N 个副本的 StatefulSet,在部署 Pod 时,它们是按顺序创建的,从 {0..N-1} 开始。

      例如,see this blog 介绍如何为 ElasticSearch 设置 StatefulSet。

      【讨论】:

      • 嗨@Blokje5 感谢您的回复,但我不明白这如何回答我的问题。你可以说得更详细点吗?谢谢
      • 您说的是对 Pod 的滚动更新,也就是说,您想一次用 x 个副本更新一组容器?还是我误解了你的问题?
      • 只是一个简单的部署
      • 您想在您的复制品推出时保证订购?即副本 2 需要在副本 1 完成后立即开始运行?这是你的问题吗?
      • 明确一点:i) compose 文件定义了一个应用程序,其副本字段设置为例如3; ii) 我部署了我的撰写文件; iii) 副本 2 在启动之前等待副本 1 启动并运行; iv) 副本 3 等待副本 2 启动并运行。
      猜你喜欢
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 2019-07-01
      • 1970-01-01
      • 2018-01-30
      • 2019-03-28
      • 2021-01-21
      • 2019-07-22
      相关资源
      最近更新 更多