
CoreOS 클러스터가 NFS 등을 사용하여 디스크 공간을 공유할 수 있습니까? 그렇다면 어떻게 해야 할까요? (예: 하나의 노드에 많은 디스크 공간이 있는 시나리오) 이는 예를 들어 각 노드가 고유한 도커 이미지 라이브러리를 다운로드하여 저장하지 않도록 하거나 노드 간에 홈 디렉터리 공간을 공유하는 데 유용합니다.
CoreOS에 직접 추가 소프트웨어를 설치할 수 없기 때문에 NFS를 설치하기 위해 컨테이너를 작성해야 한다고 생각합니다(예: nfs-kernel-server
Ubuntu 기반 컨테이너).
이것이 가능한지는 모르겠지만 CoreOS 클러스터에서 디스크 공간을 공유하는 확립된 방법이 있기를 바랍니다. (결국 이는 클러스터에 대한 일반적인 기대처럼 보이며 아래 제안은 필요 이상으로 복잡할 수도 있습니다.) . 피드백을 위한 자료를 제공하기 위해 지금까지 제가 생각한 내용은 다음과 같습니다.
NFS의 호스트 측을 제공하는 것은 합리적인 도커 작업처럼 보입니다. 예를 들어 다음과 같은 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
서비스를 시작 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를 통한 디스크 공유에 대한 자세한 내용을 확인할 수 있습니다.