본문 바로가기
카테고리 없음

[kubernetes] 쿠버네티스 에서 NFS서버 사용하기(nfs기반 디스크)

by 코드몽규 2022. 4. 17.
반응형

지난 시간에 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>"로 설정해주었다. 복붙해서 쓰면된다.)

 

#apt update

#apt install nfs-kernel-server

 

#systemctl status nfs-server

-설치된 nfs-server를 확인해보자 


  • 공유할 폴더 만들기

#mkdir 파일명

- 서버가 설치된 워커노드에 디렉터리를 만들어준다.

(서버에 디렉터리를만들어서 클라이언트들이 공유할 수 있는 폴더를 만드는 과정)

#vi /etc/exports 

- /etc/export는 nfs서버의 환경설정 파일이다.

- cat /etc/exports 명령어를 통해 access control list for filesystems~~~~to nfs clients라는 설명을 볼 수있다. 설명에 따라 nfs client에 export될 파일 시스템을 설정해주는 파일이다. 

cat /etc/exports

- 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-정적 프로비저닝 실습을 포스팅 해보겠다.

 

반응형

댓글