【问题标题】:Is it practical to mount a block storage to multiple VPS running Docker Swarm for shared storage?将块存储挂载到多个运行 Docker Swarm 的 VPS 以进行共享存储是否可行?
【发布时间】:2021-10-11 08:25:21
【问题描述】:
查看为 Docker Swarm 实现共享存储的多个选项,我可以看到它们中的大多数都需要一个特殊的 Docker 插件:
- sshFs
- CephFS
- glusterFS
- S3
- 及其他
...但是在任何地方都没有提到的一件事就是将一个典型的块存储安装到所有运行 Docker Swarm 的 VPS 节点上。这个选项是否不切实际,因此没有在 Internet 上提及?我错过了什么吗?
我的想法如下:
- 创建典型的块存储(例如 DigitalOcean 或 Vultr 提供的块存储)。
- 将其挂载到您的 VPS 文件系统。
- 使用“本地”驱动程序将该块存储中的文件夹作为卷装入 Docker 容器/Docker Worker。
对我来说听起来最简单、最明显。为什么人们使用更复杂的设置,如 sshFs、CephFS 等?最重要的是,我描述的实现是否可行,如果可行,这样做的缺点是什么?
【问题讨论】:
标签:
docker
docker-swarm
shared-state
block-storage
【解决方案1】:
相对于挂载存储使用卷插件的主要优势在于能够动态创建存储卷,并将它们与命名空间相关联。
即使用 docker 通过 compose 文件中的“volumes: data:”指令管理卷的存储,将为每个部署的命名堆栈创建一个卷。
使用本地驱动程序和挂载,您的 swarm 管理员现在需要确保没有两个堆栈尝试使用 /mnt/data。
一旦你通过了这个障碍,一些平台就会限制可以挂载块存储的主机数量。
还有安全角度需要考虑 - 像这样映射的卷,对任何主机上的任何服务的妥协都可能将您的所有数据暴露给攻击者,其中卷插件将完全暴露安装在该容器上的数据。
所有这些 - docker swarm 很棒,而当前的插件空间不足 - 如果安装块存储是获得可行的存储解决方案所需要的,我说这样做。但希望 CSI 支持将在年底前准备好。