본문 바로가기
INFRA/DevOps

[k8s] Persistent Volume & Persistent Volume Claim

by BTC_비웃는사나이 2023. 4. 3.

PV(Persistent Volume)

PVC(Persistent Volume Claim)

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

❗ 역할을 나눈다면, 스토리지 지식이 있는 쿠버네티스 클러스터 관리자 또는 스토리지 관리자는 PV 리소스를 생성해 스토리지와 연결해 두고, 파드 개발자는 PVC를 생성해 자신의 파드 및 관리자가 제공해 준 PV와 연결해 파드에서 볼륨을 사용할 수 있게 해줍니다.

 

PV(PersistentVolume) 생성

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

vi pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv1
spec:
  capacity:
    storage: 20Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteMany
  storageClassName: manual    #pv와 일치
  persistentVolumeReclaimPolicy: Delete
  nfs:
    server: 10.100.0.4
    path: /sharedir/k8s       #hello world라는 index.html 존재
kubectl apply -f pv.yaml
kubectl get persistentvolume -o wide
NAME   CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE   VOLUMEMODE
pv1    20Gi       RWX            Delete           Available           manual                  9s    Filesystem

 

PVC(PersistentVolumeClaim) 생성

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

  • pvc 생성 및 확인
 vi pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-web
spec:
  accessModes:
    - ReadWriteMany
  volumeMode: Filesystem
  resources:
    requests:
      storage: 20Gi
  storageClassName: "manual"
kubectl apply -f pvc.yaml
kubectl get persistentvolumeclaims -o wide
NAME      STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE   VOLUMEMODE
pvc-web   Bound    pv1      20Gi       RWX            manual         36s   Filesystem
kubectl get persistentvolume -o wide
NAME   CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE   VOLUMEMODE
pv1    20Gi       RWX            Delete           Bound    default/pvc-web   manual                  36m   Filesystem

 

Pod에서 PersistentVolumeClaim을 사용

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

  • Pod 생성 및 확인
vi pvc-pod-web.yaml
apiVersion: v1
kind: Pod
metadata:
  name: web
spec:
  containers:
  - image: nginx:1.14
    name: nginx
    volumeMounts:
    - name: html
      mountPath: /usr/share/nginx/html
  volumes:
  - name: html
    persistentVolumeClaim:
      claimName: pvc-web
kubectl apply -f pvc-pod-web.yaml
kubectl get pods -o wide
NAME   READY   STATUS    RESTARTS   AGE   IP          NODE                NOMINATED NODE   READINESS GATES
web    1/1     Running   0          17s   10.36.0.1   node1.example.com   <none>           <none>
curl 10.36.0.1
hello world

 

참고 : https://www.youtube.com/watch?v=4sNcSZYsrSo&list=PLApuRlvrZKohLYdvfX-UEFYTE7kfnnY36&index=6

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

[k8s] kube-proxy  (0) 2023.04.10
[K8s] Network  (0) 2023.04.10
[K8s] Storage NFS  (0) 2023.03.27
[k8s] Storage emptyDir 및 share volume  (0) 2023.03.20
[K8s] Storage 개념 및 hostPath  (0) 2023.03.14

댓글