본문 바로가기

Docker/k8s

볼륨, 영구 볼륨, 영구 볼륨 클레임

 

 

볼륨

  • emptyDir
  • hostPath
  • downwardAPI
  • projected
  • nfs
  • iscsi
  • cephfs

 

emptyDir 특징

  • pod 용 임시 디스크 영역
  • pod 종료 시 삭제 된다.
  • host 의 임의 영역을 마운트 할 수 없음.
  • 리소스 제한이 가능하며, 초과 사용 시 pod 가 축출(Evict) 된다.
    # emptyDir.sizeLimit: 128Mi
  • tmpfs 로 할당 가능하다. 역시 초과 사용 시, OOM 이 발생하여 pod 가 정지 된다.
    # emptyDir.medium: Memory

 

hostPath

  • node 의 영역을 컨테이너에 마운트 한다.
  • host 의 어떤 영역을 사용할 지 지정해야 한다.
    # Directory, DirectoryOrCreate, File, Socket, BlockDevice

 


영구 볼륨(이하 PV)

  • 볼륨은 pod 정의 안에 직접 지정하는 형태로 사용해야 하나,
  • 영구 볼륨은 개별 리소스로 생성 후 사용한다.
  • 기본적으로 Network 를 통해 disk 를 attach 하는 방식이다.
  • 다양한 플러그인 존재함 (단, google cloud 같은 서비스 이용 시 사용 가능해 보임.)
  • 생성 시 아래와 같은 항목에 대해 설정 가능하다.
    # Label
    # Capacity
    # Access
    # Reclaim policy
    # Mount option
    # Storage class
    # 각 플러그인 고유 설정
  • Label
  • Capacity
    # 동적 프로비저닝을 사용할 수 없는 경우, 다양한 용량을 미리 할당해야 한다.
  • Access
    # ReadWriteOnce => 단일 노드에서 Read/Write 가능
    # ReadOnlyMany => 여러 노드에서 Read 가능
    # ReadWriteMany => 여러 노드에서 ReadWrite 가능
  • Reclaim policy
    # PV 사용 후 처리 방법 제어 (정확히는 영구볼륨 클레임 삭제 시)
    # Delete => PV 자체를 삭제 한다.
    # Retain => 삭제하지 않고 유지 하며, 다른 PVC 에 의해 마운트 되지 않는다.
  • nfs 플러그인 사용 시 (nfs 를 직접 설치해야 하는지 확인 필요...)
    # nfs.server:
    # nfs.path: 

영구 볼륨 클레임 (이하 PVC)

  • PV 를 요청하는 리소스
  • PVC 에서 지정된 조건을 기반으로 하는 PV 에 대한 요청 발생 시, 스케줄러는 현재 가지고 있는 PV 에서 적당한 볼륨을 할당한다.
  • 생성 시 아래와 같은 항목을 설정한다.
    # LabelSelector
    # Capacity
    # Access
    # StorageClass
  • 위 설정에 부합하는 PV 가 최종적으로 할당된다.
  • PVC 가 PV 확보에 실패하면 pending 상태가 유지된다.
  •  
  •  
  •  

동적 프로비저닝

  • PVC 는 PV 를 미리 생성해두고, PVC 요청에 따라 볼륨이 할당되는 방식이었다.
  • 이로 인한 단점이 존재
    # PV 를 생성해야 하는 점
    # 생성한 PV 를 사용하지 않는 경우 자원 낭비
  • 동적 프로비저닝을 사용하는 PVC 의 경우, PVC 를 생성하는 시점에 PV 를 생성하고 할당한다.
  • 동적 프로비저닝을 사용하려면, 사전에 어떤 영구 볼륨을 생성할지 정의한 StorageClass 를 생성해야 한다.

StatefulSet 에서 영구 볼륨 클레임

  • StatefulSet 에서는 spec.volumeClaimTemplate 항목이 있다.
  • PVC 를 별도로 정의하지 않아도 자동으로 영구 볼륨 클레임을 생성 할 수 있다.
  •  

'Docker > k8s' 카테고리의 다른 글

pod stuck  (0) 2023.02.23
워크로드 API  (0) 2023.02.11
쿠버네티스 종류  (0) 2023.02.04
쿠버네티스 설치 과정  (0) 2023.01.31