在Kubernetes中的pod之间共享持久卷

时间:2017-09-07 16:10:00

标签: kubernetes kubectl

我们在Kubernetes有两个pod,为了对话我们会调用pod1和pod2。我在pod 1上创建了pv1和pvc1,它运行正常。 在我看来,文档对这种情况不够清楚,或者我无法找到合适的wiki。 如何从pod2访问pv1和pc1?

2 个答案:

答案 0 :(得分:1)

来自k8s文档:

  

PersistentVolume(PV)是群集中的一块存储空间   已由管理员配置。它是一种资源   集群就像一个节点是一个集群资源。 PV是体积插件   与Volumes一样,但具有独立于任何单个pod的生命周期   使用PV。此API对象捕获详细信息   存储的实现,可以是NFS,iSCSI或者   特定于云提供商的存储系统。

     

PersistentVolumeClaim(PVC)是用户存储的请求。   它类似于一个吊舱。 Pod消耗节点资源并消耗PVC   光伏资源。 Pod可以请求特定级别的资源(CPU和   记忆)。声明可以请求特定的大小和访问模式(例如,可以   一次读/写或多次只读即可安装。

意味着在问题中描绘的场景中,如果PodA_deployment.yaml创建了卷声明:

volumeMounts:
- name: myapp-data-pv-1
  mountPath: /home/myappdata/mystuff

然后PodB将能够安装pv,如下所示:

volumes:
   - name: myapp-data-pv-1
     persistentVolumeClaim:
       claimName: myapp-data-pvc-1
在PodB_deployment.yaml中

。 虽然它很清楚,一旦你理解它就有意义,文档可以更好地解释它。

答案 1 :(得分:1)

在多个节点上访问相同的PV看起来并不容易。首先,根据您的用例,在下面需要一个支持文件系统来创建此共享存储。 EFS / NFS / GlusterFS应该是理想的选择,而kubernetes卷插件支持其中的大多数。另外,如果您正在寻找多重写入架构,则需要具有具有正确访问模式的PVC,例如:ReadWriteMany。再次,在微服务世界中,您应该尝试避免这种用例或找到更好的替代方法,以使您的设计可扩展,无状态且可能扩展。 https://12factor.net/强调了其中大多数原则。