Skip to main content
本製品の最新リリースがご利用いただけます。
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

Google Cloud NetApp Volumes の SAN ワークロード向け設定

iSCSI プロトコルを使用して Google Cloud NetApp Volumes からブロックストレージボリュームをプロビジョニングするように Trident を設定できます。SAN ボリュームは、 `google-cloud-netapp-volumes-san`ストレージドライバを使用して Flex Unified ストレージプールからプロビジョニングされます。

メモ このドライバはブロックワークロード専用であり、NASプロトコルはサポートしていません。
メモ `google-cloud-netapp-volumes-san`バックエンドは、iSCSIブロックボリュームのプロビジョニングに必要です。 `google-cloud-netapp-volumes`バックエンドはNASプロトコルのみをサポートしており、SANワークロードには使用できません。

概要

Trident は、 `google-cloud-netapp-volumes-san`ドライバを使用して、Google Cloud NetApp Volumes SAN(iSCSI)ワークロードをサポートしています。

SANボリュームはFlex Unifiedストレージプールからプロビジョニングされ、iSCSIブロックデバイスとしてKubernetesノードに提示されます。

これは以下の環境に適用されます:

  • Trident 26.02以降

  • Google Kubernetes Engine(GKE)または Red Hat OpenShift

  • Google Cloud NetApp Volumes Flex統合ストレージプール

  • iSCSIベースのワークロード

Flex Unified ストレージプール

Flex Unifiedストレージプールは、iSCSIプロトコルを使用してブロックストレージを提供し、SANプロビジョニングに必要です:

  • Flex Unified REGIONAL プールがサポートされています。

  • Flex Unified ZONAL プールは、Trident 26.02.1 以降でサポートされています。

  • SANワークロードでは、*Flex*サービスレベルのみがサポートされます。

Trident SANバックエンドの設定

apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: gcnv-san
  namespace: trident
spec:
  version: 1
  storageDriverName: google-cloud-netapp-volumes-san
  projectNumber: "<project-number>"
  location: "<region>"
  sdkTimeout: "600"
  storage:
  - labels:
      cloud: gcp
      performance: flex
    network: "<vpc-network>"
    serviceLevel: Flex

StorageClass を作成する

SANバックエンドを設定したら、 `google-cloud-netapp-volumes-san`ドライバを参照するStorageClassを作成します。

ファイルシステムタイプは、バックエンドではなく StorageClass で定義されます。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gcnv-san
provisioner: csi.trident.netapp.io
parameters:
  backendType: "google-cloud-netapp-volumes-san"
  fsType: "ext4"
allowVolumeExpansion: true

サポートされているファイルシステムの種類:

  • ext4(デフォルト)

  • ext3

  • xfs

メモ SAN ドライバーは Flex サービス レベルのみをサポートし、 exportRuleunixPermissionsnasTypesnapshotDirnfsMountOptions、または階層化関連の設定などの NAS 固有のバックエンド パラメーターは使用しません。

ブロックボリュームのプロビジョニング

ReadWriteOnce(RWO)

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: gcnv-san-rwo
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi
  storageClassName: gcnv-san

ReadWriteOncePod(RWOP)

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: gcnv-san-rwop
spec:
  accessModes:
    - ReadWriteOncePod
  resources:
    requests:
      storage: 100Gi
  storageClassName: gcnv-san

ReadOnlyMany(ROX)

ROXの一般的なパターンは、既存のReadWriteOnceボリュームをクローンし、そのクローンを読み取り専用としてマウントすることです。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: gcnv-san-rox
spec:
  accessModes:
    - ReadOnlyMany
  resources:
    requests:
      storage: 100Gi
  storageClassName: gcnv-san
  dataSource:
    kind: PersistentVolumeClaim
    name: gcnv-san-rwo

ReadWriteMany(RWX)— 生ブロックのみ

ReadWriteMany は、 `volumeMode: Block`の場合にのみサポートされます。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: gcnv-san-raw-rwx
spec:
  accessModes:
    - ReadWriteMany
  volumeMode: Block
  resources:
    requests:
      storage: 100Gi
  storageClassName: gcnv-san

ブロックボリュームの動作

ブロックボリュームはiSCSI LUNとしてプロビジョニングされ、ブロックデバイスとしてKubernetesノードに提供されます。

ブロックボリューム:

  • iSCSIプロトコルを使用する

  • ファイルシステムと生ブロックの表示をサポート

  • Tridentによってアタッチおよび管理される

  • 複数のKubernetesアクセスモードをサポート

アクセスモード

Trident によってプロビジョニングされたブロックボリュームは、以下のアクセスモードをサポートします:

  • ReadWriteOnce (RWO)

  • ReadOnlyMany(ROX)

  • ReadWriteOncePod(RWOP)

  • ReadWriteMany(RWX)は、以下の場合にのみサポートされます。 volumeMode: Block

volumeMode の動作

`volumeMode`フィールドは、ブロックボリュームの公開方法を制御します。
  • Filesystem Trident はボリュームをフォーマットしてマウントします。

  • Block Trident はデバイスを接続し、rawブロックデバイスとして公開します。

サポートされている操作

`google-cloud-netapp-volumes-san`ドライバーを使用してプロビジョニングされたブロックボリュームがサポートする機能:
  • 作成

  • 削除

  • クローン

  • Snapshot

  • サイズ変更

  • インポート

余分な GiB のオーバープロビジョニング動作

Google Cloud NetApp Volumes ブロックボリュームには、内部メタデータのオーバーヘッドが含まれます。このオーバーヘッドにより、カーネルから見えるデバイスサイズは、プロビジョニングされた容量と比較して小さくなります。

テスト結果:

  • 初回作成時に約300 KiBのオーバーヘッドが発生します。

  • サイズ変更後、最大約 107 MiB のオーバーヘッドが発生します。

Google Cloud NetApp Volumes はGiB単位の割り当てのみを受け入れるため、Trident は以下の方法により、使用可能なデバイスサイズが常にPVCの要求を満たすか、それを超えることを保証します:

  • 要求されたサイズを次の整数GiBに切り上げます

  • 1 GiB のバッファを追加する

例:

  • PVCリクエスト:100 GiB

  • Google Cloud NetApp Volumes でプロビジョニングされたサイズ:101 GiB

  • アプリケーションから見える使用可能な容量:少なくとも100 GiB

Podの例

ファイルシステムマウントされたブロックボリューム(RWO)

apiVersion: v1
kind: Pod
metadata:
  name: app-rwo
spec:
  containers:
  - name: app
    image: ubuntu:22.04
    command: ["sleep", "infinity"]
    volumeMounts:
    - name: data
      mountPath: /mnt/data
  volumes:
  - name: data
    persistentVolumeClaim:
      claimName: gcnv-san-rwo

生ブロックデバイス(RWX)

apiVersion: v1
kind: Pod
metadata:
  name: app-raw-rwx
spec:
  containers:
  - name: app
    image: ubuntu:22.04
    command: ["sleep", "infinity"]
    volumeDevices:
    - name: data
      devicePath: /dev/xda
  volumes:
  - name: data
    persistentVolumeClaim:
      claimName: gcnv-san-raw-rwx

アタッチおよびマウント動作

Google Cloud NetApp Volumes からプロビジョニングされた SAN ボリュームの場合:

  • Tridentは、Flex Unifiedストレージプール内に論理ユニット番号(LUN)を作成します。

  • 公開中、Trident は LUN をノードごとのホストグループにマッピングします。

  • ノードステージング中、Trident:

    • iSCSIターゲットにログインします

    • LUNを検出します

    • マルチパスを設定します

  • `volumeMode: Filesystem`の場合、Tridentは必要に応じてデバイスをフォーマットし、マウントします。

  • `volumeMode: Block`の場合、Tridentはデバイスを接続し、フォーマットやマウントを行わずに直接Podに公開します。

メモ SANブロックボリュームは、分散ロックや書き込み調整機能を提供しません。ブロックボリュームが複数のノードからアクセスされる場合(ReadWriteManyと volumeMode: Block)、アプリケーションまたはファイルシステムは、並行処理を管理する必要があります。