동적 볼륨 프로비저닝

동적 볼륨 프로비저닝

동적 볼륨 프로비저닝을 통해 온-디맨드 방식으로 스토리지 볼륨을 생성할 수 있다. 동적 프로비저닝이 없으면 클러스터 관리자는 클라우드 또는 스토리지 공급자에게 수동으로 요청해서 새 스토리지 볼륨을 생성한 다음, 쿠버네티스에 표시하기 위해 퍼시스턴트볼륨(PersistentVolume) 오브젝트를 생성해야 한다. 동적 프로비저닝 기능을 사용하면 클러스터 관리자가 스토리지를 사전 프로비저닝할 필요가 없다. 대신 사용자가 퍼시스턴트볼륨클레임(PersistentVolumeClaim) 오브젝트를 생성하면 스토리지를 자동으로 프로비저닝한다.

배경

동적 볼륨 프로비저닝의 구현은 storage.k8s.io API 그룹의 스토리지클래스(StorageClass) API 오브젝트를 기반으로 한다. 클러스터 관리자는 볼륨을 프로비저닝하는 볼륨 플러그인 (프로비저너라고도 알려짐)과 프로비저닝 시에 프로비저너에게 전달할 파라미터 집합을 지정하는 스토리지클래스 오브젝트를 필요한 만큼 정의할 수 있다. 클러스터 관리자는 클러스터 내에서 사용자 정의 파라미터 집합을 사용해 여러 유형의 스토리지(동일하거나 서로 다른 스토리지 시스템)를 정의하고 노출할 수 있다. 이 설계를 통해 최종 사용자는 스토리지 프로비저닝 방식의 복잡성과 세부 사항을 걱정할 필요 없이 여러 스토리지 옵션 중에서 선택할 수 있다.

자세한 내용은 스토리지 클래스 개념을 참고한다.

동적 프로비저닝 활성화하기

동적 프로비저닝을 활성화하려면 클러스터 관리자가 사용자를 위해 하나 이상의 스토리지클래스 오브젝트를 사전 생성해야 한다. 스토리지클래스 오브젝트는 동적 프로비저닝을 수행할 때 사용할 프로비저너와 해당 프로비저너에게 전달할 파라미터를 정의한다. 스토리지클래스 오브젝트의 이름은 유효한 DNS 서브도메인 이름이어야 한다.

다음 매니페스트는 표준 디스크와 같은 퍼시스턴트 디스크를 프로비저닝하는 스토리지클래스 "slow"를 만든다.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: slow
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-standard

다음 매니페스트는 SSD와 같은 퍼시스턴트 디스크를 프로비저닝하는 스토리지클래스 "fast"를 만든다.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-ssd

동적 프로비저닝 사용하기

사용자는 퍼시스턴트볼륨클레임에 스토리지클래스를 포함시켜 동적으로 프로비저닝된 스토리지를 요청한다. 쿠버네티스 v1.6 이전에는 volume.beta.kubernetes.io/storage-class 어노테이션으로 수행했다. 그러나 이 어노테이션은 v1.9부터 사용 중단(deprecated)되었다. 사용자는 이제 퍼시스턴트볼륨클레임 오브젝트의 storageClassName 필드를 사용할 수 있으며 또한 사용해야 한다. 이 필드의 값은 관리자가 구성한 스토리지클래스의 이름과 일치해야 한다(동적 프로비저닝 활성화하기를 참고).

예를 들어 "fast" 스토리지클래스를 선택하려면 다음과 같은 퍼시스턴트볼륨클레임을 생성한다.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: claim1
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: fast
  resources:
    requests:
      storage: 30Gi

이 클레임의 결과로 SSD와 같은 퍼시스턴트 디스크가 자동으로 프로비저닝된다. 클레임이 삭제되면 볼륨이 삭제된다.

기본 동작

스토리지클래스를 지정하지 않은 경우 모든 클레임이 동적으로 프로비저닝되도록 클러스터에서 동적 프로비저닝을 활성화할 수 있다. 클러스터 관리자는 이 방법으로 활성화할 수 있다.

관리자는 storageclass.kubernetes.io/is-default-class 어노테이션을 추가하여 특정 스토리지클래스를 기본으로 표시할 수 있다. 기본 스토리지클래스가 클러스터에 존재하고 사용자가 storageClassName을 지정하지 않은 퍼시스턴트볼륨클레임을 생성하면, DefaultStorageClass 어드미션 컨트롤러가 기본 스토리지클래스를 가리키는 storageClassName 필드를 자동으로 추가한다.

클러스터 내 두 개 이상의 스토리지클래스에 storageclass.kubernetes.io/is-default-class 어노테이션을 true로 설정한 다음, storageClassName이 설정되지 않은 퍼시스턴트볼륨클레임을 생성하면, 쿠버네티스는 가장 최근에 생성된 기본 스토리지클래스를 사용한다는 점에 유의한다.

토폴로지 인식

다중 영역 클러스터에서 파드는 한 지역 내 여러 영역에 걸쳐 분산될 수 있다. 파드가 스케줄링된 영역에서 단일 영역 스토리지 백엔드를 프로비저닝해야 한다. 볼륨 바인딩 모드를 설정해서 수행할 수 있다.

최종 수정 October 05, 2026 at 8:14 PM PST: [ko] Update dynamic-provisioning.md (#56808) (4472af4561)