Search
Duplicate
📒

[Kubernetes Infra] 05-3. NFS

상태
완료
수업
Kubernetes Infra
주제
4 more properties
참고

NFS 볼륨에 PV/PVC 만들기

NOTE
NFS는 네트워크를 통해 파일을 공유할 수 있도록 하는 분산 파일 시스템이다!
k8s에서 PV(NFS)를 활용한 구조도
PV/PVC 흐름도

NFS - 설치

NOTE
sudo apt-get update sudo apt-get install nfs-kernel-server mkdir /nfs_share chmod 777 /nfs_shared/* # /nfs_shared 디렉토리를 해당 CIDR 범위내의 시스템과 공유한다. # rw(읽기 권한), sync(변경사항 즉시 기록), no_root_squash(원격 root 접근해도 권한유지) echo '/nfs_shared 192.168.32.0/24(rw,sync,no_root_squash)' >> /etc/exports systemctl restart nfs-kernel-server systemctl enable nfs-kernel-server showmount -e
Bash
복사
NFS 서버 패키지 설치
lsblk sudo mkfs.ext4 /dev/sdb sudo mount /dev/sdb /mnt/nfs_shared echo "/mnt/nfs_share 192.168.32.0/2(rw,sync,no_root_squash,no_subtree_check)" | sudo tee -a /etc/exports sudo exportfs -arv sudo systemctl restart nfs-kernel-server
Bash
복사
만약 다른 디스크를 사용한다면 마운트 작업추가
sudo apt install nfs-common -y
Bash
복사
NFS 클라이언트 서버 패키지 설치

NFS - PV/PVC

NOTE
apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv spec: capacity: storage: 40Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain nfs: server: 192.168.32.10 path: /nfs_shared
YAML
복사
nfs-pv
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Mi
YAML
복사
nfs-pvc
apiVersion: apps/v1 kind: Deployment metadata: name: nfs-pvc-deploy spec: replicas: 4 selector: matchLabels: app: nfs-pvc-deploy template: metadata: labels: app: nfs-pvc-deploy spec: containers: - name: audit-trail image: sysnet4admin/audit-trail volumeMounts: - name: nfs-vol mountPath: /audit volumes: - name: nfs-vol persistentVolumeClaim: claimName: nfs-pvc
YAML
복사
nfs-deploy
k apply -f nfs-pv.yaml k apply -f nfs-pvc.yaml k apply -f nfs-pvc-deploy.yaml k exec -it nfs-pvc-deploy-7b6f4fcc94-bvv4j -- /bin/bash k expose deployment nfs-pvc-deploy --type=LoadBalancer --name=nfs-pvc-deploy-svc --port=80 curl http://192.168.32.10
Bash
복사
실행코드

NFS Client Provisioner 설정 (NFS SC)

NOTE
NFS Client Provisioner는 쿠버네티스 환경에서 자동으로 NFS기반의 PV를 프로비저닝하는 도구이다!
helm repo add nfs-subdir-external-provisioner \ https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/ helm pull nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --untar
Bash
복사
helm repo & pull
nfs: server: 192.168.32.20 # 수정 path: /mnt/nfs_shared # 수정 # For creating the StorageClass automatically: storageClass: # Set StorageClass as the default StorageClass # Ignored if storageClass.create is false defaultClass: true # 수정
Bash
복사
values.yaml 수정
kubectl patch storageclass nfs-storageclass -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
YAML
복사
기본 SC설정