GDC 上の VM ランタイムでストレージ クラスを作成して使用する

このドキュメントは、GKE on Bare Metal を実行するアプリケーション オーナーとプラットフォーム管理者を対象としています。このドキュメントでは、GDC 上の VM ランタイムを使用する VM のストレージ クラスを作成して使用する方法について説明します。StorageClass を使用すると、VM のさまざまなニーズに応じて異なるストレージ構成を定義できます。

準備

このドキュメントの内容を最後まで行うには、GKE on Bare Metal バージョン 1.12.0(anthosBareMetalVersion: 1.12.0)以降のクラスタにアクセスする必要があります。ワークロードを実行可能な、どのクラスタタイプでも使用できます。必要に応じて、Compute Engine の GDCV for Bare Metal を試すか、クラスタ作成の概要をご覧ください。

ストレージ クラスの概要

StorageClass を使用して、VM で使用可能にするストレージのタイプを定義します。さまざまなストレージ クラスが、異なるタイプのストレージ ハードウェア、ファイル システム、パフォーマンスのものにマッピングされる場合があります。 GDC 上の VM ランタイムでコンピューティング ワークロードをサポートするストレージ クラスを作成し、使用することができます。詳しくは、ストレージ クラスをご覧ください。

デフォルトの StorageClass は、GDC 上の VM ランタイムのカスタム リソースで定義できます。VirtualMachineDisks, の作成時に特定のクラスを定義しない場合、このデフォルトの StorageClass が使用されます。初期の StorageClass は構成されず、デフォルトとして設定されます。次のセクションでは、このデフォルトのストレージ クラスを設定または更新する方法を学習します。

デフォルトのストレージ クラスを設定または更新する

初期状態では、GDC 上の VM ランタイムを持つ GKE on Bare Metal には、デフォルトの StorageClass が構成されていません。StorageClass を指定せずに VirtualMachineDisk を作成するには、まず StorageClass を作成してから、デフォルトに設定する必要があります。

VirtualMachineDisk の作成時に GDC 上の 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
    ...
    

    STORAGE_CLASS_NAME を、デフォルトで使用する StorageClass の名前に編集します。まず StorageClass を作成する必要がある場合は、StorageClass の作成をご覧ください。

  3. VMRuntime カスタム リソースをエディタに保存して閉じます。

    仮想マシンディスクを作成する際に StorageClass を指定しない場合、指定した StorageClass が使用されるようになりました。次のセクションでは、ディスクを作成して特定のストレージ クラスを使用する方法について説明します。

    既存の VirtualMachineDisk リソースは、新しく指定された StorageClass を使用するようには更新されません。

特定のストレージ クラスを使用する

VirtualMachineDisk を作成する際にデフォルトの StorageClass を使用しない場合は、storageClassName フィールドを使用して別の StorageClass を指定します。

VirtualMachineDisk を作成する際に特定の定義済み StorageClass を使用するには、次の手順を行います。

  1. 任意のエディタで、VirtualMachineDisk マニフェスト(my-disk.yaml など)を作成します。

    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 です。

GDC 上の VM ランタイムは、クラスタ内の StorageClass ごとに 1 つのストレージ プロファイルを自動的に生成します。ストレージ プロファイルは、関連する 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 リストにエントリを 1 つ追加します。

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

    accessModevolumeMode は、基盤となる Kubernetes コンポーネントを使用します。 設定する値は、使用するストレージ ドライバによって異なります。以下の値は、使用するストレージに応じて適宜読み替えてください。

    • ACCESS_MODE: 使用するアクセス モード。関連する StorageClass でサポートされている場合、優先アクセスモードは ReadWriteMany です。
      • 有効な値は ReadWriteOnceReadOnlyManyReadWriteManyReadWriteOncePod などです。指定しない場合、デフォルトで GDC 上の VM ランタイムに基づいて ReadWriteOnce が使用されます。詳細については、アクセスモードをご覧ください。
    • VOLUME_MODE: 使用するボリューム モード。
      • 有効な値は FilesystemBlock などです。指定しない場合、Kubernetes のデフォルトに基づいて Filesystem が使用されます。詳細については、ボリューム モードをご覧ください。
  3. StorageProfile カスタム リソースをエディタに保存して閉じます。

    定義したストレージ プロファイル設定は、仮想ディスクを作成する際に使用されます。既存の VirtualMachineDisk リソースは、定義したストレージ プロファイル設定を使用するようには更新されません。

次のステップ