쿠버네티스(8) : Volume

NOHHYEONGJUN·2024년 9월 9일

쿠버네티스

목록 보기
9/23

Volume

  • Pod에서 실제 데이터가 있는 디렉토리를 보존하기 위해 사용
  • Pod의 일부로 정의 되며, Pod와 LifeCycle을 같이함
  • 독립적인 쿠버네티스 오브젝트가 아니며, 스스로 생성 하거나 삭제할 수 없음 (Kind X)
  • 마운트(mount)를 통해서만 사용할 수 있다.
  • 실제 호스트에서 /var/lib/kubelet/pods/PODUID/volumes/ 위치에서 볼륨 확인

 

 


1. 왜 필요한가?

  • Container Layer : Read / Write
  • Image Layer : Read Only

→ Container Layer에 존재하는 모든 데이터는 Stateless.
Container가 종료되면 모두 사라진다!

Container가 종료되어도 데이터를 유지하기 위해 외부 디스크 볼륨 마운트 필요!


 

 


2. Volume 종류

 

일반 Volume

  1. emptyDir : 일시적인 데이터를 저장하는데 사용. 비어있는 단순한 디렉토리
  2. hostPath : 노드의 파일 시스템에서 Pod의 디렉토리로 마운트 하는 데 사용
  3. gitRepo : Git 리포지토리를 Checkout 해서 초기화 하는 볼륨
  4. nfs : Pod 에 마운트된 네트워크 파일 시스템
  5. gcePersistentDisk : 구글 클라우드 영구 디스크
  6. awsEElastic-BlockStore : 아마존 클라우드 영구 디스크
  7. azureDisk : 애져 클라우드 영구 디스크
  8. 기타(cinder,cephfs,iscsi,flocke r,quobyte,glusterfs 등) : 다양한 스토리지

특수 Volume

  1. configMap : 설정 파일 및 환경 변수를 보관하는 볼륨
  2. secret : 기밀 유지가 필요한 설정 파일이나 환경 변수를 보관하는 볼륨

 

 


3. Volume 용도

1. EmptyDir

  • 대규모 파일 기반 Sorting 작업
  • Pod 내의 컨테이너간 파일 교환
  • 복구를 위한 임시 파일 보관

2. HostPath

  • Pod가 종료되어도 상태가 유지
  • Node → Pod의 디렉토리로 마운트

 

 


4. Persistent Volume

  • 동적 프로비저닝
  • PV는 Pod와 별개의 LifeCycle → Pod가 종료되어도 데이터 유지

 

PV Access Mode

  1. ReadWriteOnce (RWO)
    • 하나의 노드에서 읽기/쓰기로 마운트
    • 하나의 노드에서 여러개의 POD가 실행중이라면 볼륨에 접근이 가능

  2. ReadOnlyMany (ROX)
    • 여러 노드에서 읽기 전용으로 마운트된 볼륨

  3. ReadWriteMany (RWX)
    • 여러 노드에서 읽기-쓰기로 마운트된 볼륨

  4. ReadWirteOncePod (RWOP)
    • 오직 하나의 노드만 PVC에 접근 가능


 

 


5. Persitent Volume Claim

  • 사용자가 PV에 하는 요청
    EX) 사용하고 싶은 용량, 읽기/쓰기 모드 등

 

Persistent Volume Recliam Policy & Access Mode

1. Policy

Retain(유지) : PVC 를 삭제 해도 PV를 유지. 데이터는 살아 있지만 수동으로 정리 해야하는 단점
Delete(삭제) : 관련된 볼륨 모두 삭제
Recycle(재사용) : 뷸륨 자체를 삭제 하지는 않고 rm –rf /* 로 모든 데이터만 삭제

 

2. Access Mode

ReadWriteOnce : 하나의 node 에서 볼륨을 읽기-쓰기로 마운트할 가능
ReadOnlyMany : 여러 node 에서 볼륨을 읽기 전용으로 마운트할 수 가능
ReadWriteMany : 여러 node 에서 볼륨을 읽기-쓰기로 마운트할 수 가능


 

 


6. PV & PVC 사용

Volume을 직접 생성하지 않고 PVC를 이용해서 생성하면 개발자가 디스크, 인프라에 대해 잘 알지 못해도 손 쉽게 사용 가능!


 

 


7. PV & PVC LifeCycle


 

 


7. K8S의 Volume 사용


profile
Cloud/DevOps & Network Virtualization에 관심 있는 Engineer입니다. 🐳⚓️👨‍✈️

0개의 댓글