본문 바로가기
쿠버네티스

[Kubernetes] 쿠버네티스 PV, PVC 생성 및 마운트

by 알 수 없는 사용자 2023. 8. 30.
반응형

PV와 PVC


정의

PV - Persistent Volume
PVC - Persistent Volume Claim

PV는 Container안 특정 폴더와 node의 특정폴더(물리디스크)를 마운트해주는 볼륨이다.
컨테이너가 삭제될 때 컨테이너안의 모든 폴더가 삭제되는데, 볼륨으로 마운트해주면 컨테이너가 삭제되어도 물리폴더는 삭제되지 않으므로 컨테이너를 다시 시작할때 마운트해줄수 있다.

PVC는 deployment에 PV를 마운트해줄때 사용하는것이며 연결고리 역할을 해준다.
그래서 pv를 생성해주고 pvc를 생성하여 binding 상태를 확인하고 deployment에서 pvc를 이용하여 볼륨을 마운트하는 형태로 사용한다.


yaml Example

  • pv
     apiVersion: v1
     kind: PersistentVolume
     metadata:
       name: testpv
     spec:
       capacity:
         storage: 2Gi
       volumeMode: Filesystem
       accessModes:
       - ReadWriteOnce
       storageClassName: manual
       persistentVolumeReclaimPolicy: Delete
       hostPath:
         path: /mnt/test # host 노드에 /mnt/test 노드에 마운트한다는 뜻이다. host노드는 컨테이너가 올라가있는 워커노드임
  • pvc
     apiVersion: v1
     kind: PersistentVolumeClaim
     metadata:
       name: testpvc
     spec:
       accessModes:
       - ReadWriteOnce
       volumeMode: Filesystem
       resources:
         requests:
           storage: 2Gi
       storageClassName: manual

위의 두 파일을 apply 먼저 시켜준 후 deploy.yaml 파일에 적용시켜 배포해준다.
nginx.yaml을 테스트로 적용시켜보겠다.

  • nginx.yaml
     apiVersion: apps/v1
     kind: Deployment
     metadata:
       name: nginx-deploy
     spec:
       selector:
         matchLabels:
           run: my-nginx
       replicas: 1
       template:
         metadata:
           labels:
             run: my-nginx
         spec:
           containers:
           - name: my-nginx-container
             image: nginx:1.9.1
             imagePullPolicy: Always
             volumeMounts:
               - name: pv
                 mountPath: /mnt
             ports:
             - containerPort: 80
           volumes:
             - name: pv
               persistentVolumeClaim:
                 claimName: testpvc
반응형