Tools/Kubernetes

[Kubernetes기반 CI/CD환경설정 시리즈] 01. NFS 서버 구성

MOMOBOB 2021. 12. 15. 13:30
반응형

Kubernetes기반 CI/CD환경 설정해보며 정리했던 것들에 대해서 시리즈로 포스팅해 볼 예정입니다.

 

시리즈의 기본 환경은 4대의 VM(master1대, worker2대, NFS1대)의 노드 위에 쿠버네티스가 설치되어있는 환경에서 진행됩니다. 환경설정을 위해 아래의 이성미 강사님의 유튜브를 참고하시면 많은 도움될 것 같습니다.

 

https://www.youtube.com/watch?v=CKUv3oEI8Yo 

 

또한, 쿠버네티스 명령어와 파드, 서비스, 컨트롤러 등 API들이 무엇인지 정도는 이해하고 있다고 가정하고 진행 됩니다.

 

쿠버네티스에 대한 전반적인 지식이 없으신 분들은 기초 도서나 강의 등을 이용하여 학습 후 진행하시면 좋을 것 같습니다.

 

 

1.  NFS 서버 패키지 설치

  • Network File System(NFS)로 사용할 VMnfs 설치 (nfs를 사용할 vm에서 실행)
    • ubuntu : sudo apt install nfs-kernel-server
      • ngs-kernel-server 패키지를 설치하면 nfs구축에 필요한 nfs-common패키지, rpcbind 등을 포함하고 있어 따로 설치할 필요가 없음.
    • centos : yum -y install nfs-utils
  • 설치확인
    • dpkg -l | grep nfs
    • dpkg -l | grep rpc

 

2.  공유할 디렉터리 만들기

  • 디렉터리 생성 (nfs 노드에서)
    • mkdir /nfsdir
  • 공유파일 생성
    • cat > /nfsdir/nfstest
    • HELLO NFS 입력 (테스트를 위해서)
    • cat /nfsdir/nfstest (입력 확인)
  • 권한 수정
    • chmod 777 /nfsdir/*

 

3.  허용할 호스트 ip 확인

  • 허용할 VM 접속 후 IP 확인
    • hostname -I

 

4. exports 설정 

  • exports 수정
    • vi /etc/exports
  • 파일 제일 밑에 아래 추가
    • <경로> <위에서 확인한 IP>   
    • ex) /nfsdir 10.100.0.104

 

5.  방화벽 해제

  • systemctl stop firewalld

 

6.  NFS 서비스 시작

  • 서비스 시작
    • systemctl restart nfs-kernel-server
  • 상시 가동
    • systemctl enable nfs-kernel-server
  • 확인
    • showmount -e

 

7.  NFS 클라이언트 테스트

  • Worker Node에 nfs 사용을 위해 nfs-common 설치
    • sudo apt install nfs-common

 

반응형

 

8. 쿠버네티스 명령어를 통해 NFS를 통한 볼륨 마운트 테스트

 

nfs경로를 nginx파드 경로에 마운트됨을 확인하기

 

  • master node 접속
  • kubectl create -f pv.yaml
apiVersion: v1
kind: PersistentVolume 
metadata:
  name: my-pv 
spec:
  capacity: 
    storage: 5Gi
  volumeMode: Filesystem 
  accessModes:
    - ReadWriteOnce 
  persistentVolumeReclaimPolicy: Recycle 
  storageClassName: test
  nfs:
    path: /nfsdir
    server: 10.100.0.105 ##NFS서버ID
 
  • kubectl create -f pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim 
metadata:
  name: my-pvc 
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem 
  resources:
    requests: 
      storage: 3Gi
  storageClassName: test
 
  • kubectl create -f pod.yaml
apiVersion: v1 kind: Pod 
metadata:
  name: mypod 
spec:
  containers:
    - name: myfrontend
      image: nginx
      volumeMounts:
      - mountPath: "/var/www/html"
        name: mypd 
  volumes:
  - name: mypd 
    persistentVolumeClaim:
      claimName: my-pvc
  • nfs서버에서 /nfsdir에 아무 파일 추가 후 아래명령 실행
  • kubectl exec -it mypod -- bash
    • mypod내에 마운트한 경로인 /var/www/html 디렉토리를 확인해보면 추가된 것을 볼 수 있음.

 


Thank you!

 

 

반응형