首页 > 解决方案 > 即使在不同的主机中,相同的数据量也附加到多个容器

问题描述

多亏了flocker ,我能够将docker卷绑定到群中的特定容器,但是现在我将拥有我的服务器的多个副本(以进行负载平衡),因此我正在搜索将相同数据卷绑定到的东西docker 服务的多个副本。在植绒文件中,我发现

多个容器可以访问同一个卷吗?Flocker 通过创建卷和容器的 1 对 1 关系来工作。这意味着您可以为一个容器拥有多个卷,并且这些卷将始终跟随该容器。

Flocker 将卷附加到单个代理主机(docker 主机),并且一次只能是一个主机,因为 Flocker 附加基于块的存储。不同主机上的节点不能访问同一个卷,因为它一次只能附加到一个节点。

如果同一主机上的多个容器想要使用同一个卷,它们可以,但要小心,因为多个容器访问同一个存储卷可能会导致损坏。

我可以将单个卷附加到多个主机吗?目前还没有,需要集成多附加后端(如只读模式下的 GCE)或类似 NFS 的后端(如存储)或分布式文件系统(如 GlusterFS)的支持。Flocker 主要关注一次将卷附加到单个节点的块存储用例。

所以我认为用flocker做我想做的事是不可能的。如果可以帮助我,我可以使用不同的编排器(k8s),即使我没有这方面的经验。

我不会使用 NAS/NFS 或任何分布式文件系统。

有什么建议么?

提前致谢。

标签: dockerkubernetesdocker-swarmflocker

解决方案


在 k8s 中,如果支持卷的技术支持共享访问,您可以同时将卷挂载到不同的 Pod。

Kubernetes 持久卷中所述:

访问模式 PersistentVolume 可以通过资源提供者支持的任何方式安装在主机上。如下所示,提供者将具有不同的功能,并且每个 PV 的访问模式都设置为该特定卷支持的特定模式。例如,NFS 可以支持多个读/写客户端,但特定的 NFS PV 可能在服务器上导出为只读。每个 PV 都有自己的一组访问模式来描述特定 PV 的功能。

访问模式有:

  • ReadWriteOnce – 卷可以由单个节点以读写方式挂载
  • ReadOnlyMany – 卷可以被许多节点以只读方式挂载
  • ReadWriteMany – 卷可以被许多节点以读写方式挂载

支持 ReadOnlyMany 模式的卷类型:

  • 天蓝文件
  • CephFS
  • 足球俱乐部
  • 弹性卷
  • GCEPersistentDisk
  • Glusterfs
  • iSCSI
  • 夸字节
  • NFS
  • RBD
  • 规模IO

支持 ReadWriteMany 模式的卷类型:

  • 天蓝文件
  • CephFS
  • Glusterfs
  • 夸字节
  • RBD
  • Portworx卷
  • VsphereVolume(在 pod 并置时工作)

推荐阅读