StatefulSet,ReplicaSet或DaemonSet。一个Pod最好是什么?

Nur*_*rza 2 pod replicaset kubernetes statefulset daemonset

我想在节点上部署一个Pod来承载我的服务(例如本示例的GitLab)。问题是:在节点故障(如重新启动)之后,将不会重新创建Pod。解决方案:使用StatefulSet,ReplicaSet或DaemonSet确保在节点故障后创建Pod。但是这种情况下最好的是什么?

此Pod是有状态的(我正在使用卷hostPath来保留数据),并已部署nodeSelector以始终将其保留在同一节点上。

这是示例的简单YAML文件:https : //pastebin.com/WNDYTqSG

它创建3个Pod(每个Pod一个Set),并带有一个卷以保持数据有状态。实际上,所有这些解决方案都能满足我的需求,但是我不知道这种情况下是否有最佳实践。

您能否帮助我在这些解决方案之间进行选择,以部署单个有状态Pod?

Rya*_*son 6

部署是管理Pod或Pod组的最常见选项。通常使用它们来代替ReplicaSet,因为它们更加灵活,并且可以在ReplicaSet中创建部署结果-请参见https://www.mirantis.com/blog/kubernetes-replication-controller-replica-set-and-deployments-understanding-复制选项/

如果您有多个Pod,并且每个Pod需要专用的持久性,或者您有多个Pod,并且Pod需要单独的名称,因为它们彼此相关(例如,一个是领导者),则只需要StatefulSet- https://stackoverflow.com/ a / 48006210/9705485

如果每个节点需要一个Pod /副本,则将使用DaemonSet