본문 바로가기
App Programming/Kubernetes

[K8s] 스토리지 볼륨 (Storage Volume)

by goatlab 2024. 6. 9.
728x90
반응형
SMALL

스토리지 볼륨 (Storage Volume)

 

https://www.atatus.com/blog/kubernetes-storage-persistent-volumes-and-persistent-volume-claims/

 

볼륨은 스토리지 어레이에서 스토리지 공간을 관리하고 구성하는 데이터 컨테이너이다. 볼륨은 스토리지 어레이에서 사용할 수 있는 스토리지 용량에서 생성되며 시스템 리소스를 쉽게 구성 및 사용할 수 있다.

 

PersistentVolume

 

PV는 관리자가 프로비저닝하거나, Storage class를 사용해서 동적으로 프로비저닝한 클러스터의 스토리지이다.

 

sudo -i
cd /tmp/
mkdir k8spv
exit

 

NFS (Network File System)은 네트워크로 연결된 다른 컴퓨터의 파일 시스템을 내 컴퓨터로 마운트해서 상대방의 파일 시스템 일부를 자시 자신의 디렉토리처럼 사용하는 프로토콜이다. 쉽게 말해, 저장 공간을 공유할 수 있도록 해주는 서비스이다.

 

sudo apt install nfs-common
sudo apt install nfs-kernel-server
systemctl status nfs-server.service

 

다음 명령어로 클라이언트가 루트 권한 획득을 가능하게 한다.

 

sudo vim /etc/exports
/tmp/k8spv {프라이빗 IPv4 주소}(rw,no_root_squash)

sudo systemctl restart nfs-server
systemctl status nfs-server.service

 

매니페스트 파일 작성

 

vim volume-test04-1-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-01
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 100Mi
  persistentVolumeReclaimPolicy: Retain
  storageClassName: pv-test-01
  nfs:
    server: 172.31.2.228
    path: /tmp/k8spv

vim volume-test04-2-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    name: pvc-01
spec:
    accessModes:
    - ReadWriteOnce
    resources:
      requests:
        storage: 30Mi
    storageClassName: pv-test-01

vim volume-test04-3-pod.yml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-volume-04
spec:
  containers:
  - name: nginx-test01
    image: nginx:latest
    volumeMounts:
    - name: nfs-pv-01
      mountPath: /mount01
  volumes:
  - name: nfs-pv-01
    persistentVolumeClaim:
      claimName: pvc-01

 

매니페스트 파일 실행

 

kubectl apply -f volume-test04-1-pv.yml
kubectl get pv

kubectl apply -f volume-test04-2-pvc.yml
kubectl get pvc

kubectl apply -f volume-test04-3-pod.yml
kubectl get pod

kubectl exec -it nginx-volume-04 -- /bin/bash
cd mount01/
echo "hello nfs pv!" > ./nfs_pvtest.txt
cat nfs_pvtest.txt

cd /tmp/k8spv/
cat nfs_pvtest.txt

 

작업 디렉토리로 와서 실습 환경을 삭제한다.

 

kubectl delete -f volume-test04-3-pod.yml
kubectl delete -f volume-test04-2-pvc.yml
kubectl delete -f volume-test04-1-pv.yml
728x90
반응형
LIST

'App Programming > Kubernetes' 카테고리의 다른 글

[K8s] 헬름 (Helm)  (0) 2024.06.09
[K8s] 스테이트풀셋  (0) 2024.06.09
[K8s] 롤아웃  (0) 2024.06.08
[K8s] 매니페스트로 디플로이먼트 실행  (0) 2024.06.08
[K8s] 리플리카셋 조정  (0) 2024.06.08