特定の Kubernetes ワークロードでデータを永続的に保存するには、パーシステント ストレージが必要です。Kubernetes ワークロード用にパーシステント ストレージをプロビジョニングするため、vSphere with Tanzu は、パーシステント ボリュームを管理する vCenter Server コンポーネントであるクラウド ネイティブ ストレージ (CNS) と統合します。
パーシステント ストレージは、vSphere ポッド、Tanzu Kubernetes クラスタ、および仮想マシンで使用します。次の例では、vSphere ポッド でのパーシステント ストレージの使用方法を示します。
vSphere with Tanzu とパーシステント ストレージがどのように連携するかを理解するには、以下の重要な概念を把握しておく必要があります。
- パーシステント ボリューム
-
パーシステント ストレージを提供するために、Kubernetes では、その状態とデータを保持できるパーシステント ボリュームを使用します。パーシステント ボリュームがポッドによってマウントされている場合は、ポッドを削除または再構成しても、パーシステント ボリュームは引き続き存在します。vSphere with Tanzu 環境では、パーシステント ボリューム オブジェクトは、データストアの最初のクラス ディスクによってバッキングされます。
vSphere with Tanzu は、ボリュームをポッド単体にマウント可能な ReadWriteOnce モードでボリュームの動的/静的プロビジョニングをサポートします。
vSphere 7.0 Update 3 リリース以降、vSphere with Tanzu は Tanzu Kubernetes クラスタ内のパーシステント ボリュームに対しても ReadWriteMany モードをサポートしています。ReadWriteMany サポートにより、1 つのクラスタ内で実行されている複数のポッドまたはアプリケーションによって 1 つのボリュームを同時にマウントできます。vSphere with Tanzu は、ReadWriteMany タイプのパーシステント ボリュームに vSAN ファイル共有を使用します。詳細については、vSphere with Tanzu での ReadWriteMany パーシステント ボリュームの作成を参照してください。
- 動的および静的プロビジョニング
-
動的ボリューム プロビジョニングが有効な場合は、ストレージを事前にプロビジョニングしておく必要はありません。パーシステント ボリュームは必要に応じて作成できます。DevOps エンジニアは、名前空間で使用可能なストレージ クラスを参照するパーシステント ボリュームの要求を発行します。vSphere with Tanzu は、対応するパーシステント ボリュームとバッキング仮想ディスクを自動的にプロビジョニングします。
スーパーバイザー クラスタ と Tanzu Kubernetes クラスタは両方とも、動的プロビジョニングをサポートしています。
パーシステント ボリュームの動的作成例については、ステートフル アプリケーションの動的パーシステント ボリュームのプロビジョニングを参照してください。
- 最初のクラス ディスク
-
vSphere with Tanzu は、最初のクラス ディスク (FCD) タイプの仮想ディスクを使用して、パーシステント ボリュームをバッキングします。改善した仮想ディスクとも呼ばれる最初のクラス ディスクは、仮想マシンに関連付けられていない名前付き仮想ディスクです。
最初のクラス ディスクは UUID で識別されます。この UUID は、グローバルで一意な FCD のプライマリ識別子です。UUID は、FCD が再配置された場合やそのスナップショットが作成された場合でも有効なままです。
- パーシステント ボリュームの要求
-
DevOps エンジニアは、パーシステント ストレージ リソースを要求するためにパーシステント ボリュームの要求を作成します。この要求により、パーシステント ボリューム オブジェクトとそれに対応する仮想ディスクがプロビジョニングされます。vSphere Client では、パーシステント ボリュームの要求は、vSphere 管理者が監視できる FCD 仮想ディスクとして表されます。
- ストレージ クラス
-
Kubernetes では、ストレージ クラスを使用して、パーシステント ボリュームをバッキングするストレージの要件を記述します。DevOps エンジニアは、パーシステント ボリュームの要求指定に特定のストレージ クラスを含めて、そのクラスが示すタイプのストレージを要求できます。
パーシステント ストレージのワークフロー
vSphere with Tanzu にパーシステント ストレージをプロビジョニングするためのワークフローには、一般に、次の一連のアクションが含まれます。
手順 |
操作 |
説明 |
---|---|---|
1 |
vSphere 管理者が DevOps チームにパーシステント ストレージ リソースを提供します。 |
vSphere 管理者は、さまざまなストレージ要件およびサービス クラスを記述する仮想マシン ストレージ ポリシーを作成します。その後、ストレージ ポリシーを vSphere 名前空間 に割り当てることができます。 |
2 |
vSphere with Tanzu により、vSphere 名前空間 に割り当てられたストレージ ポリシーと一致するストレージ クラスが作成されます。 |
ストレージ クラスは Kubernetes 環境に自動的に表示され、DevOps チームが使用できるようになります。vSphere 管理者が vSphere 名前空間 に複数のストレージ ポリシーを割り当てると、ストレージ ポリシーごとに個別のストレージ クラスが作成されます。 Tanzu Kubernetes Grid サービス を使用して Tanzu Kubernetes クラスタをプロビジョニングした場合、各 Tanzu Kubernetes クラスタには、このクラスタがプロビジョニングされている vSphere 名前空間 からストレージ クラスが継承されます。 |
3 |
DevOps エンジニアがストレージ クラスを使用して、ワークロードのパーシステント ストレージ リソースを要求します。 |
この要求は、特定のストレージ クラスを参照するパーシステント ボリュームの要求の形式で行います。 |
4 |
vSphere with Tanzu により、ワークロードに対して、パーシステント ボリューム オブジェクトとそれに対応するパーシステント仮想ディスクが作成されます。 |
vSphere with Tanzu は、元のストレージ ポリシーとそれに一致するストレージ クラスで指定された要件を満たす仮想ディスクをデータストアに配置します。仮想ディスクはワークロードを使用してマウントできます。 |
5 |
vSphere 管理者が vSphere with Tanzu 環境のパーシステント ボリュームを監視します。 |
vSphere 管理者は、vSphere Client を使用して、パーシステント ボリュームとそのバッキング仮想ディスクを監視します。また、パーシステント ボリュームのストレージ コンプライアンスと健全性ステータスを監視することもできます。 |
vSphere with Tanzu のパーシステント ストレージについては、こちらのビデオをご覧ください。
vSphere 管理者のストレージ管理タスク
通常、vSphere with Tanzu のパーシステント ストレージ管理タスクには次のようなものがあります。vSphere 管理者は、vSphere Client を使用してこれらのタスクを実行します。
仮想マシン ストレージ ポリシーのライフサイクル操作を実行します。
スーパーバイザー クラスタ を有効にして名前空間を構成する前に、パーシステント ストレージのストレージ ポリシーを作成します。ストレージ ポリシーは、DevOps エンジニアから伝えられたストレージ要件に基づきます。vSphere with Tanzu のストレージ ポリシーの作成を参照してください。
注:対応するストレージ クラスを含むパーシステント ボリュームの要求が名前空間で実行されている場合は、vCenter Server または vSphere 名前空間 からストレージ ポリシーを削除しないでください。この推奨事項は、Tanzu Kubernetes クラスタにも適用されます。
ストレージ ポリシーを名前空間に割り当てて、ストレージ制限を設定することで、ストレージ リソースを DevOps エンジニアに提供します。ストレージ ポリシー割り当ての変更については、名前空間のストレージ設定の変更を参照してください。制限の設定については、vSphere 名前空間 での Kubernetes オブジェクトの制限の構成を参照してください。
vSphere Client で、Kubernetes オブジェクトとそのストレージ ポリシーのコンプライアンスを監視します。vSphere Client のパーシステント ボリュームの監視を参照してください。
DevOps エンジニアのストレージ管理タスク
通常、DevOps エンジニアは kubectl を使用して次のストレージ タスクを実行します。
ストレージ クラスを管理する。vSphere 名前空間 または Tanzu Kubernetes クラスタでのストレージ クラスの表示を参照してください。
ステートフル アプリケーションをデプロイして管理する。ステートフル アプリケーションの動的パーシステント ボリュームのプロビジョニングを参照してください。
パーシステント ボリュームのライフサイクル操作を実行する。Tanzu Kubernetes パーシステント ボリュームの要求例を参照してください。