지난 시간에 NFS(Network File system)서버에 대해 알아보았다.
이번 포스팅에서는 NFS서버를 활용한 디스크 (PD)를 기반으로한 PV/PVC를 구축해보겠다.
실습환경
*GKE(Google Kubernetes Engine)환경을 사용한다.
그럼 먼저 실습환경을 구성해보자
실습환경 구축하기
1)GCP에 가입하면 300달러상당의 크레딧을 준다. 이것을 이용해서 GCP의 서비스를 사용할 수 있다.
회원가입 -> GKE(Google Kubernetes Engine) -> 만들기 -> GKE standard 구성을 선택한다.
(*밑에 그림의 cluster-1은 미리 설치해둔것이다. 원래는 아무런 클러스터도 없는 게 정상이다.)
2) 클러스터 기본사항을 건드리지 않는다. 대신 왼쪽의 노드 풀 -> default pool을 선택해준다.
* default-pool -> 노드 -> 이미지 유형 : containerd를 포함한 ubuntu 선택
* 머신구성 -> 기본으로 유지
* cpu 플랫폼 및 GPU -> 부팅 디스크 크기 100GB -> 50GB로 설정( 많은 필요가 없다. )
* 만들기 클릭
3) 생성된 클러스터와 인스턴스(Compute engine -> vm인스턴스에서 확인가능)를 확인해보자!
* 클러스터 -> 쿠버네티스를 관리할 수 있는 환경 생성
* 인스턴스 -> 쿠버네티스에서 워커 노드를 담당하는 인스턴스 생성
4) 클러스터와 워커노드(인스터스)에 접속하기
*클러스터 접속하기
- 우측 더보기를 눌러주고 연결을 선택한다.
- 클러스터에 연결 -> 명령줄 액세스 방식을 선택한다.(cloud shell에서 실행 선택)
- pwd , id 명령어로 확인해보기
*워커 노드에 연결하기
- 인스턴스 연결 -> 브라우저 창에서 열기 클릭 -> 성공
여기까지 했다면 실습환경은 구성은 모두 끝났다.
NFS서버 설치하기
우리는 총 3개의 워커노드(인스턴스)를 갖고 있는걸 위에서 확인했다.
3개 중 1개는 NFS서버를 설치하여 서버로 사용할 것이고 나머지 2개는 NFS클라이언트를 설치하여 클라이언트로 사용할 것이다.
워커노드1에 NFS-server 설치하기
- NFS서버 설치하기
* 3개중 제일 첫 번째 워커노드 선택 -> SSH연결 선택 -> 브라우저창에서 열기
* sudo -i 명령어로 root 계정에서 실습하기
* (명령 프롬프트가 너무 길어서 PS1="NFS>"로 설정해주었다. 복붙해서 쓰면된다.)
- 공유할 폴더 만들기
#mkdir 파일명
- 서버가 설치된 워커노드에 디렉터리를 만들어준다.
(서버에 디렉터리를만들어서 클라이언트들이 공유할 수 있는 폴더를 만드는 과정)
#vi /etc/exports
- /etc/export는 nfs서버의 환경설정 파일이다.
- cat /etc/exports 명령어를 통해 access control list for filesystems~~~~to nfs clients라는 설명을 볼 수있다. 설명에 따라 nfs client에 export될 파일 시스템을 설정해주는 파일이다.
- vi편집기를 통해 해당 파일을 열어주고 위에서 만든 폴더를 모두 추가해준다.
- 디렉터리를 추가할때는 공유 옵션을 설정해줄 수 있다.
공유옵션
ro : 읽기 권한 부여 한다.
rw : 읽기 쓰기 권한 부여 한다.
root_squash : 클라이언트에서 root를 서버상의 nobody 계정으로 매핑한다.
no_root_squash : 클라이언트 및 서버 모두 root 계정 사용한다.
sync : 파일시스템이 변경되면 즉시 동기화한다.
all_squash : root 계정이 아닌 다른 계정도 사용 할 수 있게 한다.
- 시스템 재시작 및 공유된 파일확인
#systemctl restart nfs-server
- 서버를 재시작 해준다. (변경부분 업데이트)
#systemctl enable nfs-server
- nfs서버가 상시 가동하도록 해준다.
#exportfs
-nfs서버에 익스포트된 디렉터리 정보를 관리해주는 명령어이다.
#showmount -e
-nfs서버에 마운트된 파일의 정보를 알려주는 명령어이다.
워커노드2에 NFS-client 설치하기
- NFS-client설치하기
- 꼭!!!! GCP VM인스턴스에서 NFS-server을 설치한 워커노드를 제외하고 나머지 2개의 인스턴트에 설치해준다!
- 헷갈리지않게 PS1="Client1>" 으로 명령어 프롬프트를 설정해주었다.
- 마찬가지로 sudo -i를 통해 root계정에서 작업해주자
#apt-get install -y nfs-common
(ubuntu용 명령어!! - 우리는 처음에 워커노드를 생성할때 ubuntu를 설정해주었으니 해당 명령어를 사용하면된다.)
- NFS관련 패키지를 설치해준다.
#yum -y install nfs-utils
(centOS용 명령어!! )
- NFS-client 호스트이름 / ip 확인하기 & NFS-server 호스트 이름 / ip 확인하기
#hostname
#hostname --ip
- clinet1의 hostname과 server의 hostname을 비교해보고 ip도 비교해본다.
- client1의 ip주소 = 10.128.0.41
- server의 ip주소 = 10.128.0.39
#showmount -e <server 의 ip>
-다시한번 서버 워커노드에서 공유된 디렉터리 목록을 확인해준다.
- NFS 공유 디렉터리에 마운트(연결)할 디렉터리 생성 및 서버의 공유 디렉터리와 마운트
- 헷갈리지 말자 지금 Client1의 워커노드에서 작업중이다!
#mount -t nfs 서버IP:/서버공유디렉터리 /클라이언트의디렉터리
#touch /클라이언트에서 마운트한 디렉터리/tesfile1
-클라이언트1에서 마운트한 client1의 폴더에 testfile1 하나를 생성해준다 .
#ls /서버공유디렉터리
- nfs 서버에서 확인한다.
- nfs서버로 돌아와서 ls /서버공유디렉터리 를 통해 리스트를 확인해 보았다. client1에서 만든 testfile1이 공유된것을 확인할 수 있다.
여기까지 GKE를 활용해서 쿠버네티스 환경을 만들고 NFS server, NFS Client를 만들어
client가 nfs server의 볼륨을 공유할 수 있도록 해주었다.
다음 포스팅에서는 PersistentVolume(PV)와 PersistentVolumeClaim(PVC)를 이용한
NFS-정적 프로비저닝 실습을 포스팅 해보겠다.
댓글