【问题标题】:Is it possible for running pods on kubernetes to share the same PVC在 kubernetes 上运行 pod 是否可以共享相同的 PVC
【发布时间】:2019-02-19 13:53:32
【问题描述】:

我目前设置了一个名为 minio-pvc 的 PVC,并基于 stable/minio chart 的值创建了一个部署

mode: standalone
replicas: 1
persistence:
  enabled: true
  existingClaim: minio-pvc

如果我增加副本数量会怎样?如果多个 pod 尝试同时写入 PVC,我是否会冒损坏数据的风险?

【问题讨论】:

    标签: kubernetes minio


    【解决方案1】:

    不要将部署用于有状态容器。而是使用 StatefulSets。 StatefulSets 专为运行有状态的容器(如数据库)而设计。它们用于持久化容器的状态。

    请注意,每个 pod 都将通过 pvc 绑定一个单独的持久卷。不可能有多个 pod 实例写入同一个 pv。希望我回答了你的问题。

    【讨论】:

    • 嗨,你能提供一个从部署到 statefulstes 的配置示例吗?我是 Kubernetes 的初学者
    【解决方案2】:

    如果您坚持使用 Deployments 而不是 StatefulSets,那么多个副本写入同一个 PVC 是不可行的,因为不能保证不同的副本被安排在同一个节点上,因此您可能有挂起的 pod 等待建立与卷的连接并失败。解决方案是选择一个特定节点并让所有副本在同一个节点上运行。

    运行以下命令并将标签分配给您的一个节点:

    kubectl label nodes <node-name> <label-key>=<label-value>
    

    假设我们选择label-keylabelKeylabel-valuenode1。然后,您可以继续将以下内容添加到您的 YAML 文件中,并将 pod 安排在同一节点上:

    api版本:应用程序/v1 种类:部署 元数据: 名称:我的应用 标签: 应用程序:我的应用程序 规格: 复制品:3 模板: 规格: 节点选择器: labelKey: 节点1 容器: ...

    【讨论】:

    • 这个答案与问题有什么关系?
    • @ArtemGolenyaev 他们在询问多个副本是否可以同时写入 PVC,如果您像上面那样启用 nodeSelector,这是可能的。我应该在答案中提到这一点,谢谢!
    • 这是一个完全错误的说法。这取决于他们使用的存储类型。特别是,如果使用一些云提供商。
    • 他们没有提到他们使用什么样的存储,所以我假设他们使用的是标准存储类型。您可能正在谈论访问模式以及使用 Deployment 与 StatefulSet 的问题。在这种情况下,如果策略是 ReadWriteOnce,您将不得不使用 StatefulSet 或上述解决方案。请参阅此link。 @ArtemGolenyaev
    猜你喜欢
    • 2018-03-26
    • 2019-06-18
    • 1970-01-01
    • 2020-01-10
    • 2019-02-28
    • 1970-01-01
    • 2019-11-03
    • 2012-08-17
    • 2020-05-31
    相关资源
    最近更新 更多