vSphere with Tanzu が vSphere クラスタで有効な場合は、ハイパーバイザー レイヤー内に Kubernetes 制御プレーンが作成されます。このレイヤーには、ESXi 内で Kubernetes ワークロードを実行する機能を有効にする特定のオブジェクトが含まれています。

図 1. スーパーバイザー クラスタ の一般的なアーキテクチャ

vSphere with Tanzu が有効なクラスタは、スーパーバイザー クラスタ と呼ばれます。これは、コンピューティング用の ESXi、NSX-T Data Center または vSphere ネットワーク、および vSAN または他の共有ストレージ ソリューションで構成される Software-Defined Data Center (SDDC) レイヤー上で実行されます。共有ストレージは、vSphere ポッド のパーシステント ボリューム、スーパーバイザー クラスタ 内で実行される仮想マシン、および Tanzu Kubernetes クラスタ内のポッドに使用されます。スーパーバイザー クラスタ を作成したら、vSphere 管理者は、スーパーバイザー クラスタ 内に vSphere 名前空間 と呼ばれる名前空間を作成できます。DevOps エンジニアは、vSphere ポッド 内で実行されているコンテナで構成されるワークロードを実行し、Tanzu Kubernetes クラスタを作成することができます。

図 2. スーパーバイザー クラスタのアーキテクチャ
  • Kubernetes 制御プレーン仮想マシン。スーパーバイザー クラスタ に含まれているホストに合計で 3 台の Kubernetes 制御プレーン仮想マシンが作成されます。3 つの制御プレーン仮想マシンにはそれぞれ独自の IP アドレスがあるため、ロード バランシングが行われます。また、仮想マシンの 1 つにフローティング IP アドレスが割り当てられます。vSphere DRS は、ESXi ホスト上の制御プレーン仮想マシンの正確な配置を決定し、必要に応じて移行します。vSphere DRS は、制御プレーン仮想マシンの Kubernetes スケジューラとも統合されているため、DRS によって vSphere ポッド の配置が決まります。DevOps エンジニアとして vSphere ポッド をスケジュール設定すると、その要求は通常の Kubernetes ワークフローを経由して DRS に送信され、そこで最終的な配置が決定されます。
  • Spherelet。各ホストに Spherelet と呼ばれる追加のプロセスが作成されます。このプロセスは、ESXi に対してネイティブに移植された kubelet であり、このプロセスによって ESXi ホストは Kubernetes クラスタのメンバーになることができます。
  • Container Runtime Executive (CRX)。hostd と vCenter Server の観点から見ると、CRX は仮想マシンと似ています。CRX には、ハイパーバイザーと連携する準仮想化 Linux カーネルが含まれています。CRX は仮想マシンと同じハードウェア仮想化技術を使用しており、仮想マシンの境界で囲まれています。直接起動の技法が使用されるため、CRX の Linux ゲストは、カーネルの初期化を経由することなくメインの init プロセスを開始できます。これにより、vSphere ポッド がコンテナとほぼ同じ速度で起動できるようになります。
  • クラスタ API および VMware Tanzu™ Kubernetes Grid™ サービス は、スーパーバイザー クラスタ で実行されるモジュールであり、Tanzu Kubernetes クラスタのプロビジョニングと管理を可能にします。仮想マシン サービス モジュールは、スタンドアローン仮想マシンと Tanzu Kubernetes クラスタを構成する仮想マシンをデプロイして、実行します。

vSphere 名前空間

vSphere 名前空間 は、Tanzu Kubernetes Grid サービス を使用して作成された vSphere ポッドTanzu Kubernetes クラスタを実行できるリソースの境界を設定します。最初に作成された名前空間には、スーパーバイザー クラスタ 内の無制限のリソースがあります。vSphere 管理者は、CPU、メモリ、ストレージのほか、名前空間内で実行できる Kubernetes オブジェクトの数に制限を設定できます。vSphere 内の名前空間ごとにリソース プールが作成されます。ストレージ制限は、Kubernetes ではストレージ割り当てと表されます。

図 3. vSphere 名前空間
スーパーバイザー ネームスペース

DevOps エンジニアが名前空間にアクセスできるようにするために、vSphere 管理者は、vCenter Single Sign-On に関連付けられている ID ソース内で使用可能なユーザーまたはユーザー グループに権限を割り当てます。

名前空間が作成され、リソースとオブジェクトの制限、権限、およびストレージ ポリシーが設定されたら、DevOps エンジニアは名前空間にアクセスして Kubernetes ワークロードを実行し、Tanzu Kubernetes Grid サービス を使用して Tanzu Kubernetes クラスタを作成することができます。

Tanzu Kubernetes クラスタ

Tanzu Kubernetes クラスタは、VMware によってパッケージ、署名、およびサポートされているオープンソースの Kubernetes ソフトウェアの完全なディストリビューションです。vSphere with Tanzu のコンテキストでは、Tanzu Kubernetes Grid サービス を使用して スーパーバイザー クラスタ 上の Tanzu Kubernetes クラスタをプロビジョニングできます。kubectl と YAML の定義を使用して、Tanzu Kubernetes Grid サービス API を宣言によって呼び出すことができます。

Tanzu Kubernetes クラスタは vSphere 名前空間 に配置されます。ユーザーは、標準の Kubernetes クラスタの場合と同じツールを使用して、同じ方法でワークロードとサービスを Tanzu Kubernetes クラスタにデプロイできます。
図 4. Tanzu Kubernetes クラスタの vSphere with Tanzu アーキテクチャ

vSphere ネットワーク スタックを使用して構成された スーパーバイザー クラスタ

vSphere ネットワーク スタックを使用して構成された スーパーバイザー クラスタ は、Tanzu Kubernetes Grid サービス を使用して作成された Tanzu Kubernetes クラスタの実行のみをサポートします。このクラスタでは vSphere ネットワーク サービス およびストレージ サービスもサポートされます。

vSphere ネットワーク スタックが構成された スーパーバイザー クラスタ では、vSphere ポッド はサポートされません。したがって、Spherelet コンポーネントは、Tanzu Kubernetes クラスタ内でのみ実行される スーパーバイザー クラスタ ポッドおよび Kubernetes ポッドでは使用できません。レジストリ サービスは vSphere ポッド でのみ使用されるため、vSphere ネットワーク スタックを使用して構成された スーパーバイザー クラスタHarbor レジストリ もサポートしません。

vSphere ネットワーク スタックを使用して構成されたクラスタで作成された vSphere 名前空間 も、vSphere ポッド の実行をサポートしません。Tanzu Kubernetes クラスタのみがサポートされます。