我们在Kubernetes有两个pod,为了对话我们会调用pod1和pod2。我在pod 1上创建了pv1和pvc1,它运行正常。 在我看来,文档对这种情况不够清楚,或者我无法找到合适的wiki。 如何从pod2访问pv1和pc1?
答案 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/强调了其中大多数原则。