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

Kubernetes クラスタ
Kubernetes 制御プレーンとワーカーサービスが実行されている仮想マシンのクラスタ。Kubernetes クラスタの上部で、コンテナ化されたアプリケーションを展開します。アプリケーションには、ステートフルまたはステートレスのいずれかの状態があります。
ポッド
ポッドは、ストレージやネットワークなどのリソースを共有する 1 つ以上のコンテナのグループです。ポッド内のコンテナは、グループとして開始、停止、および複製されます。
コンテナ Orchestrator
ホストのクラスタ間でコンテナ化されたアプリケーションを展開、拡張、および管理するための Kubernetes などのオープンソース プラットフォーム。プラットフォームは、コンテナを中心としたインフラストラクチャを提供します。
ステートフル アプリケーション
コンテナ アプリケーションがステートレスからステートフルに発展すると、永続的なストレージが必要になります。セッション間でデータを保存しないステートレス アプリケーションとは異なり、ステートフル アプリケーションはデータを永続的なストレージに保存します。保持されたデータは、アプリケーションの状態と呼ばれます。後でデータを取得し、次のセッションで使用することができます。ほとんどのアプリケーションはステートフルです。データベースは、ステートフル アプリケーションの一例です。
PersistentVolume
ステートフル アプリケーションは、PersistentVolumes を使用してデータを保存します。PersistentVolume は、その状態とデータを保持できる Kubernetes ボリュームです。ポッドからは独立しており、ポッドが削除または再構成されても引き続き存在できます。vSphere 環境では、PersistentVolume オブジェクトはバッキング ストレージとして仮想ディスク (VMDK) を使用します。
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 環境で基盤となる仮想ディスク が動的にプロビジョニングされます。
要求が作成されると、PersistentVolume が自動的に要求にバインドされます。ポッドは、要求を使用して PersistentVolume とアクセス ストレージをマウントします。
この要求を削除すると、対応する PersistentVolume オブジェクトが削除され、基盤となるストレージも削除されます。
kind: PersistentVolumeClaim
metadata:
 name: persistent-VMDK
spec:
 accessModes:
 - ReadWriteOnce
 resources:
 requests:
 storage: 5Gi
 storageClassName: gold-sc
StatefulSet
StatefulSet は、ステートフル アプリケーションの展開とスケーリングを管理します。StatefulSet は、安定した ID または安定した永続的なストレージを必要とするアプリケーションで役立ちます。StatefulSet を構成して、PersistentVolumeClaim オブジェクトを自動的に生成する volumeClaimTemplates エントリを含めることができます。