ストレージ

このページでは、Anthos GKE On-Prem ストレージのコンセプトについて説明します。

概要

GKE On-Prem は、VMware ストレージ、vSphere ストレージ、Kubernetes in-tree Volume プラグイン(または「ドライバ」)、Container Storage Interface(CSI)ドライバを介して、外部ブロック ストレージまたはファイル ストレージ システムと統合されます。

GKE オンプレミス クラスタは、デフォルトの Kubernetes StorageClass を使用して、vSphere データストア上のステートフル ワークロードのストレージをプロビジョニングします。StorageClass を使用して、異なるストレージ ボリュームをプロビジョニングすることもできます。

vSphere ストレージ

デフォルトでは、GKE On-Prem クラスタは vSphere ストレージを使用します。管理クラスタでは、etcd データ用に事前にプロビジョニングされた vSphere データストアが必要です。

ユーザー クラスタを作成すると、GKE On-Prem は vSphere Kubernetes Volume プラグインを使用して、vSphere データストアに新しい仮想マシンディスク(VMDK)を動的にプロビジョニングします。(1.2 以前では、ユーザー クラスタは管理クラスタと同じデータストアを使用していました)。

管理クラスタとユーザー クラスタで使用される vSphere データストアは、外部ストレージ配列などのブロック デバイス上の、NFS、vSAN、VMFS でサポート可能です。マルチホスト環境では、各ブロック デバイスを環境内のすべてのホストに接続し、データストアは Mount Datastore on Additional Hosts のオプション経由の各ホスト上で構成される必要があります。

デフォルトのストレージ

GKE On-Prem クラスタには、デフォルトの Kubernetes StorageClass が含まれており、Kubernetes によるストレージのプロビジョニング方法を決定します。Kubernetes でストレージ ボリュームがプロビジョニングされると、Kubernetes の PersistentVolume で表されます。

ユーザー クラスタのデフォルトの StorageClass は、StorageClass の構成の datastore フィールドで設定された、vSphere データストアを参照します。デフォルトでは、ユーザー クラスタ用にプロビジョニングされた Kubernetes PersistentVolumes は、そのデータストアの VMDK です。これは管理クラスタで使用されるデータストアと同じである必要はありません。

GKE On-Premでは、Kubernetes StatefulSets(通常は永続ストレージが必要なステートフル ワークロード)は、デフォルトで vSphere ストレージを参照する StorageClasses でサポートされる PersistentVolumeClaimsを使用します。

Container Storage Interface

Container Storage Interface(CSI) は Kubernetes がコンテナ化されたワークロードに任意のストレージ システムを公開できるオープン標準 API です。CSI 互換のボリューム ドライバを GKE On-Prem クラスタにデプロイすると、vSphere ストレージを経由せずに、互換性のあるストレージ デバイスにワークロードを直接接続できます。

GKE On-Prem は CSI v1.0 をサポートしています。クラスタで CSI を使用するには、ストレージ ベンダーにより提供される CSI ドライバをデプロイする必要があります。続いて、ワークロードを構成してドライバの StorageClass を使用するか、デフォルトの StorageClass として設定することが可能です。

多くのストレージ ベンダーと提携して、GKE On-Prem でストレージ システムを認定しています。認定ストレージ パートナーの一覧をご覧ください。

デフォルトでは、GKE on-prem は、VMware からのツリー内ボリュームプラグインとして vCloud Cloud Provider(VCP)を利用します。これにより、vSAN などの VMware データストアのサポートが自動的に有効になります。GKE オンプレミスでは、今後のリリースで vSphere CSI ドライバが含まれるため、vSphere CSI ドライバを手動でデプロイすることは必須ではなく推奨もされません。

Kubernetes in-tree Volume プラグイン

Kubernetes には複数の in-tree Volume プラグインが用意されています。これらのいずれかを使用して、ステートフル ワークロードにブロック ストレージまたはファイル ストレージを提供するオプションがあります。In-tree プラグインを使用すると、vSphere ストレージを経由せずに、ワークロードをストレージに直接接続できます。

iSCSI、FC、NFS ストレージ デバイスでサポートされるデータストア内の Volume は自動的に動的プロビジョニングされますが、in-tree プラグインの多くは動的プロビジョニングをサポートしません。これらは PersistentVolume を手動で作成する必要があります。

次の表に、いくつかの in-tree Volume プラグインを示します。

in-tree Volume プラグイン説明サポートされたアクセスモード動的プロビジョニング
Fibre Channel汎用ストレージ プラグイン単一の Pod の読み取り / 書き込み×
iSCSI汎用ストレージ プラグイン単一の Pod の読み取り / 書き込み×
NFS汎用ストレージ プラグイン複数の Pod の読み取り / 書き込み×
Ceph RBDオープンソースのソフトウェア定義のストレージ単一の Pod の読み取り / 書き込み
CephFSオープンソースのソフトウェア定義のストレージ複数の Pod の読み取り / 書き込み×
Portworx独自仕様のソフトウェア定義のストレージ複数の Pod の読み取り / 書き込み
Quobyte独自仕様のソフトウェア定義のストレージ単一の Pod の読み取り / 書き込み
StorageOS独自仕様のソフトウェア定義のストレージ単一の Pod の読み取り / 書き込み

クラスタ ストレージの構成

vSphere データストア以外のストレージ ボリュームをプロビジョニングする場合は、別のストレージ ドライバを使用するクラスタに新しい StorageClass を作成できます。次に、StorageClass をクラスタのデフォルトとして設定するか、ワークロードを構成して StorageClass(StatefulSet など)を使用します。

トラブルシューティング

ストレージのトラブル シューティングをご覧ください。

関連情報