본문 바로가기
[DevOps]/Kubernetes

kubernetes - Volumes

by 팡펑퐁 2023. 7. 30.
728x90

쿠버네티스 볼륨의 이해

 쿠버네티스에서의 볼륨은 도커의 볼륨과 같다. 도커에서 볼륨의 역할은 컨테이너가 생명 주기를 넘겨 사라지거나, 문제가 생겨 중단이 됐을 때 컨테이너를 삭제해도 컨테이너에서 다루는 데이터는 별도로 저장하여 다른 컨테이너에서도 액세스 할 수 있게 하는 것이다. 쿠버네티스 역시 마찬가지이며 컨테이너에서 파드(pod)와 클러스터(Cluster)로 그 범위를 확장하여 생각하면 된다.

 

 

비영구 볼륨(Non-Persistent Volumes)

  • 임시 볼륨이라고도 불린다.
  • 파드가 실행되는 동안에만 존재하는 임시 스토리지 솔루션이다.
  • 파드가 종료되면 모든 데이터가 손실된다.
  • 동일한 파드 내의 컨테이너 간 파일 및 데이터를 공유하거나 단기 작업에 사용된다.

 

EmptyDir

  • 쿠버네티스에서 사용할 수 있는 가장 간단한 유형의 비영구 볼륨 중 하나이다.
  • 쿠버네티스 시스템에 의해 생성되고 관리되며 사용하는 파드의 생명 주기와 연결된다.
  • 파드가 생성되면 EmptyDir 볼륨도 생성되며 파드가 삭제되면 EmptyDir 볼륨도 삭제되고 볼륨 내 저장된 데이터는 모두 손실된다.
  • 개별 파드로 범위가 지정되어 동일한 파드라면 모든 컨테이너에서 액세스 하고 수정할 수 있다.
  • 다중 컨테이너 파드에서 컨테이너 간 파일이나 데이터를 공유하는 데 유용하다.

 

HostPath

  • EmptyDir과 달리 HostPath를 사용하면 호스트 노드의 파일 시스템에서 파일이나 디렉터리를 파드와 직접 마운트 할 수 있다.(경로 설정)
  • 볼륨 데이터를 쿠버네티스로 관리하지 않으므로 다른 볼륨 유형보다 덜 안전하다고 할 수 있다.

 

 

영구 볼륨(Persistent Volumes)

  • 파드의 생명 주기가 끝이나도 볼륨 내 데이터를 유지하도록 설계되었다.
  • 파드가 종료되거나 이동, 교체되더라도 데이터의 지속성이 필요한 상태 저장 애플리케이션에 적합하다.
  • 파드와 노드(Node)에 독립적이며 볼륨의 구성 방식에 대해서도 완전한 권한을 가지고 있다.
  • 한 번만 정의하고 원하는 경우에 여러 파드에서 사용할 수 있다.
  • 영구 볼륨 클레임을 만들면 파드의 일부가 되지만 파드 옆에 추가되어 클레임이 파드 및 파드가 실행되는 노드에 소속되어 있음을 보여준다.
  • 여러 개의 개별적인 영구 볼륨에 대한 클레임을 가질 수 있으며 다양한 노드의 서로 다른 볼륨에 대해서도 서로 다른 클레임을 가질 수 있다.
  • 이로 인해 완전한 유연성을 갖는다.

 

영구 볼륨 클레임(PVC)

  • 파드에서 실행 중인 애플리케이션에 파드의 수명을 초과하여 지속될 수 있는 스토리지 리소스가 필요한 경우 생성한다.
  • 원하는 스토리지 용량, 액세스 모드, 기타 특성을 지정하여 스토리지에 대한 사양을 지정한다.
  • PVC가 생성되면 쿠버네티스 컨트롤 플레인은 PVC에 정의된 요청 스토리지의 특성을 충족하는 적절한 영구 볼륨을 찾아 바인딩한다.
  • 이후 영구 볼륨은 클레임과 연결되고 보유하고 있는 데이터는 파드에서 액세스 할 수 있게 된다.

 

 

핵심 포인트

  • 일반 볼륨을 사용하든 영구 볼륨을 사용하든 상관없이 볼륨을 통해서 데이터를 유지할 수 있다.
  • 영구적으로 데이터를 저장할 수 있다는 이유로 영구 볼륨이 무조건적으로 더 좋은 것은 아니다.
  • 컨테이너가 재시작되거나 제거 후에 재생성될 때 손실되지 않아야 할 데이터에 도움이 된다고 생각하자.

 

 

 

 

참고

UDEMY - Docker & Kubernetes : 실전 가이드

chatGPT

728x90