본문 바로가기

⭐ Kubernetes & EKS/PV & PVC

PV, PVC를 이용한 EBS 볼륨 사용하기

# PV와 PVC를 이용한 EBS 볼륨을 사용해보자.

PV와 PVC는 pod를 생성하는 yaml 관점에서 보면 EFS인지 EBS인지 상관 하지 않고 볼륨만 생성해주는 역할을 한다고 보면 된다.

예를들어 인프라를 관리하는 사람은 PV만 생성해서 두면, 개발자는 PVC를 생성하여 볼륨을 사용 할 수 있다.

그렇다면 볼륨을 생성하는 과정에 대해서 알아본다.

1. EBS 볼륨을 생성

- AWS 콘솔에서 EBS볼륨을 생성하고 해당 볼륨의 ID를 복사한다.

2. PV를 생성

- ebs-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: ebs-pv
spec:
  capacity:
    storage: 8Gi
  accessModes:
    - ReadWriteOnce 
  awsElasticBlockStore:
    fsType: ext4
    volumeID: <VOLUME_ID> 위에서 생성한 볼륨 id를 넣는다.

- ReadWriteOnce의 의미는 볼륨과 PV가 1:1 매칭이 된다고 이해하면 된다. ReadWriteMany 같은 경우 1:다수 가 된다고 볼 수 있다.

생생 결과는 아래와 같다.

seungkim:~/environment/pv-pvc-test $ kubectl get pv -A
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
ebs-pv   8Gi        RWO            Retain           Available                                   6s

2. PVC를 생성

- ebs-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-ebs-pvc
spec:
  storageClassName: ""
  accessModes:
    - ReadWriteOnce 
  resources:
    requests:
      storage: 8Gi

- 생성 결과는 아래와 같다.

seungkim:~/environment/pv-pvc-test $ kubectl get pvc -A
NAMESPACE   NAME         STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
default     my-ebs-pvc   Bound    ebs-pv   8Gi        RWO

3. Deployment를 활용한 pod를 생성 및 pv와 pvc를 연결

- ebs-deployment.yaml

apiVersion: v1
kind: Pod
metadata:
  name: ebs-mount-container
spec:
  containers:
    - name: ebs-mount-container
      image: busybox
      args: ["tail", "-f", "/dev/null"]
      volumeMounts:
        - name: ebs-pv
          mountPath: /mnt
  volumes:
    - name: ebs-pv
      persistentVolumeClaim:
        claimName: my-ebs-pvc

- 실행을 하면 정상적으로 pod가 생성이 되고, 볼륨과 연결이 가능하다.

전제 조건으로는 csi-driver가 설치 되어 있어야 한다.

 

- 끝 -

'⭐ Kubernetes & EKS > PV & PVC' 카테고리의 다른 글

PV와 PVC의 개념 및 실습  (0) 2021.09.11