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 サービス レベルのみをサポートし、 exportRule、 unixPermissions、 nasType、 snapshotDir、 nfsMountOptions、または階層化関連の設定などの 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`フィールドは、ブロックボリュームの公開方法を制御します。
-
FilesystemTrident はボリュームをフォーマットしてマウントします。 -
BlockTrident はデバイスを接続し、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)、アプリケーションまたはファイルシステムは、並行処理を管理する必要があります。
|