【问题标题】:StatefulSet, ReplicaSet or DaemonSet. What is the best for a single Pod?StatefulSet、ReplicaSet 或 DaemonSet。单个 Pod 最好的是什么?
【发布时间】:2021-01-04 01:58:37
【问题描述】:

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

此 Pod 是有状态的(我使用卷 hostPath 来保存数据)并使用 nodeSelector 进行部署以使其始终保持在同一个节点上。

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

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

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

【问题讨论】:

    标签: kubernetes replicaset statefulset daemonset


    【解决方案1】:

    部署是管理一个或一组 Pod 的最常见选项。这些通常用于代替 ReplicaSet,因为它们更灵活并且在 ReplicaSet 中创建部署结果 - 请参阅 https://www.mirantis.com/blog/kubernetes-replication-controller-replica-set-and-deployments-understanding-replication-options/

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

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

    【讨论】:

    • StatefulSet 也是一个选项,尽管在这种情况下是不必要的。为了完整起见,请注意 this issue 使用带有主机路径挂载的 StatefulSets。
    • 感谢两位的回复。我同意,部署接缝对于单个 Pod 来说有点矫枉过正。我认为 StatefulSet 很适合这项工作,但 the issue 很烦人。
    猜你喜欢
    • 2018-01-20
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 2016-06-24
    相关资源
    最近更新 更多