
CoreOS 叢集是否可以共用磁碟空間,例如使用 NFS?如果是這樣,人們會怎麼做呢? (例如,在一個節點有大量磁碟空間的情況下)。例如,這有助於避免每個節點必須下載並儲存自己的 docker 映像庫,或跨節點共用主目錄空間。
因為我們無法直接在 CoreOS 中安裝其他軟體,所以我想人們必須編寫一個容器才能安裝 NFS(例如nfs-kernel-server
在基於 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
填寫得當(也許我們需要用調用supervisord
或類似的命令替換 CMD 以使其持久化,但你明白了)
那麼,在運行這個容器時,我們如何正確連結卷呢?我們將從 CoreOS 主機連結哪個磁碟區?或者我需要添加一些東西--net="host"
來使客戶端可用?
docker run -v /home:/home nfs-server
我完全不清楚我們如何實現客戶端的事物,因為我們再次需要一個容器來提供nfs-common
,並以某種方式弄清楚其他容器如何共享該資源(也許是一些適當的使用--volumes-from
?)我'我很樂意看到如何解決這個問題的概述,或為什麼它不可能以及是否有更好的替代方案來解決這個用例。謝謝!
答案1
您應該能夠在 CoreOS 主機上掛載 NFS 磁碟區。如果沒有從 CoreOS 匯出檔案系統的使用者層工具,您可以使用指令提供的 Fedora 工具箱容器toolbox
。
答案2
您需要啟動systemd 服務rpc-mountd
並在檔案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 共享磁碟的更多資訊: