본문 바로가기

Infra/Kubernetes

[cka] Kubernetes - Volume

1. Volume 이란?

- 컨테이너가 종료되어도 데이터를 보존하기 위한 공간

- Pod는 일시적인 존재 -> 삭제되면 그 안의 Container의 데이터도 사라짐

- 데이터를 영속적으로 보관하려면 -> Volumne이 필요

 

2. Volume의 종류 (기본형)

1) emptyDir

- Pod가 노드에 스케쥴링될 때 생성되고, Pod 삭제 시 함께 삭제됨

- 사용예시) 캐시, 임시 데이터 저장용

2) hostPath

- 노드의 로컬 디렉토리를 마운트

- 사용 예시) 로그 수집, 노드 리소스 접근용

3) configMap / secret

- 설정파일, 인증정보 주입

- 사용예시) 환경 변수나 설정 파일 전달

4) PersistentVolumneClaim(PVC)

- 외부 스토리지와 연결된 영속적 볼륨

- 사용 예시) DB, 파일 저장 등 영속 데이터 보관

 

3. Persistent Volume (PV) & Persistent Volume Claim (PVC)

- 시험에 자주 나오는 핵심 파트

- PV (PersistentVolume)

: 클러스터 관리자가 미리 만들어둔 스토리지 리소스 (공용 창고)

- PVC (PersistentVolumeClaim)

: 사용자가 "이만큼 스토리지 주세요"라고 요청하는 것(창고 공간 요청)

- Binding

: PVC가 PV와 조건(size, access mode 등)이 맞으면 자동 연결됨

 

4. Access Modes (접근 모드)

1) ReadWriteOnce (RWO) 

: 하나의 노드에서 읽기/쓰기 가능

2) ReadOnlyMany (ROX)

: 여러 노드에서 읽기 전용으로 접근 가능

3) ReadWriteMany (RWX)

: 여러 노드에서 읽기/쓰기 가능

 

- 시험 문제 예시? 어떤 모드가 여러 노드에서 쓰기 가능한가? -> RWX

 

5. StorageClass

- 스토리지 포로비저닝(생성)을 자동화하기 위한 리소스

- 동적 프로비저닝(Dynamic Provisioning)을 가능하게 함

즉, PVC 생성시 storageClassName을 지정하면 -> PV가 자동으로 생성되고 바인딩됨

 

예시

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
   name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
   type: gp2

 

PVC 예시

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
   name: mypvc
spec:
   accessModes:
      - ReadWriteOnce
      resources:
         requests:
            storage: 1Gi
      storageClassName: standard

 

6. 실무 예시 (Pod에서 PVC 사용)

apiVersion: v1
kind: Pod
metadata:
   name: mypod
spec:
   volumes:
      - name: data-volume
        persistentVolumeClaim:
           claimName: mypvc
   containers:
      - name: app
        image: nginx
        volumeMounts:
          - mountPath: /usr/share/nginx/html
            name: data-volume

-> 위의 pod는 /usr/share/nginx/html 경로에 영구 불륨을 마운트할려함

 

7. CKA 에서 자주 나오는 포인트 정리

1) PV/PVC 연결

: kubectl get pv, kubectl get pvc 로 바인딩상태 확인

2) Access Mode

: RWO ROX, RWX 구분

3) StorageClass

: 자동 프로비저닝 동작 이해

4) emptyDir / hostPath

: 일시적(ephemeral) vs 영속적(persistent) 구분

5) yaml 파일 생성

: kubectl create -f 

 

8. volume 관련 용어 정리

1) Volume: Pod가 사용하는 디스크 공간

2) emptyDir: Pod 내 임시 데이터용

3) hostPath: 노드의 디스트 사용

4) PV: 클러스터 수준의 실제 스토리지

5) PVC: 사용자의 스토리지 요청

6) StorageClass: 자동 스토리지 생성 규칙

7) Access Mode: RWO, ROX, RWX

'Infra > Kubernetes' 카테고리의 다른 글

PV/ PVC/ StorageClass 정리표  (0) 2025.10.08
[cka] Kubernetes - Imperative  (0) 2025.10.07
[cka] Kubernetes - Imperative vs Declarative  (0) 2025.10.07
[cka] Kubernetes - Namespace  (0) 2025.10.07
[cka] Kubernetes - Service 명령어 모음  (0) 2025.10.07