docker - 即使在不同的主机中,相同的数据量也附加到多个容器
问题描述
多亏了flocker ,我能够将docker卷绑定到群中的特定容器,但是现在我将拥有我的服务器的多个副本(以进行负载平衡),因此我正在搜索将相同数据卷绑定到的东西docker 服务的多个副本。在植绒文件中,我发现
多个容器可以访问同一个卷吗?Flocker 通过创建卷和容器的 1 对 1 关系来工作。这意味着您可以为一个容器拥有多个卷,并且这些卷将始终跟随该容器。
Flocker 将卷附加到单个代理主机(docker 主机),并且一次只能是一个主机,因为 Flocker 附加基于块的存储。不同主机上的节点不能访问同一个卷,因为它一次只能附加到一个节点。
如果同一主机上的多个容器想要使用同一个卷,它们可以,但要小心,因为多个容器访问同一个存储卷可能会导致损坏。
我可以将单个卷附加到多个主机吗?目前还没有,需要集成多附加后端(如只读模式下的 GCE)或类似 NFS 的后端(如存储)或分布式文件系统(如 GlusterFS)的支持。Flocker 主要关注一次将卷附加到单个节点的块存储用例。
所以我认为用flocker做我想做的事是不可能的。如果可以帮助我,我可以使用不同的编排器(k8s),即使我没有这方面的经验。
我不会使用 NAS/NFS 或任何分布式文件系统。
有什么建议么?
提前致谢。
解决方案
在 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 并置时工作)
推荐阅读
- python - 在带有主管的 Droplet 服务器上运行 Airflow 时出现问题
- kotlin - Kotlin:从末尾拆分字符串
- javascript - 如何更改 FormControl type="email" 的标准警报消息?
- amazon-web-services - AWS AppSync 订阅在网络状态更改期间未触发
- python - 尝试使用python连接到mongodb atlas时连接超时
- arrays - 如何跳过分隔字符串表数组中的隐藏行或列
- javascript - 如何在 javascript 中使用 html2pdf 从 div HTML 制作 PDF,但对于移动和 pc 视图相同
- c# - 在 Windows 10 上获取已连接的蓝牙设备列表
- mysql - Mysql匹配“相同”的电子邮件
- java - TemplateEngine 在模板文件夹中找不到文件