2

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

这个 Pod 是有状态的(我使用卷hostPath来保存数据),并且部署使用nodeSelector它始终保持在同一个节点上。

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

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

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

4

1 回答 1

9

部署是管理一个 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/一个/48006210/9705485

当您希望每个节点有一个 Pod/副本时,将使用 DaemonSet

于 2019-01-18T17:51:15.633 回答