Dev/Kubernetes
[CKAD] section 8. Volume & Persistent Volume & Persistent Volume Claim
2022. 5. 3. 04:14
이번 시간엔 쿠버네티스의 볼륨에 대해서 정리해본다.
간단하게 한 줄로 설명하자면
파드에서 저장소를 사용하고 나서 파드를 종료하면 파드가 사용 중인 저장소가 삭제되기 때문에, 영구적으로 데이터를 저장하기위해 사용한다.
볼륨은 단일 파드인 경우에는 가볍게 사용해도 좋지만,
여러개의 파드를 사용할 땐 영구 볼륨 (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 에 대해서도 정리해보도록 한다.
'Dev > Kubernetes' 카테고리의 다른 글
[Docker] 도커에서 윈도우 경로를 사용한 컨테이너를 띄울 때 (0) | 2022.06.27 |
---|---|
[CKAD] section 8. Storage Classes & StatefulSet (0) | 2022.05.06 |
[CKAD] section 7. Network Policy (3) (0) | 2022.05.02 |
[CKAD] section 7. Ingress (2) (0) | 2022.05.01 |
[CKAD] section 7. Services (1) (0) | 2022.04.28 |