볼륨

노재원·2023년 3월 5일
0

Kubernetes

목록 보기
5/8
post-thumbnail

쿠버네티스 인 액션 책 내용 요약 + 제 생각을 녹여냈습니다.

쿠버네티스 볼륨


쿠버네티스에서 볼륨은 컨테이너 내부에 데이터를 저장하는 가상 디스크이다. 이렇게 볼륨을 사용하면 컨테이너가 종료되어도 데이터를 보존할 수 있다. 또한 여러 개의 컨테이너가 공유하는 데이터를 사용할 수 있다.

쿠버네티스에서 제공하는 볼륨 종류는 다양하다. 그 중에서도 가장 빠르고 쉽게 사용할 수 있는 것은 emptyDir, hostPath, configMap, secret 등이 있다.

  • emptyDir: 빈 디렉토리로 시작되는 볼륨이며, 라이프사이클이 파드에 묶여 있어서 파드가 삭제되면 같이 삭제된다. 이 볼륨을 각 컨테이너에 volumeMount를 하는 방식으로 컨테이너 사이에서 공유할 수 있다.
  • hostPath: 호스트 머신의 디렉토리를 마운트하여 사용하는 방식이다. 이를 이용하면 컨테이너에서 호스트 머신의 파일 시스템에 직접 접근할 수 있다.
  • configMap: 파드에 볼륨마운트를 하게 되면 configMap data에 적혀있는 내용이 파드 내부에 파일로 바로 생성이 되고 이를 바로 사용할 수 있게 된다.
  • secret: configMap과 마찬가지로 secret에 저장된 내용을 파드 내부에 파일로 생성된다. 하지만 민감하지 않은 정보를 다루는 configmap과 달리 민감한 정보를 취급할 때 secret을 사용하여 볼륨 마운트를 한다.

emptyDir과 hostPath는 당장 쉽게 할 수 있지만, 파드가 재시작되면서 다른 노드로 옮겨질 때도 같은 데이터를 유지해야 한다면 적합하지 않은 기술이다. 이를 지원하기 위해 gce persistent storage나 nfs 같은 기술을 사용한다.

그러나 위와 같은 기술을 사용하려면 스토리지 기술에 대한 이해와 설정들을 개발자가 세세히 알고 있어야 사용가능하며, 일일이 기재하는 것은 다른 클러스터에 적용할 때 그대로 동작하지 않을 수 있게 된다. 따라서 스토리지 기술과 파드를 분리할 필요가 있으며 이를 위한 것이 PersistentVolume(PV)PersistentVolumeClaim(PVC)이다.

스토리지 기술과 파드 분리


클러스터 관리자가 스토리지 기반을 설정하고 해당 스토리지를 사용 설정, 용량과 접근모드를 정의한 PV 를 생성한다. 그 다음 개발자는 어떤 스토리지 기술을 썼는지 알 필요 없이 접근모드와 용량을 적어 PVC 로 생성한다. PVC 가 생성되면 쿠버네티스가 알맞은 PV 를 찾아 바인딩하게 된다. 그 다음 파드에서 PVC 를 볼륨으로 사용하면 된다.

리클레임 정책


리클레임 정책이란 PV를 재사용할 때 기존에 PV안에 있는 데이터를 어떻게 할 지 결정하는 정책이다.

  • Delete: PVC 가 삭제되면 PV 도 같이 삭제된다. 따라서 재사용할 수 없다.
  • Recycle: 기존의 내용을 삭제하고 다시 사용할 수 있게끔 만든다.

동적 프로비저닝


기존 방법에선 PV 를 미리 생성해놔야 한다는 단점이 있다. 동적 프로비저닝을 사용하면 PVC 를 만들면 자동으로 PV를 만들어준다. 동적 프로비저닝을 사용하기 위해선 클러스터에 퍼시스턴트 볼륨 프로비저너를 배포하고 PV타입을 선택할 수 있는 StorageClass리소스를 클러스터에 배포해놓아야 한다. StorageClass리소스는 어떤 프로비저너가 사용돼야 할 지 지정하는 역할을 한다.

0개의 댓글