vSphere 名前空間 は、スーパーバイザー のネットワーク範囲内のテナントです。vSphere 名前空間TKG サービス クラスタをホストするために使用され、ネットワーク、ロール権限、パーシステント ストレージ、リソース割り当て、およびコンテンツ ライブラリと仮想マシン クラスの統合を提供します。

vSphere 名前空間 ネットワーク

vSphere 名前空間 ネットワークとは、[スーパーバイザー] > [ワークロード ネットワーク] > [名前空間ネットワーク]によって取得されたサブネットです。[名前空間サブネット プリフィックス]は、各 vSphere 名前空間 用に予約されるサブネットのサイズを定義します。デフォルトは /28 です。

vSphere 名前空間 ネットワークは、TKG クラスタと スーパーバイザー の接続を提供します。デフォルトでは、vSphere 名前空間 はクラスタ レベルのネットワーク構成を使用し、そのサブネット内の IP アドレスを割り当てます。vSphere 名前空間 を作成すると、/28 オーバーレイ セグメントおよび対応する IP アドレス プールが、その vSphere 名前空間 内のサービス ポッドにインスタンス化されます。

最初の TKG クラスタが vSphere 名前空間 にプロビジョニングされると、TKG クラスタは vSphere 名前空間 と同じサブネットを共有します。後続の TKG クラスタがその vSphere 名前空間 にプロビジョニングされるたびに、そのクラスタ用の新しいサブネットが作成され、その vSphere 名前空間 ゲートウェイに接続されます。

vSphere 名前空間 には、kubectl トラフィックを各 TKG クラスタ制御プレーンにルーティングする共有ロード バランサ インスタンスがあります。また、TKG クラスタでリソースが提供される Kubernetes サービス ロード バランサごとに、そのサービスのレイヤー 4 ロード バランサ インスタンスが作成されます。

同じ vSphere 名前空間 内の TKG クラスタは、North-South 接続に SNAT IP アドレスを共有します。名前空間の間の East-West 接続は、SNAT ではありません。

通常、vSphere 名前空間 はルーティングできません。ただし、NSX ネットワークを使用している場合は、ルーティング可能なサブネットで vSphere 名前空間 ネットワークをオーバーライドできます。vSphere 名前空間のワークロード ネットワーク設定のオーバーライドを参照してください。

vSphere 名前空間 リソース プール

単一の vSphere Zone による スーパーバイザー デプロイでは、vSphere 名前空間 を作成すると、その名前空間をバッキングするリソース プールが作成されます。vSphere 名前空間 により、スーパーバイザー 上のコンピューティング、ストレージ、権限、クラス、イメージなどのリソースに論理的な単位が与えられます。たとえば、vSphere 名前空間 に CPU またはメモリの制限を構成すると、その名前空間をバッキングするリソース プールに同じリソース制限が適用されます。このようにして、vSphere 名前空間 により スーパーバイザー でのマルチテナントが可能になります。

3 つの vSphere Zone にデプロイされた スーパーバイザー にも、同じマルチテナント エクスペリエンスが適用されます。ゾーンが設定された スーパーバイザー 上に vSphere 名前空間 を作成すると、その スーパーバイザー をサポートする vSphere クラスタのそれぞれにリソース プールが作成されます。これにより、その vSphere 名前空間 でプロビジョニングされた TKG クラスタを、この スーパーバイザー に属する任意のゾーンにデプロイできます。

vSphere Client を使用しているときに、vSphere 名前空間 リソース プールおよびオブジェクトを表示するには、[ホストおよびクラスタ] パースペクティブを選択し、[仮想マシンおよびテンプレート] ビューも選択します。TKG クラスタをプロビジョニングすると、クラスタはターゲット vSphere 名前空間 に作成されます。ゾーンが設定された スーパーバイザー デプロイでは、各 vSphere クラスタで同じリソース プールを使用します。

vSphere 名前空間オブジェクト

TKG サービス クラスタの vSphere 名前空間 ストレージ

vSphere クラウド ネイティブ ストレージ (CNS) は、Kubernetes ワークロードで使用するパーシステント ボリュームとそのバッキング仮想ディスクのプロビジョニングをサポートするストレージ ポリシーを提供します。

コンテナ ストレージ インターフェイス (CSI) は、コンテナのパーシステント ストレージをプロビジョニングするために Kubernetes が使用する業界標準です。スーパーバイザー は、vSphere 名前空間 を介して vSphere CNS ストレージを Kubernetes 環境に接続する CNS-CSI ドライバを実行します。vSphere CNS-CSI は、vSphere 名前空間 の TKG クラスタからのすべてのストレージ プロビジョニング要求について、CNS 制御プレーンと直接通信します。

TKG クラスタは、TKG クラスタから送信されるすべてのストレージ関連の要求を処理する vSphere CNS-CSI ドライバの変更バージョンを実行します。要求は スーパーバイザー の CNS-CSI に配信され、vCenter Server の CNS に伝達されます。

この図は、vSphere 名前空間スーパーバイザー、および TKG クラスタ ストレージ メカニズム間の関係を示しています。

""

TKG サービス クラスタのパーシステント ストレージ ボリューム

Kubernetes のステートフル アプリケーションには、パーシステント ボリュームが必要です。パーシステント ボリュームの詳細については、Kubernetes のドキュメントを参照してください。

vSphere 環境では、ステント ボリューム オブジェクトは、データストアにある仮想ディスクによってバッキングされます。データストアはストレージ ポリシーによって表されます。vSphere ストレージ ポリシーを vSphere 名前空間 に割り当てると、そのストレージ ポリシーは、その名前空間内の各 TKG クラスタの Kubernetes ストレージ クラスとして使用できるようになります。

TKG は、パーシステント ボリュームの動的プロビジョニングと静的プロビジョニングをサポートしています。動的プロビジョニングでは、パーシステント ボリュームを事前にプロビジョニングする必要はありません。vSphere 名前空間 で使用可能なストレージ クラスを参照するパーシステント ボリューム要求 (PVC) を発行してください。TKG は、対応するパーシステント ボリュームとバッキング仮想ディスクを自動的にプロビジョニングします。パーシステント ストレージ ボリュームの動的な作成を参照してください。

静的プロビジョニングでは、既存のストレージ オブジェクトを使用して、クラスタで使用できるようにします。パーシステント ボリュームを定義するには、既存のストレージ オブジェクト、それらのサポートされている構成、およびマウント オプションの詳細を指定する必要があります。パーシステント ストレージ ボリュームの静的な作成を参照してください。

この図は、動的なパーシステント ボリュームのプロビジョニング ワークフローを示しています。TKG クラスタで kubectl を使用して PVC を作成します。このアクションにより、スーパーバイザー で一致する PVC が生成され、CNS-CSI ドライバがトリガされ、CNS ボリューム作成 API が呼び出されます。

""

TKG サービス クラスタのストレージ クラス エディション

vSphere 名前空間 を構成するには、1 つ以上の vSphere ストレージ ポリシーを割り当てます。vSphere ストレージ ポリシーが適用されると、Kubernetes ストレージ クラスに変換され、スーパーバイザー にレプリケートされます。同様に、TKG コントローラは、その vSphere 名前空間 にデプロイされた各 TKG クラスタにストレージ クラスをレプリケートします。

TKG クラスタ側には、ストレージ クラスの 2 つのエディションが表示されます。1 つは、vSphere ストレージ ポリシーの作成時に指定されたユーザー定義の名前、もう 1 つは、*-latebinding が追加された別の名前です。

TKG ポッド スケジューラによってコンピューティング ノードが選択されたら、開発者はストレージ クラスの遅延バインド エディションを使用して、パーシステント ストレージ ボリュームにバインドできます。使用するストレージ クラスとタイミングの詳細については、 パーシステント ボリュームのストレージ クラスの使用を参照してください。
kubectl get sc
NAME                                    PROVISIONER              RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
wcpglobal-storage-profile               csi.vsphere.vmware.com   Delete          Immediate              true                   2m43s
wcpglobal-storage-profile-latebinding   csi.vsphere.vmware.com   Delete          WaitForFirstConsumer   true                   2m43s

vSphere 名前空間 の作成

vSphere 名前空間 を作成する方法はいくつかあります。

管理者は、vSphere Client を使用して vSphere 名前空間 を作成できます。TKG サービス クラスタをホストするための vSphere 名前空間 の作成を参照してください。

vSphere 名前空間[所有者] ロール権限が付与されている vCenter Single Sign-On ユーザーは、kubectl を使用してセルフサービス方式で vSphere 名前空間 を作成できます。Kubectl を使用した vSphere 名前空間 の作成の有効化を参照してください。

VMware は vSphere 名前空間 のライフサイクルを管理するための vCenter Server API を公開し、以下を含むソフトウェア開発キット (SDK) を提供しています。
  • 名前空間管理 APIは、vSphere 名前空間 を管理するための REST ベースのリソースを提供します。
  • 名前空間 APIは、vSphere 名前空間 上のサブジェクトのアクセス コントロールを管理するための REST ベースのリソースを提供します。
  • vSphere Automation SDK for Java には、vSphere 名前空間 の作成とライフサイクル管理を自動化するためのいくつかのパッケージが用意されています。
  • vSphere Automation SDK for Python には、vSphere 名前空間 の作成とライフサイクル管理を自動化するためのいくつかのパッケージが用意されています。