728x90
반응형
Overview
Kubernetes Volumes(PV,PVC) 그리고 StorageClass와 CSI-Driver에 대해서 알아본다.
Kubernetes Volumes
- Persistent Volumes(PV)은 관리자에 의해 프로비저닝되거나 스토리지 클래스를 사용하여 동적으로 프로비저닝된 클러스터 내의 저장소이다.
- PV는 노드처럼 클러스터의 리소스로 존재하며 사용자에 의해 클레임될 수 있다.
- 주요 특징:
- 파드와 독립적인 생명주기: PV는 사용하는 개별 파드의 생명주기와 독립적이다.
- 저장소 추상화: 저장소 프로비저닝 및 사용에 대한 세부 사항을 추상화한다.
- 다양한 접근 모드 지원: `ReadWriteOnce, ReadOnlyMany, ReadWriteMany` 등의 모드를 지원한다.
- `ReadWriteOnce` : 볼륨이 단일 노드에 의해 읽기-쓰기로 마운트될 수 있다.
- `ReadOnlyMany` : 볼륨이 여러 노드에 의해 읽기 전용으로 마운트될 수 있다.
- `ReadWriteMany` : 볼륨이 여러 노드에 의해 읽기-쓰기로 마운트될 수 있다.
- Persistent Volume Claims(PVC)은 사용자의 저장소 요청이다.
- 파드가 노드 리소스를 사용하는 것과 마찬가지로, PVC는 PV 리소스를 사용한다.
- 주요 특징:
- 저장소 요청: 사용자는 특정 크기와 접근 모드를 요청한다.
- 바인딩: PVC는 클러스터 내의 적합한 PV에 자동으로 바인딩된다.
- 파드에서의 사용: PVC는 포드 내에서 볼륨으로 사용되며 이름으로 참조한다.
- persistentVolumeReclaimPolicy
- PV에 설정된 이 필드는 클레임에서 해제된 후 볼륨에 대해 수행할 작업을 지정한다.
- 정책은 다음과 같다:
- Retain: 기본 정책으로 해제 후 볼륨을 유지하며 데이터를 보존한다.
- Delete: 동적으로 프로비저닝된 PV의 경우 PVC가 삭제될 때 기본 저장소에서 볼륨을 삭제한다.
- Recycle: 동적 프로비저닝을 위해 권장되지 않는다. 이 정책은 볼륨의 데이터를 스크러빙하고 새 클레임에 사용할 수 있도록 하는 데 사용되었다.
PV and PVC Lifecycle
- Provisioning(프로비저닝): 영구 볼륨(PV)은 스토리지 클래스를 통해 동적으로 프로비저닝되거나 관리자에 의해 수동으로 사전 프로비저닝될 수 있다.
- Binding(바인딩): 사용자는 특정 크기 및 접근 모드를 요청하는 영구 볼륨 클레임(PVC)을 생성한다. PVC는 사용 가능한 PV에 바인딩된다.
- Using(사용): 바인딩되면 PVC는 포드에 의해 사용될 수 있습니다. 포드는 PVC를 참조하고 기본 PV를 볼륨으로 마운트 한다.
- Releasing(릴리스): 사용자가 볼륨을 완료하면 PVC를 삭제할 수 있습니다. 회수 정책에 따라 기본 PV가 다시 사용 가능해지거나 삭제된다.
- Reclaiming(회수): Reclaim 정책이 Retain로 설정된 경우 PVC 삭제 후 PV는 클러스터에 유지되며, Delete인 경우 PV 및 외부 인프라의 관련 스토리지 자산이 삭제된다.
Kubernetes StorageClass & CSI-Driver
StorageClass는 관리자가 제공하는 스토리지의 "클래스"를 설명하는 방법을 제공한다.
기본 스토리지 플랫폼의 세부정보를 추상화하고 PV를 동적으로 프로비저닝하는 표준화된 방법을 제공한다.
주요 특징:
- 프로비저닝(Provisioning): 동적 또는 정적일 수 있으며 스토리지 할당 방법을 정의한다.
- 매개변수(Parameters): 기본 스토리지 제공자에 따라 다양한 StorageClass가 서로 다른 매개변수를 가질 수 있다.
- 바인딩(Binding): PVC는 StorageClass를 지정할 수 있습니다. 동일한 클래스의 PV만 PVC에 바인딩될 수 있다.
Container Storage Interface(CSI)
컨테이너 스토리지 인터페이스(CSI)는 쿠버네티스와 같은 컨테이너 오케스트레이션 시스템(COS)에서 다양한 블록 및 파일 스토리지 시스템을 컨테이너화된 워크로드에 노출시키기 위한 표준이다. CSI의 목표는 스토리지 솔루션을 위한 일관되고 표준화된 API를 제공하여 클라우드 네이티브 생태계에서 스토리지 제품을 쉽게 통합하고 사용할 수 있게 하는 것이다.
- 블록 스토리지: 기본 블록 수준의 스토리지를 제공하며, 성능이 중요한 애플리케이션에 주로 사용된다.
- 파일 스토리지: 공유 또는 전용 파일 액세스를 제공하며, 공유 스토리지 시스템에 주로 사용된다.
- 오브젝트 스토리지: 평면 데이터 구조를 사용하여 각 객체를 별도의 데이터로 저장하며, 비정형 데이터에 주로 사용된다.
- hostPath: 호스트 노드의 파일 시스템에서 파일 또는 디렉토리를 파드 내부로 마운트한다. 특정 노드에 종속적인 데이터 또는 테스트에 적합하다.
- emptyDir: 파드의 수명과 공유되는 임시 디렉토리이다. 임시 저장소 및 동일 파드 내의 컨테이너 간 파일 공유에 유용하다.
Reference
https://medium.com/@kadimasam/kubernetes-storage-pv-pvc-and-storage-class-c107eba9c232
728x90
반응형
'Container Orchestration > Kubernetes' 카테고리의 다른 글
Kubernetes Pod를 안전하게 종료하는 방법(cordon, uncordon, drain, scale) (0) | 2024.07.09 |
---|---|
Ingress Nginx란? (0) | 2024.07.04 |
Kubernetes Affinity 및 Scheduling 설정 가이드 (0) | 2024.04.19 |
Kubernetes Network (0) | 2024.02.17 |
Kubernetes 클러스터 구축하기(kubespray 2024v.) (0) | 2024.02.02 |