vSphere の クラウド ネイティブ ストレージ 環境について重要ないくつかの概念を理解しておきます。

クラウド ネイティブ ストレージ環境のコンポーネント。

Kubernetes クラスタ
クラウド ネイティブ ストレージ 環境では、仮想マシンのクラスタに汎用 Kubernetes クラスタをデプロイできます。Kubernetes クラスタの上部で、コンテナ化されたアプリケーションを展開します。アプリケーションには、ステートフルまたはステートレスのいずれかの状態があります。
注: vSphere IaaS control plane で実行できる スーパーバイザー および Tanzu Kubernetes Grid の詳細については、『 vSphere IaaS 制御プレーンの概念と計画』ドキュメントを参照してください。
ポッド
ポッドは、ストレージやネットワークなどのリソースを共有する 1 つ以上のコンテナ化されたアプリケーションのグループです。ポッド内のコンテナは、グループとして開始、停止、および複製されます。
コンテナ Orchestrator
ホストのクラスタ間でコンテナ化されたアプリケーションを展開、拡張、および管理するための Kubernetes などのオープンソース プラットフォーム。プラットフォームは、コンテナを中心としたインフラストラクチャを提供します。
ステートフル アプリケーション
コンテナ アプリケーションがステートレスからステートフルに発展すると、永続的なストレージが必要になります。セッション間でデータを保存しないステートレス アプリケーションとは異なり、ステートフル アプリケーションはデータを永続的なストレージに保存します。保持されたデータは、アプリケーションの状態と呼ばれます。後でデータを取得し、次のセッションで使用することができます。ほとんどのアプリケーションはステートフルです。データベースは、ステートフル アプリケーションの一例です。
PersistentVolume
ステートフル アプリケーションは、PersistentVolumes を使用してデータを保存します。PersistentVolume は、その状態とデータを保持できる Kubernetes ボリュームです。ポッドからは独立しており、ポッドが削除または再構成されても引き続き存在できます。vSphere 環境では、PersistentVolume オブジェクトは First Class Disk (FCD) タイプの vSphere 仮想ディスクまたは vSAN ファイル共有をバッキング ストレージとして使用します。First Class Disks は、IVD (Improved Virtual Disks) または管理対象仮想ディスクとも呼ばれます。
  • 仮想ディスクは、ReadWriteOnce としてマウントされたボリュームをサポートします。これらのボリュームは、Kubernetes の単一ポッドでのみ使用できます。

    vSphere 暗号化テクノロジーを使用して、パーシステント ボリュームをバッキングする FCD 仮想ディスクを保護することができます。詳細については、『vSphere クラウド ネイティブ ストレージでの暗号化の使用』を参照してください。

  • vSAN ファイル共有は、多くのノードでマウントされている ReadWriteMany ボリュームをサポートします。これらのボリュームは、複数のポッド間、または Kubernetes ノードや Kubernetes クラスタで実行されているアプリケーション間で共有できます。ファイル共有で可能な構成の詳細については、vSAN ファイル サービスを使用した vSphere ファイル ボリュームのプロビジョニングを参照してください。
StorageClass
Kubernetes は、StorageClass を使用して、ストレージのさまざまな階層を定義し、PersistentVolume をバッキングするストレージの各種要件を記述します。vSphere 環境では、ストレージ クラスをストレージ ポリシーにリンクできます。vSphere 管理者は、さまざまなストレージ要件を記述したストレージ ポリシーを作成します。仮想マシン ストレージ ポリシーは、動的ボリューム プロビジョニングの StorageClass 定義の一部として使用されます。

次のサンプルの YAML ファイルは、以前に vSphere Client を使用して作成した Gold ストレージ ポリシーを示しています。作成されたパーシステント ボリューム VMDK は、Gold ストレージ ポリシー要件を満たす、互換性のあるデータストアに配置されます。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: gold-sc
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: csi.vsphere.vmware.com
parameters:
  storagepolicyname: "Gold"
  
PersistentVolumeClaim
通常、アプリケーションまたはポッドは PersistentVolumeClaim を介して永続的なストレージを要求できます。PersistentVolumeClaim では、ストレージのクラス、アクセス モード(ReadWriteOnce または ReadWriteMany)、PersistentVolume のその他のパラメータを指定します。この要求により、対応する PersistentVolume オブジェクトと、vSphere 環境で基盤となる仮想ディスクまたは vSAN ファイル共有を動的にプロビジョニングできます。
要求が作成されると、PersistentVolume が自動的に要求にバインドされます。ポッドは、要求を使用して PersistentVolume とアクセス ストレージをマウントします。
この要求を削除すると、対応する PersistentVolume オブジェクトおよび基盤となるストレージが削除されます。
kind: PersistentVolumeClaim
metadata:
 name: persistent-VMDK
spec:
 accessModes:
 - ReadWriteOnce
 resources:
 requests:
 storage: 5Gi
 storageClassName: gold-sc