kubernets

 

이번 시간엔 쿠버네티스의 볼륨에 대해서 정리해본다.

 

간단하게 한 줄로 설명하자면

파드에서 저장소를 사용하고 나서 파드를 종료하면 파드가 사용 중인 저장소가 삭제되기 때문에, 영구적으로 데이터를 저장하기위해 사용한다.

 

볼륨은 단일 파드인 경우에는 가볍게 사용해도 좋지만,

여러개의 파드를 사용할 땐 영구 볼륨 (PV, Persistent Volume) 을 사용해서 관리하면 편하다고 한다.

영구 볼륨 클레임 (PVC, Persistent Volume Claim) 을 사용해서 할당한다.

 

PV 는 상위 개념, PVC 는 PV 보다는 하위 개념으로 쓰이는 것 같다.

 

PV 는 영구 볼륨, 클러스터 리소스를 뜻하고,

PVC 는 PV 에게 요청해서 리소스를 사용하고,

파드는 PVC 와 연결된다.

 

그냥 볼륨 사용 시 (emptyDir 을 설정해서 파드 삭제 시 볼륨도 삭제 되도록)

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: k8s.gcr.io/test-webserver
    name: test-container
    volumeMounts:
    - mountPath: /cache
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir: {}

 

PVC 사용 시 (링크)

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: myfrontend
      image: nginx
      volumeMounts:
      - mountPath: "/var/www/html"
        name: mypd
  volumes:
    - name: mypd
      persistentVolumeClaim:
        claimName: myclaim

 

위와 같은 예제 코드를 사용한다.

 

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-test
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /pv/log
  persistentVolumeReclaimPolicy: Retain

 

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-test
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

 

accessModes 가 같아야 정상적으로 Binding 이 된다.

그리고 persistentVolumeReclaimPolicy 가 Retain 이면 pvc 가 삭제되더라도, 해당 pvc 를 사용하는 파드가 삭제될 때 까지 삭제되지 않는다.

 

apiVersion: v1
kind: Pod
metadata:
  name: pod-test
spec:
  containers:
  ...
  volumes:
    - name: pvc-test
      persistentVolumeClaim:
        claimName: pvc-test

 

pvc 를 사용하는 파드는 이렇게 persistentVolumeClaim 을 선언하여 사용한다.

 

꽤 중요한 내용이었는지 생각보다 정리할 내용이 많았다.

그리고 여기까지가 CKAD 에서 다루는 내용이라고 한다(?) 이럴수가..

 

아직 해야될 게 많아보였는데.. 이것만 가지고도 실무에서 잘 쓸 수 있을지 의문이다.

개발자로써는 사실 여기까지만 알아도 충분히 사용할 순 있을 것 같다.

 

어찌되었든 마무리 하고, 나머지 Storage Classes 와 StatefulSets 에 대해서도 정리해보도록 한다.