모험가

Volume - Dynamic Provisioning, StorageClass, Status, ReclaimPolicy 본문

쿠버네티스/중급

Volume - Dynamic Provisioning, StorageClass, Status, ReclaimPolicy

라리음 2022. 8. 10. 10:12

이 글은 인프런의 대세는 쿠버네티스 강의를 보며 정리한 글입니다.

 

 

 

 

Volume = 데이터를 안전하게 관리(유지)하기 위해 사용하는 것

-> k8s Cluster과 분리되어서 관리됨

 

 

 

 

 

Volume에는 크게 2가지가 있음

 

1. Internal Network

2. External Network

 

 

 

 

Internal Network 

- 내부망에서는 On-Premise Solution을 설치할 수 있음

ex) StorageOS, Ceph, GlusterFS와 같은게 있고 이것이 노드 자원을 이용해 Volume을 관리

 

- 내부망에서 k8s를 구성하는 node의 hostPath, local Volume을 이용 가능

- 내부망에서 NFS를 사용해서 다른 서버를 Volume으로 사용 가능

 

External Network

- 외부의 스토리지 서비스를 이용할 수 있음

ex) AWS, GCP, Azure

 

 

 

 

 

 

 

 

- 초급에서 배운 Volume은 이러하게 k8s Cluster에서 PV를 만든 이후

- PVC를 만들어주면 적절한 PV와 연결해주고

- 이것을 Pod와 연결했음.

 

 

 

이렇게 하면 Volume이 필요할 때마다 PV를 만들어야하고 또 연결하려고 Storage, AccessMode를 맞춰야하는게 힘듬

 

 

 

 

So!!!

 

 

쿠버네티스에서는 Dynamic Provisioning을 지원함

 

 

 

 

 

 

 

Dynamic Provisioning

 

 

- 사용자가 PVC를 만들면 알아서 PV를 만들어주고 실제로 Volume과 연결해주는 기능을 지님

- 모든 PV에는 Pod처럼 각각의 Status가 존재하여, PV와 PVC의 연결 상태와 에러 등을 알 수 있음

- PV를 삭제하는 부분에서 정책적인 요소가 있음

 

 

Dynamic Provisioning

 

 

 

 

 

 

 

StorageClass

 

 

- Dynamic Provisioning을 지원해주는 Storage Solution을 선택해야함

-> STORAGEOS 선택

 

- StorageClass 오브젝트가 아주 중요함!!!

- StorageClass를 사용해서 동적으로 PV를 만드는데 PVC를 만들 때 StorageClassName이 존재

- StorageClassName 항목에 ""를 넣으면 연결이 되었었음

- STORAGEOS로 만든 storageclass에 "fast"를 넣으면 자동으로 STORAGEOS를 가진 PV가 생성

- 이것이 추가적으로도 가능하고 기본적으로 default인데 PVC의 StorageClassName을 생략하면 default Storageclass가      적용

 

 

 

 

 

 

 

Status 

 

최초상태 Available

PVC가 만들어지면 PV의 상태는 Bound 상태가 됨

PVC가 삭제되면 PV의 상태는 Released가 됨

PV와 실제 데이터 사이에 문제가 생기면 PV의 상태는 Failed

 

 

 

ReclaimPolicy

 

1. Retain

- PV를 직접 만들면 default

- 데이터 보존 가능

- 재시용이 불가

 

2. Delete

- StorageClass로 만들어진 PV면 default

- Volume에 따라 데이터 삭제

- 재사용이 불가

 

3. Recycle

- Deprecated

- 데이터 삭제

- 재사용이 가능

 

 

 

 

 

 

 

 

 

 

 

 

 

'쿠버네티스 > 중급' 카테고리의 다른 글

Service - Headless, Endpoint, ExternalName  (0) 2022.08.08
Pod - QoS Classes, Node Scheduling  (0) 2022.08.08
Pod - Lifecycle, Probe  (0) 2022.08.08