728x90
✅ 목표: MinIO의 **PersistentVolumeClaim(PVC)**을 활용하여,
MinIO 스토리지 확장성을 실험하고 PVC 기반의 확장성을 테스트하는 방법을 실습합니다.
🔎 이번 글에서 수행할 작업 요약
- PVC 기반 MinIO 확장성 실험
- MinIO PVC의 리소스 할당과 확장성 테스트
- MinIO의 성능 측정 및 데이터 접근 최적화
- PVC와 StatefulSet을 활용한 확장성 실험
🧠 1단계: MinIO PVC 설정 및 기본 확장성 개념
이 단계의 목적: PVC를 사용하여 MinIO의 스토리지를 동적으로 확장할 수 있음을 이해하고,
PVC와 관련된 기본 설정을 다룹니다.
- MinIO는 StatefulSet으로 배포되며, **Persistent Volume (PV)**을 활용하여 데이터를 저장합니다.
- PVC는 클러스터의 스토리지 리소스를 요청하고, MinIO의 데이터 저장소로 사용됩니다.
- 리소스 확장성을 위해 PVC의 **storageClass**와 size 값을 조정할 수 있습니다.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: minio-pvc
namespace: minio
spec:
accessModes:
- ReadWriteOnce # 스토리지를 한 번에 하나의 파드만 접근 가능하게 설정
resources:
requests:
storage: 10Gi # 요청하는 PVC 크기 (예: 10GB)
storageClassName: managed-nfs-storage # 스토리지 클래스 설정 (NFS 등)
# PVC가 생성된 후 클러스터에서 확인
kubectl apply -f pvc-minio.yaml
✅ MinIO는 PVC를 통해 데이터를 영구적으로 저장하고, 디스크 용량 확장이 가능합니다.
⚙️ 2단계: StatefulSet을 이용한 PVC 기반 MinIO 확장성 실험
이 단계의 목적: MinIO를 StatefulSet으로 배포하고, PVC를 활용하여 동적으로 스토리지를 확장하는 방법을 실습합니다.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: minio
namespace: minio
spec:
serviceName: "minio"
replicas: 1 # MinIO의 파드 수 (1개로 설정)
selector:
matchLabels:
app: minio # 앱 라벨로 MinIO 파드를 선택
template:
metadata:
labels:
app: minio # MinIO를 식별하는 라벨
spec:
containers:
- name: minio
image: minio/minio:RELEASE.2021-05-10T23-50-27Z # MinIO Docker 이미지
args:
- server
- /data # 데이터를 저장할 경로
ports:
- containerPort: 9000 # MinIO 기본 포트
volumeMounts:
- name: minio-pv
mountPath: /data # PVC를 /data 경로에 마운트
volumeClaimTemplates:
- metadata:
name: minio-pv # PVC 이름
spec:
accessModes:
- ReadWriteOnce # 읽기-쓰기 모드
resources:
requests:
storage: 10Gi # PVC 크기
storageClassName: managed-nfs-storage # 스토리지 클래스 설정
# StatefulSet 배포 후 상태 확인
kubectl get pods -n minio
✅ StatefulSet은 PVC를 자동으로 마운트하고, 디스크 용량 확장 실험을 위해 파드를 쉽게 관리할 수 있습니다.
🧪 3단계: PVC 용량 확장 및 성능 비교
이 단계의 목적: PVC 용량을 확장하고, MinIO의 성능을 측정하여 확장성에 미치는 영향을 실험합니다.
# PVC 용량 확장 (기존 PVC 크기에서 증가)
kubectl patch pvc minio-pvc -n minio -p '{"spec":{"resources":{"requests":{"storage":"20Gi"}}}}'
# 용량 변경 후 상태 확인
kubectl get pvc minio-pvc -n minio
✅ PVC 크기를 동적으로 확장하고, MinIO 성능을 비교하여 용량 확장이 미치는 영향을 분석할 수 있습니다.
# MinIO에서 업로드/다운로드 성능 테스트
mc alias set local http://minio.minio.svc.cluster.local:9000 minioadmin minioadmin
mc cp /path/to/largefile local/test-bucket/ # MinIO에 대용량 파일 업로드
✅ PVC 용량 확장 후, MinIO 성능 테스트를 통해 데이터 처리 속도와 안정성을 점검합니다.
🔍 4단계: 성능 최적화 및 데이터 접근 속도 개선
이 단계의 목적: PVC 기반의 스토리지 환경에서 MinIO의 성능을 최적화하고,
데이터 접근 속도 개선을 위한 설정을 실습합니다.
✅ 성능 최적화를 위한 설정
# MinIO 서버에서 빠른 업로드를 위한 최적화 설정
mc admin config set local upload.disable-storagedump true # 스토리지 덤프 비활성화
mc admin config set local upload.parallelism 8 # 업로드 병렬화 설정
✅ 빠른 업로드 설정을 통해 파일 전송 속도를 최적화할 수 있습니다.
📎 요약 및 핵심 정리
- PVC 기반 스토리지는 StatefulSet을 통해 확장성과 내결함성을 제공하며,
스토리지 용량을 동적으로 확장할 수 있습니다. - PVC 크기 조정 및 성능 최적화 설정을 통해 MinIO의 성능을 최적화하고,
대용량 파일 처리 시 성능 저하 없이 안정적인 서비스를 제공할 수 있습니다. - MinIO + PVC를 활용한 확장성 실험을 통해, 확장 가능한 데이터 플랫폼을 구축할 수 있음을 실험하였습니다.
728x90