在CoreOS群集上通过NFS共享磁盘?

CoreOS群集可能共享磁盘空间,例如使用NFS? 如果是这样的话,怎么会这样呢? (例如,在一个节点有很多磁盘空间的情况下)。 这将有助于避免每个节点都必须下载并存储自己的docker映像库,或者跨节点共享主目录空间。

因为我们不能直接在CoreOS上安装额外的软件,所以我想我们只需要编写一个容器来安装NFS(例如,基于Ubuntu的容器上的nfs-kernel-server )。

我不知道这是否可行,但是我希望在CoreOS集群中共享磁盘空间有一些确定的方法(毕竟,对群集来说似乎是一种普遍的期望,也许我的build议比以前更为复杂) 。 只是提供一些反馈的饲料,这是我到目前为止的想法:

提供NFS的主机端似乎是一个合理的docker任务,例如我想像一个Dockerfile,如:

 FROM ubuntu:14.04 ENV CLIENT_IP 11.111.111.111 RUN apt-get update && apt-get install -y nfs-kernel-server supervisor RUN mkdir /var/nfs && chown nobody:nogroup /var/nfs RUN echo "/home ${CLIENT_IP}(rw,sync,no_root_squash,no_subtree_check)" >> /etc/exports RUN echo "/var/nfs ${CLIENT_IP}(rw,sync,no_subtree_check)" >> /etc/exports RUN exportfs -a CMD service nfs-kernel-server start 

CLIENT_IP被正确填写的地方(也许我们需要用一个叫supervisord或者类似的名字来代替这个CMD,使得这个持久化,但是你明白了)

那么,在运行这个容器的时候,我们应该如何恰当地链接一些卷 我们将从CoreOS主机链接哪个卷? 还是我需要添加像--net="host" ,使客户端可用?

 docker run -v /home:/home nfs-server 

我不清楚我们如何能够实现客户端的事情,因为我们再一次需要一个容器来提供nfs-common ,并以某种方式弄清楚其他容器如何共享这个资源(可能是一些适当的使用--volumes-from )?我很想看看如何去做这个概要,或者为什么这是不可能的,如果有更好的select来解决这个用例。 谢谢!

您应该能够在CoreOS主机上安装NFS卷。 如果没有用户级工具从CoreOS导出文件系统,则可以使用toolbox命令提供的Fedora工具箱容器。

您需要启动rpc-mountdnfsd systemd服务,并在/etc/exports文件中定义您的nfs导出。

cloud-config.yml

 coreos: units: - name: rpc-mountd.service command: start enable: true - name: nfsd.service command: start enable: truestrong text write_files: - path: /etc/exports permissions: '0644' # Change /network-raid with the dir you want to export over nfs content: /network-raid/ 192.168.1.0/24(rw,async,no_subtree_check,no_root_squash,fsid=0) 

我有这个设置使用CoreOS v723.3.0

您可以通过以下链接在CentOS上find有关通过NFS共享磁盘的更多信息: