【发布时间】:2019-03-04 19:43:28
【问题描述】:
我是 Kubernetes 新手,我想知道是否可以让容器副本一次启动一个?换句话说,如果我部署一个 compose 文件,产生一个包含 N 个副本的容器或 pod 配置,是否有可能(如果可以的话)确保每个副本在启动之前等待前一个副本准备好?
我阅读了有关就绪探针的信息,但如果我理解正确,它们会确保 pod 排序而不是副本,还是我误解了?
谢谢
【问题讨论】:
标签: docker kubernetes
我是 Kubernetes 新手,我想知道是否可以让容器副本一次启动一个?换句话说,如果我部署一个 compose 文件,产生一个包含 N 个副本的容器或 pod 配置,是否有可能(如果可以的话)确保每个副本在启动之前等待前一个副本准备好?
我阅读了有关就绪探针的信息,但如果我理解正确,它们会确保 pod 排序而不是副本,还是我误解了?
谢谢
【问题讨论】:
标签: docker kubernetes
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。
【讨论】:
Kubernetes 有 StatefulSet 对象来管理 Pod 的一组副本。 StatefulSet 与默认 Deployment 的不同之处在于它提供了有关这些 Pod 的顺序和唯一性的保证。来自the documentation:
对于具有 N 个副本的 StatefulSet,在部署 Pod 时,它们是按顺序创建的,从 {0..N-1} 开始。
例如,see this blog 介绍如何为 ElasticSearch 设置 StatefulSet。
【讨论】: