【问题标题】:How to create a volume in kubernetes that is not destroyed when the pods die?如何在 Kubernetes 中创建一个在 pod 死亡时不会被销毁的卷?
【发布时间】:2018-08-13 03:02:11
【问题描述】:

我有一个 docker 映像,在创建时应该检查卷是否为空,以防它应该使用一些数据对其进行初始化。 此保存的数据必须对具有相同或不同图像的其他 pod 保持可用。

你建议我做什么?

【问题讨论】:

    标签: kubernetes devops gcloud


    【解决方案1】:

    你有两个选择:

    1. 第一个选项是将 pod 挂载到节点中并将数据保存在节点中,以便在同一节点中创建新 pod 时,它可以访问同一卷(持久存储位置)。

    潜在问题:同一节点上的 2 个 pod 可能会为同一资源创建死锁(因此您必须管理资源)。

    1. 共享存储意味着创建一个存储,每个 pod 都将在同一个存储中声明存储。

    我强烈建议您在接下来的 55 分钟内观看以下网络研讨会: https://www.youtube.com/watch?v=n06kKYS6LZE

    【讨论】:

      【解决方案2】:

      我假设您使用 Kubernetes 中的部署对象创建您的 pod。您要研究的是 StatefulSet,与部署相反,它为重新创建的 pod 保留了一些身份方面,包括一定程度上的网络和存储。

      它是专门作为运行需要在 kube 集群中保持其状态的服务的一种方法(即运行数据库队列等)

      【讨论】:

        【解决方案3】:

        看看答案,创建一个 NFS 持久卷然后允许 pod 挂载 PV 不是更简单吗?

        您可以使用 writemany 来缓解死锁。

        apiVersion: v1
        kind: PersistentVolume
        metadata:
          name: shared-volume
        spec:
          capacity:
            storage: 1Gi
          volumeMode: Filesystem
          accessModes:
            - ReadWriteMany
          persistentVolumeReclaimPolicy: Retain
          storageClassName: ""
          mountOptions:
            - hard
            - nfsvers=4.1
          nfs:
            path: /tmp
            server: 172.17.0.2
        

        Persistent Volumes

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-31
          • 2021-04-17
          • 2013-02-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多