Volume
- 파드의 컴포넌트이다.
- 파드 내에 정의되며 사용하고자하는 스토리지를 가리키는 포인터, 인터페이스와 같은 역할을 한다.
- 파드에 종속적이기 때문에 파드가 종료되면 볼륨들 또한 모두 종료된다.
- 여러 컨테이너가 하나의 볼륨을 마운트하고 있다면 마운트된 위치에 데이터를 저장함으로 쉽게 데이터를 공유할 수 있다.
Volume의 한계
데이터의 지속 보존 문제이다.
이를 해결하기 위해서는? => 볼륨이 외부 저장소를 가리킨다.
- 외부에 저장소가 있기 때문에 파드가 종료되더라도 데이터는 유지된다. 즉, 지속 보존 문제를 해결할 수 있다.
But
- 그러나, 이런 방식은 쿠버네티스 인프라를 애플리케이션 개발자에게 공개해야 한다는 문제가 있다.
- 쿠버네티스 인프라의 규모가 크다면 파드를 생성할 때 어떤 외부 스토리지가 있는지를 하나하나 다 알고 있어야 한다.
=> 이를 해결하기 위해 PV라는 리소스를 제공
PV · PVC란?
- 파드의 생명 주기와 무관하게 유지되는 데이터 저장소가 필요한데 이를 해결하기 위한 클러스터 리소스.
- 인프라 담당자는 PV를 미리 만들어두고, 개발자는 원하는 스펙을 가진 PV를 요청하는 PVC를 작성하는 역할.
Provisioning
- 컴퓨터 자원을 미리 준비해두는 것.
- 얼마나 필요한지 요청이 들어오기 전에 미리 선점해서 준비해두는 것을 정적 프로비저닝, 반대로 요청이 들어오면 그 때 자원을 준비해두는 것을 동적 프로비저닝이라고 한다.
정적 프로비저닝의 한계
- 인프라 담당자가 미리 PV를 만들어 두는 것은 정적 프로비저닝이다.
- 사용자들이 얼마나 요청할지 모르기 때문에 저장공간이 낭비되거나 초과되는 문제점이 있다.
=> 쿠버네티스는 동적 프로비저닝을 지원한다.
즉, 개발자는 스토리지 지식이 없이도 PVC를 작성하여 PV를 지정하면 원하는 Volume을 제공받을 수 있다.
PV, PVC의 생명 주기
Provisiong
- PV가 만들어지는 단계.
- 정적 프로비저닝과 동적 프로비저닝이 있다.
Binding
- PVC 리소스를 만들어 준비된 PV 리소스와 연결하는 단계.
- 적절한 PV 리소스가 없다면 요청이 실패하고, 적절한 PV 리소스가 생성되어 연결될 때까지 기다린다.
- PV와 PVC는 반드시 1:1로만 연결되어 있어야 한다.
Using
- PVC에서 제공한 볼륨을 파드가 마운트해서 사용하고 있는 단계.
- 파드가 사용중인 PVC와 PVC가 사용중인 PV는 임의로 삭제되지 않는다.
Reclaiming
- 사용이 끝난 PVC가 종료/삭제되면 PV를 반환하는 단계.
- 반환에는 3가지 정책이 있다.
Retain
- PV 리소스를 그대로 유지한다.
Delete
- PVC 리소스가 삭제되면 PV 리소스도 같이 삭제되고, 연결되어 있는 외부 스토리지의 데이터도 삭제된다.
Recycle
- 스토리지의 데이터를 삭제하고 다른 PVC가 PV 리소스를 사용하도록 만들어준다.
728x90
반응형
'DevOps > Kubernetes' 카테고리의 다른 글
[Kubernetes] 쿠버네티스 클러스터의 구조와 컴포넌트 (0) | 2024.07.22 |
---|---|
[Kubernetes] EmptyDir Volume (0) | 2024.07.15 |
[kubernetes] Node란 (0) | 2024.07.10 |
[kubernetes] Pod 외부 접속 연결하기 (0) | 2024.07.09 |
[kubernetes] Deployment란? (0) | 2024.07.08 |