클라우드 + DevOps/Kubernetes (k8s)

Kubernetes 쿠버네티스 실습 :: NFS 서버 구축

gamjadori 2024. 4. 16. 15:45
728x90

<Kubernetes 쿠버네티스 실습 :: NFS 서버 구축>

1. NFS 서버 설치

  • k8s-node1가 NFS 서버이고 k8s-node2 / k8s-node3가 NFS 클라이언트
  • k8s-node1에 SSH를 이용해 접속하여 NFS 서버 설정 진행
ubuntu@k8s-master:~$ ssh ubuntu@k8s-node1
  • NFS 서버를 설치 및 활성화
  • 서비스를 다시 시작하여 상태 확인
ubuntu@k8s-node1:~$ sudo apt -y install nfs-kernel-server
ubuntu@k8s-node1:~$ sudo systemctl enable --now nfs-server
ubuntu@k8s-node1:~$ sudo systemctl restart nfs-server
ubuntu@k8s-node1:~$ sudo systemctl status nfs-server

 

2. /etc/exports 파일 편집 및 적용

  • NFS 서버에서 공유할 디렉터리를 설정
ubuntu@k8s-node1:~$ sudo vi /etc/exports 

<exports 파일 내용 추가>

  • *: 모든 클라이언트에게 접근 허용
  • rw: 읽기/쓰기 권한 허용
  • sync: 클라이언트에서의 파일 작업이 서버에 즉시 반영
  • no_root_squash: 클라이언트가 root로 접근해도 해당 권한 제한하지 않음
  • no_subtree_check: 서브트리 검사 비활성화
  • insecure: 클라이언트가 포트 미리 지정을 통해 접근
맨 마지막에
/DATA1   *(rw,sync,no_root_squash,no_subtree_check,insecure)

<적용>

ubuntu@k8s-node1:~$ sudo systemctl restart nfs-server
ubuntu@k8s-node1:~$ sudo systemctl status nfs-server

 

3. NFS 클라이언트 설정 (k8s-node2 / k8s-node3)

  • 각 서버를 ssh ubuntu@k8s-node(숫자)를 이용해 원격 접속
  • NFS 클라이언트 설치: NFS 서버로부터 파일 시스템 마운트 가능
ubuntu@k8s-node2:~$ sudo apt -y install nfs-common
  • k8s-node1 서버의 /DATA1 디렉토리를 k8s-node2 서버의 /DATA1 디렉토리에 마운트
ubuntu@k8s-node2:~$ sudo mount -t nfs k8s-node1:/DATA1 /DATA1
ubuntu@k8s-node2:~$ df -h

<결과 확인>

  • k8s-node1: /DATA1가 나타나있는 것을 볼 수 있음

  • k8s-node2와 동일 과정
ubuntu@k8s-master:~$ ssh ubuntu@k8s-node3
ubuntu@k8s-node3:~$ sudo apt -y install nfs-common
ubuntu@k8s-node3:~$ sudo mount -t k8s-node1:/DATA1 /DATA1

 

4. NFS 포드 생성

<nfs-pod.yaml>

  • Pod 이름: nfs-nginx
  • 하나의 컨테이너 (nfs-container) 존재 / Nginx의 Alpine 기반 이미지 사용
  • nfs-vol이라는 이름의 볼륨 마운트 (/usr/share/nginx/html 디렉토리에 마운트)
apiVersion: v1
kind: Pod
metadata:
	name: nfs-nginx
spec:
	containers:
	- name: nfs-container
		image: nginx:1.25.3-alpine
		volumeMounts:
		- name: nfs-vol
			mountPath: /usr/share/nginx/html
	volumes:
	- name: nfs-vol
		nfs:
			path: /DATA1
			server: 192.168.56.101

<적용>

[PS C:\\Users\\admin\\Desktop\\k8s-pods> kubectl apply -f nfs-pod.yaml
pod/nfs-nginx created

<생성 확인>

A. kubectl po -o wide | grep nfs

B. curl

  • kubectl po로 확인한 IP 주소 사용
ubuntu@k8s-master:~$ curl 10.111.218.95