0

查看为 Docker Swarm 实现共享存储的多个选项,我可以看到其中大多数都需要一个特殊的 Docker 插件:

  • sshFs
  • CephFS
  • glusterFS
  • S3
  • 和别的

...但是在任何地方都没有提到的一件事就是将典型的块存储安装到所有运行 Docker Swarm 的 VPS 节点上。这个选项是不切实际的,因此在互联网上没有提到吗?我错过了什么吗?

我的想法如下:

  1. 创建一个典型的块存储(例如 DigitalOcean 或 Vultr 提供的一个)。
  2. 将其挂载到您的 VPS 文件系统。
  3. 使用“本地”驱动程序将该块存储中的文件夹挂载为 Docker 容器/Docker Worker 中的卷。

对我来说听起来最简单,最明显。为什么人们使用更复杂的设置,如 sshFs、CephFS 等?最重要的是,我描述的实现是否可行,如果可行,这样做的缺点是什么?

4

1 回答 1

0

与挂载存储相比,使用卷插件的主要优势在于能够动态创建存储卷,并将它们与命名空间相关联。

即,使用 docker 通过 compose 文件中的“volumes: data:”指令管理卷的存储,将为部署的每个命名堆栈创建一个卷。

使用本地驱动程序和挂载,您的 swarm 管理员现在需要确保没有两个堆栈正在尝试使用/mnt/data.

一旦你通过了这个障碍,一些平台就会限制可以安装块存储的主机数量。

还需要考虑安全角度 - 像这样映射的卷,对任何主机上的任何服务的妥协都可能将您的所有数据暴露给攻击者,其中卷插件将恰好暴露安装在该容器上的数据。

综上所述——docker swarm 很棒,而且当前的插件空间不足——如果安装块存储是获得可行的存储解决方案所需要的,我说这样做。但希望 CSI 支持将在年底前准备好。

于 2021-08-06T13:14:59.310 回答