본문 바로가기

TEAM STUDY/대세는 쿠버네티스 [초급~중급]

▶ kubernetes - Volume

728x90
반응형

emptyDir

 

 

  • 컨테이너들끼리 데이터를 공유하기 위해서 볼륨을 사용하는 것
  • 최초 볼륨이 생성될 떄는 항상 볼륨 안에 내용이 비어있기 때문에 empty 라는 명칭을 가지게 되었다.
  • 만약에 컨테이너 1 번이 웹 역할을 하는 서버이고 컨테이너 2번이 백엔드단이라면 
  • 1번 컨테이너 웹서버로 받은 특정 파일을 마운트가 된 볼륨에 저장을 해놓고
  • 백엔드단에 있는 2번 컨테이너도 해당 볼륨을 마운트를 하고 있다면
  • 이 두 서버가 이 볼륨을 자신의 로컬에 있는 파일처럼 사용하기 때문에
  • 이 두 서버가 파일을 주고 받을 필요가 없이 편하게 사용 가능하다.
  • pod 안에 생성되기 때문에 파드에 문제가 발생해서 재생성이 되면 데이터가 싹 없어진다는 것을 의미한다.
  • 그래서 이 볼륨에 쓰이는 데이터는 꼭 일시적인 사용목적에 의한 데이터만 넣는게 좋다.

 

hostPath

 

 

  • 노드의 패스를 볼륨으로써 사용한다.
  • 위의 emptyDir 과 다른점은 패스를 각각의 파드들이 마운트해서 공유하기 때문에 이 파드들이 죽어도 이 노드들에 있는 데이터들은 사라지지 않는다.
  • 그런 점이 다소 좋아보일 수 있지만 파드 입장에서 한가지 문제가 있을 수 있다.
  • 만약 파드가 죽어서 재생성이 될 때 꼭 해당 노드에 재성성 된다는 보장이 없다.
  • 만약 재생성 되는 순간에 스케쥴러가 자원 상황을 보고 다른 노드에 파드를 생성할 수도 있고
  • 해당 노드에 문제가 생겨서 다른 노드에 파드를 옮기게 되는 현상이 발생할 수도 있다.
  • 만약 Node 1 에서 node v-1 을 마운트하던 pod 가 Node 2 로 옮겨졌을 때 마운트 하던 node v-1 을 참조할 수 없게 된다.
  • 호스트 패스이기 때문에 자신의 pod 가 올라가있는 노드의 볼륨만 사용 가능하다.
  • 각각의 노드에는 기본적으로 각 노드 자신을 위해 사용되는 파일들이 있다. (시스템 파일들이나 설정 파일들 ..)
  • 파드 자신이 할당되어 있는 호스트에 데이터를 읽거나 써야할 때 사용을 하면된다.
  • 호스트 패스는 파드의 데이터를 저장하기 위한 용도가 아니라 노드에 있는 데이터를 파드에서 쓰기위한 용도라는 것을 알자.

 

PVC/PV

 

 

  • 파드의 영속성있는 볼륨을 제공하기 위한 개념이다.
  • 실제 볼륨들의 형태는 다양하다. 로컬 볼륨들도 있지만 외부 원격으로 사용되는 볼륨들도 있다. (예를 들어 아마존이나 git , NFS 를 사용해서 다른 서버 연결 등 ,, )
  • 이런 것들을 각각 정의를 하고 연결을 한다.
  • pod 는 pv 와 직접적으로 연결을 하지 않고 persistent volume claim 을 통해 연결을 한다.
  • pod 에서 pv 로 바로 연결하는게 깔끔해보일 수 있지만
  • 쿠버네티스는 볼륨을 사용하는데 있어서 유저 영역과 어드민 영역으로 나눠진다.
  • 어드민은 쿠버네티스 관리를 담당하는 쿠버네티스 운영자일 것이고,
  • 유저는 파드의  서비스를 만들고 배포를 담당하는 서비스 담당자 일 것이다.
  • 볼륨의 종류는 많고, 각각의 볼륨들을 연결하기 위한 설정들도 각각 틀리다.
  • 그래서 전문적으로 해당 이슈를 관리하는 어드민이 PV 를 만들어 놓으면
  • 유저는 이것을 사용하기 위해 PVC 를 만들어야 한다.

 


 

728x90
반응형