클러스터 내 Pod 끼리 디스크를 공유야 하는 경우 사용되는 Persistent Volume 유형 중 NFS를 구성하는 방법에 대해서 살펴보자.
1. NFS 서버 설치
NFS 구축을 위해서는 먼저 서버를 설치해야 한다. 보통 별도 서버에 구축하는 것이 보편적이지만 편의상 클러스터 내 노드에 설치해 본다. 참고로 별도 서버에 구축하는 경우도 아래의 방법과 같다.
먼저 클러스터 노드와 각 노드의 아이피가 아래와 같다고 가정하고 진행한다. 별도의 서버에 진행하는 경우 해당 서버의 IP와 설치하는 클러스터 노드의 각 IP 를 참고해서 해당 아이피를 적용해 아래의 순서대로 진행하면 된다.
- master1 : 192.168.72.101
- worker1 : 192.168.72.102
- worker2 : 192.168.72.103
- 서버를 설치할 노드에서 root 계정으로 접속한다. (여기서는 master1 노드에 설치하기로 한다.)
user@master1: ~$ sudo -i
- NFS 서버를 위한 프로그램을 설치한다.
root@master1: ~# apt update && apt install nfs-common nfs-kernel-server portmap -y
- 공유 폴더를 생성하고 폴더 권한을 부여한다
root@master1: ~# mkdir /home/share/nfs -p root@master1: ~# chmod 777 /home/share/nfs/
- exports 파일을 열고 공유 폴더의 허용 host 및 권한을 설정한다.
root@master1: ~# vi /etc/exports <em># 이하 파일 내용...</em> ... ... <em># 파일의 제일 하단에 아래 내용을 추가한다.</em> /home/share/nfs 192.168.72.101(rw,sync,no_subtree_check,no_root_squash) 192.168.72.102(rw,sync,no_subtree_check,no_root_squash) 192.168.72.103(rw,sync,no_subtree_check,no_root_squash) ... <em># 저장</em> :wq
- nfs-server 를 재가동하고 nfs-server 상태를 확인한다.
root@master1: ~# service nfs-server restart root@master1: ~# systemctl status nfs-server.service ● nfs-server.service - NFS server and services Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled) Drop-In: /run/systemd/generator/nfs-server.service.d └─order-with-mounts.conf Active: active (exited) since Thu 2022-06-02 02:08:20 KST; 10h ago Process: 660 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS) Process: 664 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS) Main PID: 664 (code=exited, status=0/SUCCESS) CPU: 28ms
- mount 목록을 확인하여 정상 반영되었는지 체크한다.
root@master1: ~# showmount -e localhost Export list for localhost: /home/share/nfs 192.168.72.101,192.168.72.102,192.168.72.103
- 공유 폴더를 /mnt 로 마운트 시키고 정상적으로 마운트 되었는지 테스트한다.
root@master1: ~# mount -t nfs 192.168.72.102:/home/share/nfs /mnt root@master1: ~# echo test >> /home/share/nfs/test.txt root@master1: ~# cat /mnt/test.txt test root@master1: ~# rm /mnt/test.txt
- worker1, worker2 각 노드의 root 계정으로 접속한다.
user@worker1: ~$ sudo -i
- worker1, worker2 각 노드에 NFS 관련 패키지 프로그램을 설치한다.
root@worker1: ~# apt update && apt install -y nfs-common nfs-kernel-server portmap
- worker1, worker2 각 노드에서 mount 목록을 확인하여 정상 반영되었는지 확인한다.
root@worker1: ~# showmount -e 192.168.72.101 Export list for 192.168.72.101: /home/share/nfs 192.168.72.101,192.168.72.102,192.168.72.103