Kubernetes 볼륨 확장 기능을 사용하여 영구 블록 볼륨을 생성한 후 확장할 수 있습니다. TKG 서비스 클러스터는 오프라인 및 온라인 볼륨 확장을 지원합니다.

영구 볼륨 확장 정보

TKG 클러스터 환경에 나타나는 모든 스토리지 클래스는 기본적으로 allowVolumeExpansiontrue로 설정되어 있습니다. 이 매개 변수를 사용하면 오프라인 또는 온라인 볼륨의 크기를 수정할 수 있습니다.

볼륨이 노드 또는 포드에 연결되어 있지 않으면 오프라인으로 간주됩니다. 온라인 볼륨은 노드 또는 포드에서 사용할 수 있는 볼륨입니다.

볼륨 확장 기능에 대한 지원 수준은 vSphere 버전에 따라 다릅니다. 확장을 지원하는 적절한 버전으로 vSphere 환경을 업그레이드하는 경우 이전 버전의 vSphere에서 생성된 볼륨을 확장할 수 있습니다.

참고: 영구 블록 볼륨만 확장할 수 있습니다. 현재 vSphere IaaS control plane는 ReadWriteMany 볼륨에 대한 볼륨 확장을 지원하지 않습니다.
영구 블록 볼륨을 확장할 때는 다음 사항에 유의하십시오.
  • 볼륨은 스토리지 할당량에 지정된 제한까지 확장할 수 있습니다. vSphere IaaS control plane는 영구 볼륨 할당 개체에 대한 연속적인 크기 조정 요청을 지원합니다.
  • VMFS, vSAN, vSAN Direct, vVols 및 NFS를 포함한 모든 유형의 데이터스토어는 볼륨 확장을 지원합니다.
  • 배포 또는 독립형 포드에 대한 볼륨 확장을 수행할 수 있습니다.
  • Tanzu Kubernetes Grid 클러스터에서 정적으로 프로비저닝된 볼륨의 크기를 조절할 수 있습니다(볼륨에 연결된 스토리지 클래스가 있는 경우).
  • StatefulSet의 일부로 생성된 볼륨은 확장할 수 없습니다.
  • 볼륨을 지원하는 가상 디스크에 스냅샷이 있으면 크기를 조정할 수 없습니다.
  • vSphere IaaS control plane는 인-트리(in-tree) 또는 마이그레이션된 볼륨에 대한 볼륨 확장을 지원하지 않습니다.

온라인 모드에서 영구 볼륨 확장

온라인 볼륨은 노드 또는 포드에서 사용할 수 있는 볼륨입니다. DevOps 엔지니어는 온라인 영구 블록 볼륨을 확장할 수 있습니다. Tanzu Kubernetes Grid 클러스터는 온라인 볼륨 확장을 지원합니다.

  1. 다음 명령을 사용하여 크기를 조정할 영구 볼륨 할당을 찾습니다.

    이 예에서 볼륨이 사용하는 스토리지 크기는 1Gi입니다.

    $ kubectl get pv,pvc,pod
    NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM               STORAGECLASS   REASON   AGE
    persistentvolume/pvc-5cd51b05-245a-4610-8af4-f07e77fdc984   1Gi        RWO            Delete           Bound       default/block-pvc   block-sc                4m56s
     
    NAME                              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    persistentvolumeclaim/block-pvc   Bound    pvc-5cd51b05-245a-4610-8af4-f07e77fdc984   1Gi        RWO            block-sc       5m3s
     
    NAME            READY   STATUS    RESTARTS   AGE
    pod/block-pod   1/1     Running   0          26s
  2. PVC에 패치를 적용하여 크기를 늘립니다. 예를 들어 크기를 2Gi로 늘립니다.
    이 작업은 PVC와 연결된 볼륨에서 확장을 트리거합니다.
    $ kubectl patch pvc block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
    persistentvolumeclaim/block-pvc edited
  3. PVC와 PV의 크기가 모두 증가했는지 확인합니다.
    $ kubectl get pvc,pv,pod
    NAME                              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    persistentvolumeclaim/block-pvc   Bound    pvc-5cd51b05-245a-4610-8af4-f07e77fdc984   2Gi        RWO            block-sc       6m18s
     
    NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM               STORAGECLASS   REASON   AGE
    persistentvolume/pvc-5cd51b05-245a-4610-8af4-f07e77fdc984   2Gi        RWO            Delete           Bound       default/block-pvc   block-sc                6m11s
     
    NAME            READY   STATUS    RESTARTS   AGE
    pod/block-pod   1/1     Running   0          101s
  4. vSphere Client를 사용하여 새 영구 볼륨 크기를 확인합니다.

    Tanzu Kubernetes Grid 클러스터의 볼륨 상태 모니터링의 내용을 참조하십시오.

오프라인 모드에서 영구 볼륨 확장

볼륨이 노드 또는 포드에 연결되어 있지 않으면 오프라인으로 간주됩니다. Tanzu Kubernetes Grid 클러스터는 오프라인 볼륨 확장을 지원합니다.

  1. 기존 스토리지 클래스에 대한 PVC(영구 볼륨 할당)를 생성합니다.
    이 예에서 요청된 스토리지의 크기는 1Gi입니다.
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: example-block-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
      storageClassName: example-block-sc
    kubectl apply -f example-block-pvc.yaml 
  2. PVC에 패치를 적용하여 크기를 늘립니다.

    PVC가 노드에 연결되어 있지 않거나 포드에서 사용 중이면 다음 명령을 사용하여 PVC에 패치를 적용합니다. 이 예에서 요청된 스토리지 증가량은 2Gi입니다.

    이 작업은 PVC와 연결된 볼륨에서 확장을 트리거합니다.
    kubectl patch pvc example-block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
  3. 볼륨의 크기가 증가했는지 확인합니다.
    kubectl get pv
    NAME                                       CAPACITY ACCESS MODES RECLAIM POLICY STATUS   CLAIM                       STORAGECLASS           REASON AGE
    pvc-9e9a325d-ee1c-11e9-a223-005056ad1fc1   2Gi           RWO         Delete     Bound    default/example-block-pvc   example-block-sc              6m44s
  4. PVC의 크기 조정이 보류 중인지 확인합니다.
    참고: PVC의 크기는 포드에서 PVC가 사용될 때까지 변경되지 않은 상태로 유지됩니다.
    다음 예는 PVC 크기가 포드에서 사용되지 않았기 때문에 변경되지 않았음을 보여줍니다. kubectl describe pvc를 실행하면 PVC에 적용된 FilesystemResizePending 조건이 표시됩니다. 포드에서 사용되면 크기가 변경됩니다.
    kubectl get pvc
    NAME                STATUS VOLUME                                     CAPACITY ACCESS MODES   STORAGECLASS       AGE
    example-block-pvc   Bound  pvc-9e9a325d-ee1c-11e9-a223-005056ad1fc1   1Gi           RWO       example-block-sc   6m57s
  5. PVC를 사용하려면 포드를 생성합니다.

    포드에서 PVC를 사용하는 경우 파일 시스템이 확장됩니다.

  6. PVC의 크기가 수정되었는지 확인합니다.
    kubectl get pvc
    NAME                STATUS VOLUME                                    CAPACITY ACCESS MODES STORAGECLASS     AGE
    example-block-pvc   Bound  pvc-24114458-9753-428e-9c90-9f568cb25788   2Gi         RWO      example-block-sc 2m12s
    FilesystemResizePending 조건이 PVC에서 제거되었습니다. 볼륨 확장이 완료되었습니다.
  7. vSphere Client를 사용하여 새 영구 볼륨 크기를 확인합니다.

    Tanzu Kubernetes Grid 클러스터의 볼륨 상태 모니터링의 내용을 참조하십시오.