이상적으로 쿠버네티스에 애플리케이션을 배포하는 개발자는 기저에 어떤 종류의 스토리지 기술이 사용되는지 알 필요가 없어야 하고,
동일한 방식으로 파드를 실행하기 위해 어떤 유형의 물리 서버가 사용되는지 알 필요가 없어야 한다.
6.5 퍼시스턴트볼륨과 퍼시스턴트볼륨클레임 소개
- 퍼시스턴트볼륨 PV PersistentVolume
- 퍼시스턴트볼륨클레임 PVC PersistentVolumeClaim
- 개발자가 파드에 기술적인 세부사항을 기재한 볼륨을 추가하는 대신 클러스터 관리자가 기반 스토리지를 설정하고 쿠버네티스 API 서버로 퍼시스턴트볼륨 리소스 생성해 쿠버네티스에 등록한다.
- 퍼시스턴트볼륨이 생성되면 관리자는 크기와 지원 가능한 접근모드를 지정한다.
IT 용어에서 "볼륨(Volume)"과 "클레임(Claim)"은 주로 쿠버네티스(Kubernetes)와 같은 컨테이너 오케스트레이션 플랫폼에서 스토리지 관리와 관련해 사용합니다.
✔️ 볼륨(Volume): 컨테이너가 사용하는 스토리지 공간을 의미합니다. 컨테이너는 기본적으로 휘발성 스토리지를 사용하므로, 컨테이너를 재시작하거나 삭제하면 데이터도 사라집니다. 이러한 문제를 해결하기 위해 볼륨을 사용합니다. 볼륨은 컨테이너와 독립적으로 데이터가 저장되는 공간이므로, 컨테이너가 재시작되거나 삭제되어도 데이터가 유지됩니다.
- 사용 시점: 데이터를 영구적으로 저장하거나 여러 컨테이너에서 데이터를 공유해야 할 때 사용합니다.
✔️ 클레임(Claim): 볼륨에 대한 요청을 의미하며, 보통 **퍼시스턴트 볼륨 클레임(Persistent Volume Claim, PVC)**이라고 부릅니다. 클레임은 사용자(컨테이너)가 특정 크기와 접근 모드를 가진 스토리지를 요청할 때 사용됩니다. 쿠버네티스에서 클레임은 볼륨과 컨테이너 사이의 추상화 계층 역할을 합니다.
- 사용 시점: 애플리케이션이 실제로 스토리지를 필요로 할 때 사용하며, 이를 통해 필요한 스토리지의 크기, 유형 등을 지정하여 쿠버네티스가 적절한 볼륨을 할당하도록 요청합니다.
요약하면, 볼륨은 데이터가 저장되는 실제 공간을 의미하고, 클레임은 그 볼륨을 사용하기 위해 요청하는 프로세스입니다.
1) 퍼시스턴트볼륨 생성
apiVersion: v1
kind: Pod
metadata:
name: mongodb
spec:
volumes:
- name: mongodb-data
gcePersistentDisk:
pdName: mongodb
fsType: ext4
containers:
- image: mongo
name: mongodb
volumeMounts:
- name: mongodb-data
mountPath: /data/db
ports:
- containerPort: 27017
protocol: TCP
2) 퍼시스턴트볼륨클레임 생성하기
kubernetes-in-action/Chapter06/mongodb-pod-pvc.yaml at master · luksa/kubernetes-in-action · GitHub
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongodb-pvc
spec:
resources:
requests:
storage: 1Gi
accessModes:
- ReadWriteOnce
storageClassName: ""
3) 파드에서 퍼시스턴트볼륨클레임 참조하기
apiVersion: v1
kind: Pod
metadata:
name: mongodb
spec:
containers:
- image: mongo
name: mongodb
volumeMounts:
- name: mongodb-data
mountPath: /data/db
ports:
- containerPort: 27017
protocol: TCP
volumes:
- name: mongodb-data
persistentVolumeClaim:
claimName: mongodb-pvc
- 애플리케이션 개발장게 인프라스트럭처에서 스토리지 가져올때 간접적인 방법 사용하도록 함.
6.6 퍼시스턴트볼륨의 동적 프로비저닝
- 쿠버네티스는 대부분 인기 있는 클라우드 공급자의 프로비저너를 포함해서 프로비저너 배포하지 않아도 괜찮지만,
온프레미스에 배포된 쿠버네티스는 사용자 정의 프로비저너가 배포되어야 한다.
참고)
https://www.youtube.com/watch?v=0swOh5C3OVM
'스터디 > [쿠버네티스 인 액션] (2024.8)' 카테고리의 다른 글
[쿠버네티스 인 액션] 7장. 컨피그맵과 시크릿 - 컨피그맵, 시크릿 + 참고영상 (0) | 2024.10.03 |
---|---|
[쿠버네티스 인 액션] 7장. 컨피그맵과 시크릿 - 컨테이너에 명령어 인수 전달, 각 컨테이너에 사용자 정의 환경변수 지정 (0) | 2024.10.02 |
[쿠버네티스 인 액션] 6장.볼륨 (2) | 2024.09.28 |
[쿠버네티스 인 액션] 5장.서비스 - 레디니스 프로브, 헤드리스 서비스, 서비스 해결 (0) | 2024.09.22 |
[쿠버네티스 인 액션] 5장.서비스 - 서비스 앤드포인트, 외부 클라이언트 연결 (노드포트, 로드밸러스, 인그레스) (0) | 2024.09.22 |