vSphere with Tanzu はいくつかのコンポーネントを使用して、vSphere ストレージと統合します。

vCenter Server 上のクラウド ネイティブ ストレージ (CNS)
CNS コンポーネントは、 vCenter Server に配置されます。これは、パーシステント ボリュームのプロビジョニングとライフサイクルの操作を実装する vCenter Server 管理の拡張機能です。
コンテナ ボリュームをプロビジョニングするときに、コンポーネントは vSphere の最初のクラス ディスク機能と通信して、ボリュームをバッキングする仮想ディスクを作成します。また、CNS サーバ コンポーネントは、ストレージ ポリシーベースの管理と通信して、ディスクに必要なサービス レベルを確保します。
CNS は、vSphere 管理者が vCenter Server を介してパーシステント ボリュームとそのバッキング ストレージ オブジェクトを管理および監視するクエリ処理も実行します。
最初のクラス ディスク (FCD)
強化された仮想ディスクとも呼ばれます。これは、仮想マシンと関連付けられていない名前付き仮想ディスクです。これらのディスクは、VMFS、NFS、または vSAN データストア、およびバック ReadWriteOnce パーシステント ボリュームに配置されます。

FCD テクノロジーは、仮想マシンまたはポッドのライフサイクル外でパーシステント ボリュームに関連するライフサイクル操作を実行します。

FCD を使用する場合は、次の点に注意してください。
  • FCD は NFS 4.x プロトコルをサポートしません。代わりに、NFS 3 を使用してください。
  • vCenter Server は、同じ FCD での操作をシリアル化しません。したがって、アプリケーションは同じ FCD で複数の操作を同時に実行できません。複数のスレッドからクローン作成、再配置、削除、取得などの操作を同時に実行すると、予期しない結果になります。問題を回避するには、アプリケーションが同じ FCD で操作を実行するときに、順番に実行する必要があります。
  • FCD は管理対象オブジェクトではなく、単一 FCD への複数の書き込みから保護するグローバル ロックをサポートしていません。したがって、複数の vCenter Server インスタンスで同じ FCD を管理することはできません。FCD で複数の vCenter Server インスタンスを使用する必要がある場合は、次の方法を使用できます。
    • 複数の vCenter Server インスタンスで複数のデータストアを管理できます。
    • 複数の vCenter Server インスタンスが同じ FCD で動作することはありません。
ストレージ ポリシー ベースの管理
ストレージ ポリシー ベースの管理は、ストレージ ポリシーに記述されているストレージ要件に従って、パーシステント ボリュームとそのバッキング仮想ディスクのプロビジョニングをサポートする、 vCenter Server サービスです。プロビジョニング後、サービスは、ストレージ ポリシー特性に対するボリュームのコンプライアンスを監視します。ストレージ ポリシー ベースの管理の詳細については、「 ストレージ ポリシー ベースの管理」を参照してください。
vSphere CNS-CSI
vSphere CNS-CSI コンポーネントは、コンテナ ストレージ インターフェイス (CSI) 仕様に準拠しています。これは、Kubernetes のようなコンテナ オーケストレータによってパーシステント ストレージのプロビジョニングに使用されるインターフェイスを提供するために設計された業界標準です。CNS-CSI は スーパーバイザー クラスタ で実行され、vSphere ストレージを vSphere 名前空間 の Kubernetes 環境に接続します。vSphere CNS-CSI は、 vSphere ポッド と名前空間の Tanzu Kubernetes クラスタで実行されているポッドから送信される、すべてのストレージ プロビジョニング要求について、CNS 制御プレーンと直接通信します。
準仮想化 CSI (pvCSI)
pvCSI は Tanzu Kubernetes クラスタ用に変更された vSphere CNS-CSI ドライバのバージョンです。pvCSI は Tanzu Kubernetes クラスタに配置され、 Tanzu Kubernetes クラスタから送信されるすべてのストレージ関連の要求に対処します。要求は CNS-CSI に配信され、 vCenter Server の CNS に伝達されます。その結果、pvCSI は CNS コンポーネントとの直接通信は行わず、すべてのストレージ プロビジョニング操作に CNS-CSI を使用します。
CNS-CSI とは異なり、pvCSI はインフラストラクチャの認証情報を必要としません。 vSphere 名前空間 のサービス アカウントを使用して構成されます。

CNS は vCenter Server コンポーネントとして、CNS-CSI は スーパーバイザー クラスタ コンポーネントとして表示されます。pvCSI は TKG クラスタ コンポーネントです。

次の図は、DevOps エンジニアが Tanzu Kubernetes クラスタ内でストレージ関連の操作(たとえば、パーシステント ボリューム要求 (PVC) の作成)を実行するときに、さまざまなコンポーネントがどのように相互作用するかを示しています。

DevOps エンジニアは、Tanzu Kubernetes クラスタでコマンド ラインを使用して PVC を作成します。このアクションにより、対応する PVC がスーパーバイザー クラスタに生成され、CNS-CSI がトリガされます。CNS-CSI は、CNS ボリューム作成 API を呼び出します。

3 つのコンポーネントが相互作用してパーシステント ボリュームを作成します。

ボリュームの作成が正常に完了すると、操作はスーパーバイザー クラスタを介して元の Tanzu Kubernetes クラスタに伝達されます。この伝達の結果、ユーザーは、スーパーバイザー クラスタでバインド状態のパーシステント ボリュームとパーシステント ボリュームの要求を確認できます。また、バインド状態のパーシステント ボリュームとパーシステント ボリュームの要求は Tanzu Kubernetes クラスタでも確認できます。