공대생 정리노트

6장 - 볼륨(2) PersistentVolume, PersistentVolumeClaim 본문

Kubernetes/Kubernetes in ACTION

6장 - 볼륨(2) PersistentVolume, PersistentVolumeClaim

woojinger 2021. 1. 11. 00:45

인프라스트럭처의 세부 사항을 처리하지 않고 애플리케이션이 쿠버네티스 클러스터에 스토리지를 요청할 수 있도록 하기 위해 도입된 리소스 - PersistentVolume, PersistentVolumeClaim

 

PersistentVolume과 PersistentVolumeClaim

개발자가 파드에 기술적인 세부 사항을 기재한 볼륨 추가를 하지 않는다.

 

1. 쿠러스터 관리자가 기반 스토리지를 설정하고 쿠버네티스 API 서버로 퍼시스턴트볼륨 리소스를 생성해 쿠버네티스에 등록

2. 퍼시스턴트볼륨이 생성되면 관리자는 크기와 지원 가능한 접근 모드 지정

3. 클러스터 사용자가 persistent storage 사용해야할 때 최소 크기와 필요 접근모드 명시한 퍼시스턴트볼륨클레임 manifest생성.

4. 사용자는 퍼시스턴트볼륨클레임 manifest를 쿠버네티스 API 서버에 게시하고 쿠버네티스는 적절한 퍼시스턴트볼륨을 찾아 클레임에 볼륨 바인딩

5. 퍼시스턴트볼륨클레임은 파드 내부의 볼륨 중 하나로 사용될 수 있다.

 

관리자 : NFS익스포트, 퍼시스턴트 볼륨 / 사용자 : 퍼시스턴트 볼륨클레임, 파드

 

PersistentVolume 생성 - 관리자

  • 물리 스토리지를 생성 - NFS 익스포트
  • 매니페스트를 만들어 API 서버에 게시해 퍼시스턴트 볼륨 생성 

PersistentVolumeClaim - 개발자

PersistentVolumeClaim 매니페스트 만들어 API에 게시한다. 그러면 쿠버네티스는 적절한 퍼시스턴트볼륨을 찾고 클레임에 바인딩 한다.

이렇게 된다면 퍼시스턴트 볼륨을 사용하고 있는 것이다. 파드 내부에서 볼륨을 사용하려면 파드 볼륨에서 퍼시스턴트볼륨클레임을 참조한다.

...
volumes:
- name: mongodb-data
  persistentVolumeClaim:
    claimName: mongodb-pvc

PersistentVolume과 PersistentVolumeClaim 사용의 장점

GCE 퍼시스턴트 디스크 직접 사용
PVC와 PV 사용

PVC와 PV를 사용하면 애플리케이션 개발자는 기저에 사용된 실제 스토리지 기술을 알 필요가 없다.

또한 파드와 클레임 매니페스트는 그대로 다른 쿠버네티스 클라우드에서도 사용할 수 있다.

퍼시스턴트볼륨의 동적 프로비저닝

위의 경우에는 개발자는 쉽게 퍼시스턴트 스토리지를 사용할 수 있으나 여전히 클러스터 관리자가 실제 스토리지를 미리 프로비저닝해야 한다.

쿠버네티스는 동적 프로비저닝을 통해 이 작업을 자동으로 수행할 수 있다.

클러스터 관리자가 PV을 생성하는 대신 PV 프로비저너를 배포하고 사용자가 선택 가능한 PV의 타입을 하나 이상의 스토리지클래스 오브젝트로 정의할 수 있다.

사용자가 PVC에서 스토리지클래스를 참조하면 프로비저너가 퍼시스턴트 스토리지를 프로비저닝할때 처리한다.

 

1. 관리자가 퍼시스턴트볼륨 프로비저너를 설정한다.

2. 관리자는 하나 이상의 스토리지클래스를 생성하고 하나를 기본값으로 정한다

3. 사용자는 스토리지 클래스 중 하나를 참조해 PVC를 생성한다.

4. 쿠버네티스는 스토리지클래스와 스토리지클래스에서 참조된 프로비저너를 보고 프로비저너에게 PVC로 요청된 접근 모드, 스토리지크기, 파라미터 기반으로 새 PV를 프로비저닝하도록 요청

5. 프로비저너가 실제 스토리지를 프로비저닝하고 PV 생성. PVC에 바인딩

6. 사용자는 PVC를 이름으로 참조하는 볼륨과 파드 생성

Comments