CKA 시험에서는 스토리지 관리 영역이 중요하게 다뤄진다. Kubernetes 클러스터는 다양한 방식으로 데이터를 저장하고 관리할 수 있으며, 특히 Pod의 일시적인 성격 때문에 지속적인 스토리지가 필요하다. 이번 포스팅에서는 기본적인 Volume부터 PersistentVolume, StorageClass, 그리고 CSI까지 다룬다.
1. Volume 기본 개념
Kubernetes의 Volume은 Pod가 재시작되더라도 데이터를 유지할 수 있도록 한다. 다만, Volume은 Pod의 생명주기와 함께 사라지는 경우가 많으므로 종류를 구분해야 한다.
예시: emptyDir
apiVersion: v1
kind: Pod
metadata:
name: pod-emptydir
spec:
containers:
- name: app
image: nginx
volumeMounts:
- name: cache-volume
mountPath: /cache
volumes:
- name: cache-volume
emptyDir: {}
emptyDir: Pod가 삭제되면 데이터도 삭제된다.- 임시 저장소 용도로 활용한다.
2. hostPath
호스트 노드의 파일시스템을 Pod에 마운트할 수 있다. 하지만 보안상의 이유로 실무에서는 잘 사용하지 않는다.
apiVersion: v1
kind: Pod
metadata:
name: pod-hostpath
spec:
containers:
- name: app
image: nginx
volumeMounts:
- mountPath: /data
name: host-data
volumes:
- name: host-data
hostPath:
path: /var/data
3. ConfigMap & Secret
애플리케이션 설정값과 민감 정보를 관리할 때 사용한다.
ConfigMap 예시
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_ENV: "production"
APP_PORT: "8080"
Secret 예시 (base64 인코딩 필요)
apiVersion: v1
kind: Secret
metadata:
name: app-secret
type: Opaque
data:
DB_PASSWORD: cGFzc3dvcmQ= # "password"를 base64로 인코딩
4. PersistentVolume (PV) & PersistentVolumeClaim (PVC)
PersistentVolume은 클러스터 관리자가 생성하는 스토리지 자원이며,
PersistentVolumeClaim은 사용자가 이를 요청하는 방식이다.
PV 예시
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-example
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /mnt/data
PVC 예시
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-example
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
PVC를 Pod에서 사용하는 방법:
apiVersion: v1
kind: Pod
metadata:
name: pod-pvc
spec:
containers:
- name: app
image: nginx
volumeMounts:
- name: storage
mountPath: /app/data
volumes:
- name: storage
persistentVolumeClaim:
claimName: pvc-example
5. StorageClass
스토리지 동적 프로비저닝을 가능하게 한다. 관리자가 직접 PV를 만들 필요 없이 PVC 생성 시 자동으로 PV가 생성된다.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
PVC에서 StorageClass 지정:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-dynamic
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: standard
6. CSI (Container Storage Interface)
CSI는 Kubernetes가 다양한 외부 스토리지를 사용할 수 있도록 하는 표준 인터페이스이다.
AWS EBS, GCP PD, Ceph, Longhorn 등 다양한 CSI 드라이버를 활용할 수 있다.
예: AWS EBS CSI 드라이버 설치
kubectl apply -k "github.com/kubernetes-sigs/aws-ebs-csi-driver/deploy/kubernetes/overlays/stable/ecr/?ref=release-1.20"
마무리
이번 시간에는 Kubernetes에서 스토리지 관리를 위해 꼭 알아야 할 개념들을 살펴보았다.
- Volume 종류 (emptyDir, hostPath 등)
- ConfigMap, Secret
- PV & PVC
- StorageClass
- CSI
CKA 시험에서는 주어진 시나리오에 따라 PVC를 생성하고 Pod에 마운트하거나, StorageClass를 활용한 동적 프로비저닝을 요구하는 문제가 자주 출제된다. 따라서 실제로 여러 번 실습해보는 것이 중요하다.
'Cloud > Kubernetes' 카테고리의 다른 글
| [CKA - 4] 네트워킹 & 서비스 (0) | 2025.08.19 |
|---|---|
| [CKA - 3] 스케줄링 및 노드 관리 (0) | 2025.08.08 |
| [CKA - 2] Pod 및 Workload 관리 (1) | 2025.08.07 |
| [CKA - 1] Kubernetes 클러스터 구성 및 관리 (1) | 2025.08.06 |
| [CKA] 환경구성 없이 2025 CKA 합격 (1) | 2025.08.05 |