Google Distributed Cloud의 VM 런타임에서 스토리지 클래스 만들기 및 사용

이 문서는 베어메탈용 GKE를 실행하는 애플리케이션 소유자와 플랫폼 관리자를 대상으로 합니다. 이 문서에서는 Google Distributed Cloud에서 VM 런타임을 사용하는 VM의 스토리지 클래스를 만들고 사용하는 방법을 보여줍니다. StorageClass을 사용하면 VM의 다양한 요구를 충족하기 위해 다양한 스토리지 구성을 정의할 수 있습니다.

시작하기 전에

이 문서를 완료하려면 베어메탈용 GKE 버전 1.12.0(anthosBareMetalVersion: 1.12.0) 이상 클러스터에 액세스할 수 있어야 합니다. 워크로드 실행이 가능한 모든 클러스터 유형을 사용할 수 있습니다. 필요한 경우 Compute Engine에서 베어메탈용 GKE를 사용해 보거나 클러스터 만들기 개요를 참조하세요.

스토리지 클래스 개요

StorageClass을 사용하여 VM에 사용할 수 있는 스토리지 유형을 정의합니다. 다양한 스토리지 클래스가 여러 유형의 스토리지 하드웨어, 파일 시스템 또는 성능에 매핑될 수 있습니다. Google Distributed Cloud의 VM 런타임에서 스토리지 클래스를 만들고 사용하여 컴퓨팅 워크로드를 지원할 수 있습니다. 자세한 내용은 저장소 클래스를 참조하세요.

Google Distributed Cloud의 VM 런타임에 대한 커스텀 리소스에 기본 StorageClass를 정의할 수 있습니다. VirtualMachineDisks,를 만들 때 특정 클래스를 정의하지 않으면 이 기본 StorageClass가 사용됩니다. 초기 StorageClass는 구성되지 않고 기본값으로 설정됩니다. 다음 섹션에서는 이 기본 StorageClass를 설정 또는 업데이트하는 방법을 알아봅니다.

기본 StorageClass 설정 또는 업데이트

처음에는 Google Distributed Cloud에서 VM 런타임을 사용하는 베어메탈용 GKE에 기본 StorageClass가 구성되어 있지 않았습니다. StorageClass를 지정하지 않고 VirtualMachineDisk를 만들려면 먼저 StorageClass를 만든 다음 기본값으로 설정해야 합니다.

VirtualMachineDisk를 만들 때 Google Distributed Cloud의 VM 런타임이 사용하는 기본 StorageClass를 처음 설정하거나 업데이트하려면 VMRuntime 커스텀 리소스를 업데이트합니다.

  1. VMRuntime 커스텀 리소스를 수정합니다.

    kubectl edit vmruntime
    
  2. 사용할 기본 StorageClass를 지정하는 spec.storage 섹션을 추가하거나 업데이트합니다.

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      enabled: true
      storage:
        defaultStorageClass: STORAGE_CLASS_NAME
    ...
    

    사용할 기본 StorageClass의 이름으로 STORAGE_CLASS_NAME을 수정합니다. 먼저 StorageClass를 만들어야 하는 경우 StorageClass 만들기를 참조하세요.

  3. 편집기에서 VMRuntime 커스텀 리소스를 저장하고 닫습니다.

    이제 가상 머신 디스크를 만들고 StorageClass를 지정하지 않으면 지정한 StorageClass가 사용됩니다. 다음 섹션에서는 디스크를 만들고 특정 StorageClass를 사용하는 방법을 보여줍니다.

    기존 VirtualMachineDisk 리소스는 새로 지정된 StorageClass를 사용하도록 업데이트되지 않습니다.

특정 StorageClass 사용

VirtualMachineDisk를 만들 때 기본 StorageClass를 사용하지 않으려면 storageClassName 필드를 사용하여 다른 StorageClass를 지정합니다.

VirtualMachineDisk를 만들 때 이미 정의된 특정 StorageClass를 사용하려면 다음 단계를 완료합니다.

  1. 원하는 편집기에서 my-disk.yaml과 같은 VirtualMachineDisk 매니페스트를 만듭니다.

    nano my-disk.yaml
    
  2. 다음 YAML 매니페스트를 복사하여 붙여넣습니다.

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: DISK_NAME
    spec:
      size: 10Gi
      storageClassName: STORAGE_CLASS_NAME
    

    다음 값을 바꿉니다.

    • DISK_NAME: 디스크의 이름입니다.
    • STORAGE_CLASS_NAME: 디스크에 사용할 StorageClass입니다. 이 StorageClass는 이미 존재해야 합니다. 먼저 StorageClass를 만들어야 하는 경우 StorageClass 만들기를 참조하세요.
  3. 편집기에서 디스크 매니페스트를 저장하고 닫습니다.

  4. kubectl을 사용하여 디스크를 만듭니다.

    kubectl apply -f my-disk.yaml
    

스토리지 프로필 구성

스토리지 프로필은 각 StorageClass와 연결된 추가 구성 옵션을 제공합니다. 이러한 구성 옵션에는 StorageClass를 사용하는 VirtualMachineDisks에 사용할 액세스 모드 및 볼륨 모드가 포함됩니다.

구성된 스토리지 프로필이 없으면 디스크는 기본적으로 ReadWriteOnce 액세스 모드로 설정됩니다. 이 액세스 모드는 라이브 마이그레이션과 같은 기능이 작동하지 않기 때문에 프로덕션 워크로드에 충분하지 않습니다. 구성된 스토리지 프로필이 없는 기본 볼륨 모드는 Filesystem입니다.

Google Distributed Cloud의 VM 런타임은 클러스터의 StorageClass마다 스토리지 프로필 하나를 자동으로 생성합니다. 스토리지 프로필은 연결된 StorageClass와 이름이 동일합니다. 다음 출력 예시는 클러스터에 4개의 스토리지 클래스 및 연결된 프로필이 있음을 보여줍니다.

  $ kubectl get storageprofiles

  NAME            AGE
  anthos-system   11d
  node-disk       11d
  standard        11d
  nfs             11d

스토리지 프로필을 수정하고 액세스 모드 또는 볼륨 모드를 변경하려면 다음 단계를 완료합니다.

  1. 수정을 위해 StorageProfile 커스텀 리소스를 수정합니다.

    kubectl edit storageprofile STORAGE_PROFILE_NAME
    

    STORAGE_PROFILE_NAME을 수정하려는 StorageProfile로 바꿉니다.

  2. StorageProfilespec.claimPropertySets 목록에 단일 항목을 추가합니다.

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: StorageProfile
    metadata:
      name: nfs
    spec:
      claimPropertySets:
      - accessModes:
        - ACCESS_MODE
        volumeMode: VOLUME_MODE
    

    accessModevolumeMode는 기본 Kubernetes 구성요소를 사용합니다. 설정하는 값은 사용하는 스토리지 드라이버에 따라 다릅니다. 사용하는 스토리지에 맞게 다음 값을 바꿉니다.

    • ACCESS_MODE: 사용하려는 액세스 모드입니다. 연결된 StorageClass에서 지원하는 경우 권장 액세스 모드는 ReadWriteMany입니다.
      • 허용되는 값에는 ReadWriteOnce, ReadOnlyMany, ReadWriteManyReadWriteOncePod가 포함됩니다. 지정하지 않으면 Google Distributed Cloud의 VM 런타임 기본값에 따라 ReadWriteOnce가 사용됩니다. 자세한 내용은 액세스 모드를 참조하세요.
    • VOLUME_MODE: 사용하려는 볼륨 모드입니다.
      • 허용되는 값에는 FilesystemBlock이 포함됩니다. 지정하지 않으면 Kubernetes 기본값에 따라 Filesystem이 사용됩니다. 자세한 내용은 볼륨 모드를 참조하세요.
  3. 편집기에서 StorageProfile 커스텀 리소스를 저장하고 닫습니다.

    정의한 스토리지 프로필 설정은 이제 가상 디스크를 만들 때 사용됩니다. 기존 VirtualMachineDisk 리소스는 정의된 스토리지 프로필 설정을 사용하도록 업데이트되지 않습니다.

다음 단계