如何使ebs pvc从可在AWS的kops群集中的不同节点上运行的不同pod访问

时间:2020-11-10 03:37:27

标签: amazon-web-services kubernetes kops

我正在尝试将部署从Minikube平台迁移到AWS中的KOPS集群。 在我的部署中,我有多个共享同一个pvc(持久卷声明)的Pod。

因此,当这些Pod在不同节点(不同实例)上运行时,从KOPS集群中的不同Pod访问ebs pvc会遇到问题。例如-我有3个Pod和2个节点。假设pod1在node1上运行,而pod2&pod3在node2上运行。将pod1附加到ebs pvc后,pod2&pod3将无法附加ebs pvc。

如何使ebs pvc可从AWS的kops集群中不同节点上运行的不同Pod访问?

volume.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: media-volume
spec:
  storageClassName: gp2-manual
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  awsElasticBlockStore:
    fsType: ext4
    volumeID: <volumeID>
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: media-volume-claim
spec:
  storageClassName: gp2-manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi

1 个答案:

答案 0 :(得分:1)

这里的快速答案是使用 EFS ReadWriteMany访问模式,而不是 EBS ,因为EBS只允许ReadWriteOnce {{3 }}。

但是正如@KKyaw Min Thu L在评论中提到的

当前,我正在使用EFS,但是老板更喜欢使用EBS而不是EFS。

为此,我建议使用access mode,这是@Harsh Manvar GlusterFS的建议。

正如您提到的那样,具有亲和力和节点选择器的EBS卷将停止可伸缩性,但是对于EBS,只有ReadWriteOnce可以工作。

分享我的经验,如果您在文件系统上执行许多操作并频繁推入和提取文件,那么使用EFS可能会很慢,这可能会降低应用程序性能。 EFS的运行速度很慢。

但是,您可以在后面使用GlusterF,以配置EBS卷。 GlusterFS还支持ReadWriteMany ,因为它是块存储(SSD),因此与EFS相比,速度更快。

在媒体上有here

GlusterFS 是基于连接器的存储系统,即gluster本身不提供存储,但是它连接到持久存储并外推存储以使其与K8容器无缝连接。

高级拓扑如下图所示,其中每个运行kubernetes节点的EC2实例都安装一个EBS卷。我们在下面有3个EC2,EBS,K8节点设置。我们使用3个EBS节点形成一个glusterfs集群。然后,我们可以在3个已安装的EBS体积中定义并切出几个持久体积(pv)PV1,PV2…PV5,从而使其对于K8吊舱的索取而言是同质且无缝的。

K8根据其在任何K8节点上的算法调度pod,并且pod可以通过持久卷声明来声明持久卷。持久卷声明(pvc)只是标识POD和持久卷之间的连接的标签。根据下图,POD C声明PV1,POD A声明PV4。

tutorial