728x90
1. 스토리지 클래스 개요
스토리지 클래스(StorageClass)는 관리자가 제공하는 스토리지의 "클래스"를 설명할 수 있게 해주는 리소스입니다. 다양한 품질의 서비스 수준, 백업 정책, 클러스터에 맞춤화된 임의의 정책을 설정할 수 있습니다.
2. 기본 스토리지 클래스 설정
2.1 기본 스토리지 클래스
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: standard
annotations:
storageclass.kubernetes.io/is-default-class: "true"
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
2.2 성능 최적화 스토리지 클래스
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast
provisioner: kubernetes.io/aws-ebs
parameters:
type: io1
iopsPerGB: "10"
reclaimPolicy: Retain
allowVolumeExpansion: true
3. 클라우드 제공자별 설정
3.1 AWS EBS
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: aws-fast
provisioner: kubernetes.io/aws-ebs
parameters:
type: io1
iopsPerGB: "10"
encrypted: "true"
kmsKeyId: arn:aws:kms:us-east-1:123456789012:key/abc-def-123
3.2 Google Cloud Persistent Disk
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gcp-standard
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-standard
replication-type: none
3.3 Azure Disk
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: azure-premium
provisioner: kubernetes.io/azure-disk
parameters:
storageaccounttype: Premium_LRS
kind: Managed
4. 고급 설정
4.1 볼륨 확장 설정
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: expandable-storage
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
allowVolumeExpansion: true
4.2 볼륨 바인딩 모드
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: delayed-binding
provisioner: kubernetes.io/aws-ebs
volumeBindingMode: WaitForFirstConsumer
728x90
5. 사용 예시
5.1 PVC 생성
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: standard
resources:
requests:
storage: 10Gi
5.2 Pod에서 PVC 사용
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: myapp
image: nginx
volumeMounts:
- name: my-storage
mountPath: "/data"
volumes:
- name: my-storage
persistentVolumeClaim:
claimName: my-pvc
6. 백업과 복구
6.1 스냅샷 클래스 정의
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: standard-snapclass
driver: ebs.csi.aws.com
deletionPolicy: Delete
6.2 볼륨 스냅샷 생성
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: my-snapshot
spec:
volumeSnapshotClassName: standard-snapclass
source:
persistentVolumeClaimName: my-pvc
7. 모니터링과 관리
7.1 용량 모니터링
- 스토리지 사용량 추적
- 경고 임계값 설정
- 자동 확장 정책
7.2 성능 모니터링
- IOPS 모니터링
- 지연 시간 추적
- 대역폭 사용량
8. 베스트 프랙티스
- 적절한 스토리지 유형 선택
- 비용 최적화 고려
- 백업 전략 수립
- 성능 요구사항 정의
- 보안 정책 설정
9. 문제 해결
9.1 일반적인 문제
- PVC 생성 실패
- 볼륨 마운트 오류
- 성능 저하
- 용량 부족
9.2 문제 해결 명령어
# PV/PVC 상태 확인
kubectl get pv,pvc
# 스토리지 클래스 확인
kubectl get sc
# 이벤트 확인
kubectl get events
# Pod 로그 확인
kubectl logs <pod-name>
728x90
'IT 개발 > 클라우드' 카테고리의 다른 글
[쿠버네티스] 네트워크 정책 완벽 가이드 (73) | 2025.02.11 |
---|---|
[쿠버네티스] Ingress 완벽 가이드 (66) | 2025.02.10 |
[쿠버네티스] StatefulSet 완벽 가이드 (51) | 2025.02.09 |
[쿠버네티스] 멀티 컨테이너 Pod 구성 가이드 (50) | 2025.02.08 |
[쿠버네티스] 매니페스트 완벽 가이드 (74) | 2025.02.07 |