
CoreOS クラスターで、たとえば NFS を使用してディスク領域を共有することは可能ですか? 可能であれば、どのように実行しますか? (たとえば、1 つのノードに大量のディスク領域がある場合)。これは、たとえば各ノードが独自の Docker イメージ ライブラリをダウンロードして保存する必要を回避したり、ノード間でホーム ディレクトリ領域を共有したりするのに役立ちます。
nfs-kernel-server
CoreOS には追加のソフトウェアを直接インストールできないため、NFS をインストールするためだけのコンテナ (たとえば、Ubuntu ベースのコンテナ)を作成する必要があると思います。
これが可能かどうかは分かりませんが、CoreOS クラスター全体でディスク領域を共有する確立された方法があることを期待しています (結局のところ、クラスターではこれが一般的な期待のようですし、以下の私の提案は必要以上に複雑かもしれません)。フィードバックの材料として、これまでのところ私が考えていることをここに示します。
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
(そしておそらくこれを永続化するには CMD を呼び出しなどに置き換える必要があるかもしれませsupervisord
んが、その考えは理解できます)
では、このコンテナを実行するときにボリュームを適切にリンクするにはどうすればよいでしょうか? CoreOS ホストからどのボリュームをリンクすればよいでしょうか? または、--net="host"
クライアントを使用できるようにするために何かを追加する必要がありますか?
docker run -v /home:/home nfs-server
クライアント側をどのように実装すればよいのか、私にはまったくわかりません。 を提供するためのコンテナが必要でnfs-common
、他のコンテナがそのリソースを共有する方法 (おそらく の適切な使用法--volumes-from
) を何らかの方法で見つけ出す必要があるからです。 これをどのように進めるか、なぜそれが不可能なのか、このユースケースに対処するためのより良い代替手段があるかどうかの概要を知りたいです。 よろしくお願いします!
答え1
CoreOS ホストに NFS ボリュームをマウントできるはずです。CoreOS からファイルシステムをエクスポートするためのユーザーランド ツールがない場合は、コマンドによって提供される Fedora ツールボックス コンテナーを使用できますtoolbox
。
答え2
rpc-mountd
systemd サービスを開始し、ファイルnfsd
で nfs エクスポートを定義する必要があります。/etc/exports
の例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 上の NFS を介したディスク共有の詳細については、次のリンクを参照してください。