본문 바로가기
INFRA/DevOps

[K8s] Storage NFS

by BTC_프로틴 2023. 3. 27.
  • NFS 서버가 공유하고 있는 데이터 디렉토리를 worker node의 pod들이 access할 수 있도록 지원
  • 사전준비
    • NFS 서버는 application이 사용할 공유 디렉토리를 지원하고 있어야 함.
    • Worker node는 NFS 클라이언트가 되어서 NFS Server가 지원하는 공유 폴더에 접근할 수 있어야 함.
  • definition
volumes:
- name: webdata
  nfs:
    server: nfs.server.name
    path: /share/dir/path

<이미지 출처 : https://www.youtube.com/watch?v=yFqeoeR3l6Q&list=PLApuRlvrZKohLYdvfX-UEFYTE7kfnnY36&index=5 >

 

[Hands - on]

  • NFS 서버 설치 및 설정
    • 별도의 nfs 서버에서 진행
apt-get install -y nfs-common nfs-kernel-server rpcbind portmap
  • 공유할 디렉터리 설정
mkdir -p /sharedir/k8s
chmod 0777 /sharedir/k8s/
  • NFS 서버 설정 및 확인
    • ro - 읽기 전용
    • rw - 읽기와 쓰기 모두 가능
    • no_root_squash - 기본적으로 NFS 클라이언트에서 루트 사용자가 공유된 디렉토리를 사용한다 하여도 접근 사용자는 nfsnobody 권한을 갖는다. 이때 이 옵션 사용시 클라이언트의 루트와 서버의 루트 권한을 갖게 된다.(클라이언트에게 root 권한 부여)
    • root_squash - 클라이언트에게 nfsnobody 권한을 갖도록 설정
    • sync - 클라이언트가 파일 쓰기 완료 후 디스크 동기화를 진행
    • noaccess - 디렉토리를 접근하지 못하게 막음
    • insecure : 암호 인증을 하지 않음
vi /etc/exports
/sharedir/k8s *(rw,sync,no_root_squash,insecure)
exportfs -a
systemctl restart nfs-kernel-server
exportfs
/sharedir/k8s   <world>
  • index.html 파일 생성
cat > /sharedir/k8s/index.html << EOF
hello world
EOF
  • control-plane에 nfs client 설정
apt-get install -y nfs-common
  • nfs 사용할 pod 생성 및 확인
    • control-plane에서 진행
vi nfs.yaml
apiVersion: v1
kind: Pod
metadata:
  name: web-nfs
spec:
  containers:
  - image: nginx:1.14
    name: nginx
    volumeMounts:
    - name: html
      mountPath: /usr/share/nginx/html
  volumes:
  - name: html
    nfs:
      server: 10.100.0.4      #nfs ip
      path: /sharedir/k8s
kubectl apply -f nfs.yaml
kubectl get pods -o wide
NAME      READY   STATUS    RESTARTS   AGE   IP          NODE                NOMINATED NODE   READINESS GATES
web-nfs   1/1     Running   0          14m   10.47.0.1   node3.example.com   <none>           <none>
curl 10.47.0.1
hello world

 

 

참고 :

https://www.youtube.com/watch?v=yFqeoeR3l6Q&list=PLApuRlvrZKohLYdvfX-UEFYTE7kfnnY36&index=5

'INFRA > DevOps' 카테고리의 다른 글

[K8s] Network  (0) 2023.04.10
[k8s] Persistent Volume & Persistent Volume Claim  (0) 2023.04.03
[k8s] Storage emptyDir 및 share volume  (0) 2023.03.20
[K8s] Storage 개념 및 hostPath  (0) 2023.03.14
[k8s] 인증과 권한 관리 - 권한편  (0) 2023.03.06

댓글