TKG サービス は、Kubernetes ワークロード クラスタのセルフサービス ライフサイクル管理を提供します。スーパーバイザー を使用する TKG サービスは、vSphere 環境用に最適化され、vCenter Server、ESXi、仮想ネットワーク、クラウド ネイティブ ストレージなど、基盤となるインフラストラクチャと統合されます。TKG サービスを使用して、適合する Kubernetes クラスタをプロビジョニングし、アップストリーム同時実行を維持できます。

TKG サービスには、 vSphere IaaS control planeと統合されているいくつかのコンポーネントが含まれています。
図 1. TKG サービス コンポーネント
TKG サービスのコンポーネント

ワークロード管理

ワークロード管理は、ネイティブ vSphere インフラストラクチャ上でKubernetes制御プレーンを提供する VMware ソリューションです。ワークロード管理を有効にすると、vSphere 環境に 1 つ以上の スーパーバイザー をデプロイできるようになります。ワークロード管理は vCenter Server にバンドルされていますが、個別にライセンス供与されます。

スーパーバイザー

スーパーバイザー は、ワークロード クラスタを管理するための制御プレーンとして機能する Kubernetes クラスタです。Tanzu Kubernetes Grid クラスタをプロビジョニングおよび運用する開発者をサポートするよう スーパーバイザー を構成します。

スーパーバイザー のデプロイ:vSphere クラスタ

スーパーバイザー のデプロイは、従来の方法では単一の vSphere クラスタに対して行います。vSphere クラスタは、 vCenter Server によって管理される ESXi ホストの集合です。vSphere クラスタでは、次のような、 スーパーバイザー をサポートするための特定の機能を構成する必要があります。
  • vSphere Distributed Switch (VDS) によって接続された複数の ESXi ホスト
  • vSAN、NFS などの共有ストレージが構成されている
  • vSphere HA と完全自動化された DRS が有効になっている
  • Lifecycle Manager が有効になっている
  • ネットワークが構成されている(ロード バランサが組み込まれた NSX、または外部ロード バランサを使用する Distributed Switch)
設計上、 スーパーバイザー上の TKG の本番環境では、 vCenter Server が実行されている管理プレーン ホストまたはクラスタを、 スーパーバイザーが有効になるコンピューティング プレーン クラスタから分離する必要があります。vSphere クラスタを使用して vCenter Server をホストしている場合、そのクラスタで DRS を有効にすることはできません。詳細については、 vCenter Server のドキュメントを参照してください。

スーパーバイザー のデプロイ:vSphere ゾーン

vSphere 8 では、vSphere Zone が導入されています。vSphere クラスタを vSphere Zone に割り当てて、スーパーバイザー に対して高可用性とフォルト トレランスを実現できます。複数の vSphere Zone に スーパーバイザー をデプロイすると、特定の可用性ゾーンに TKG クラスタをプロビジョニングできます。

単一の vSphere クラスタに スーパーバイザー をデプロイする場合、スーパーバイザー と vSphere クラスタの間には 1 対 1 の関係があります。ゾーン化された スーパーバイザー デプロイでは、スーパーバイザー が 3 つの vSphere クラスタに拡張され、スーパーバイザー 上の TKG クラスタに高可用性と障害ドメインが提供されます。

vSphere 管理者は 3 つの vSphere Zone を作成し、vSphere クラスタに関連付けます。3 つの vSphere Zone に スーパーバイザー をデプロイするには、vSphere クラスタの要件に加えて、次のような特別な要件があります。

  • vSphere Distributed Switch (VDS) によって接続された 3 つの vSphere Zone がある
  • 各 vSphere Zone に単一の vSphere クラスタが含まれている
  • 3 つの vSphere Zone に スーパーバイザー をデプロイする必要がある
  • vSphere ストレージ ポリシーを vSphere Zone で使用できる

vSphere 名前空間

vSphere 名前空間 は、1 つ以上の Tanzu Kubernetes Grid クラスタがプロビジョニングされている スーパーバイザー 上の名前空間です。それぞれの vSphere 名前空間 について、ロールベースのアクセス制御、パーシステント ストレージ、リソース制限、イメージ ライブラリ、および仮想マシン クラスを構成します。

TKG サービス

TKG サービス は、Kubernetes クラスタのライフサイクルを管理するための一連のカスタム リソースとコントローラを定義するオープン ソース クラスタ API プロジェクトの実装です。Tanzu Kubernetes Grid は、スーパーバイザー のコンポーネントです。

TKG サービス には、TKG クラスタのライフサイクルを管理するためのコントローラのレイヤーが 3 つあります。これには 仮想マシン サービス、クラスタ API、クラウド プロバイダ プラグインが含まれます。

仮想マシン オペレータ
仮想マシン サービス コントローラは、仮想マシンとそれに関連する vSphere リソースを管理するための、宣言型の Kubernetes 形式 API を提供します。 仮想マシン サービス により、抽象的な再利用可能ハードウェア構成を表す仮想マシン クラスの概念が導入されます。 TKG サービス仮想マシン サービスを使用して、ワークロード クラスタをホストする制御プレーンおよびワーカー ノード仮想マシンのライフサイクルを管理します。
クラスタ API
クラスタ API コントローラは、クラスタを作成、構成、および管理するための、宣言型の Kubernetes 形式 API を提供します。クラスタ API への入力には、クラスタを記述するリソース、クラスタを構成する仮想マシンを記述するリソースのセット、クラスタのアドオンを記述するリソースのセットなどがあります。
クラウド プロバイダ プラグイン
TKG サービス は、基盤となる vSphere 名前空間 リソースと統合するために必要なコンポーネントを含むワークロード クラスタをプロビジョニングします。これらのコンポーネントには、 スーパーバイザー と連携するクラウド プロバイダ プラグインが含まれています。TKG はクラウド プロバイダ プラグインを使用して、VMware クラウド ネイティブ ストレージ (CNS) と統合されている スーパーバイザー にパーシステント ボリュームの要求を渡します。

Tanzu Kubernetes リリース

Tanzu Kubernetes リリース には、Tanzu Kubernetes Grid クラスタで使用するために VMware によって署名され、サポートされている Kubernetes ソフトウェア ディストリビューションとアドオンが含まれます。

Tanzu Kubernetes リリース は、仮想マシン テンプレート(OVA ファイル)として配布されます。Tanzu Kubernetes Grid は OVA 形式を使用して、TKG クラスタのための仮想マシン ノードを構築します。Tanzu Kubernetes リリースは、Kubernetes のバージョン管理に従ってバージョン管理され、vSphere インフラストラクチャの OS のカスタマイズと最適化が含まれます。

Tanzu Kubernetes リリースのリストおよび スーパーバイザー との互換性については、Tanzu Kubernetes リリースのリリース ノートを参照してください。vSphere IaaS control plane サポート ポリシーも参照してください。

コンテンツ ライブラリ

Tanzu Kubernetes リリース は、vCenter Server コンテンツ ライブラリを使用すると、TKG クラスタで利用できるようになります。サブスクライブ済みコンテンツ ライブラリを作成して、VMware によって利用可能にされた TKR を自動的に受信することができます。また、ローカル コンテンツ ライブラリを使用して、TKR を手動でアップロードすることもできます。

TKG サービス クラスタ コンポーネント

TKG サービス クラスタで実行されるコンポーネントは、製品の 4 つの領域(認証、ストレージ、ネットワーク、ロード バランシング)の機能を提供します。

認証 Webhook

認証 Webhook はクラスタ内のポッドとして動作し、ユーザー認証トークンを検証します。

TKG クラスタは、vCenter Single Sign-On の使用、および Open ID Connect (OIDC) プロトコルをサポートする外部 ID プロバイダの使用という 2 つの認証方法をサポートしています。

TKG は、スーパーバイザー 上および TKG クラスタ ノード上で Pinniped OIDC クライアントを実行します。スーパーバイザー の外部 OIDC プロバイダを構成すると、Pinniped コンポーネントが自動的に構成されます。

TKG は、kubectl 向けの vSphere プラグイン や Tanzu CLI など、スーパーバイザー を使用したさまざまな認証用クライアントをサポートします。

コンテナ ストレージ インターフェイス (CSI)

準仮想化 CSI プラグインは、TKG クラスタ内で実行され、スーパーバイザー を介して VMware 上のクラウド ネイティブ ストレージ (CNS) と統合される Kubernetes ポッドです。TKG クラスタ内で実行される Kubernetes ポッドは、短期、パーシステント ボリューム、コンテナ イメージという 3 種類の仮想ディスクをマウントできます。

[一時的なストレージ]

ポッドでは、ログ、ボリューム、構成マップのような Kubernetes オブジェクトなどの短期データを保存するために、一時的なストレージが必要です。一時的なストレージは、ポッドが存在する間は保持されます。短期データはコンテナの再起動後も維持されますが、ポッドが削除されると、短期データを保存していた仮想ディスクは破棄されます。

[パーシステント ストレージ]

TKG は、vSphere ストレージ ポリシー フレームワークを利用して、ストレージ クラスを定義し、パーシステント ボリュームを予約します。TKG クラスタは、VMware クラウド ネイティブ ストレージ (CNS) と統合されている スーパーバイザー にパーシステント ボリュームの要求を渡します。パーシステント ボリュームは、ストレージ クラスを使用して動的に、または手動で、クラスタ ノードにプロビジョニングされます。

[コンテナ イメージ ストレージ]

Kubernetes ポッド内のコンテナでは、実行するソフトウェアを含むイメージを使用します。ポッドは、コンテナで使用されるイメージをイメージ仮想ディスクとしてマウントします。ポッドのライフサイクルが完了すると、イメージ仮想ディスクはポッドから接続を解除されます。Kubelet は、イメージ レジストリからコンテナ イメージをプルし、そのイメージをポッド内で実行される仮想ディスクに変換します。

コンテナ ネットワーク インターフェイス (CNI)

コンテナ ネットワーク インターフェイス プラグインは、ポッド ネットワークを提供する CNI プラグインです。

TKG クラスタでは、Antrea(デフォルト)と Calico という コンテナ ネットワーク インターフェイス (CNI) オプションがサポートされています。さらに、TKG は ルーティング可能なポッド ネットワークを実装するための Antrea NSX Routed CNI を提供します。

次の表に、TKG クラスタのネットワーク機能とその実装の概要を示します。

表 1. TKG サービス クラスタ ネットワーク
エンドポイント プロバイダ 説明
ポッドの接続 Antrea または Calico ポッドのコンテナ ネットワーク インターフェイス。Antrea は Open vSwitch を使用します。Calico は BGP を利用する Linux ブリッジを使用します。
サービス タイプ:ClusterIP Antrea または Calico クラスタ内からのみアクセス可能なデフォルトの Kubernetes サービス タイプ。
サービス タイプ:NodePort Antrea または Calico Kubernetes ネットワーク プロキシによって各ワーカー ノードで開かれているポートを介して外部からアクセスできるようにします。
ネットワーク ポリシー Antrea または Calico 選択したポッドとネットワーク エンドポイントの間で送受信されるトラフィックを制御します。Antrea は Open vSwitch を使用します。Calico は Linux IP テーブルを使用します。
クラウド プロバイダの実装
クラウド プロバイダの実装を使用すると、Kubernetes ロード バランサ サービスと Ingress サービスを作成できます。
表 2. TKG ロード バランシング
エンドポイント プロバイダ 説明
サービス タイプ:LoadBalancer

NSX 組み込みロード バランサ(NSX ネットワーク スタックの一部)

NSX Advanced Load Balancer(VDS ネットワークで使用するための個別のインストール)

HAProxy(VDS ネットワークで使用するための個別のインストール)

NSX 組み込みロード バランサの場合、サービス タイプの定義ごとに 1 台の仮想サーバ。

NSX Advanced Load Balancer については、このドキュメントの該当するセクションを参照してください。

HAProxy については、このドキュメントの該当するセクションを参照してください。

注: サポートされている各ロード バランサ タイプで、固定 IP アドレスなど、一部のロード バランシング機能を使用できない場合があります。
クラスタの Ingress サードパーティ製の Ingress コントローラ 受信ポッド トラフィックのルーティングを提供します。Contour など、サードパーティ製のIngress コントローラを使用できます。

TKG サービス クラスタ API

TKG サービス では、TKG クラスタのライフサイクルをプロビジョニングおよび管理するための API が 2 つ提供されています。
  • Tanzu Kubernetes クラスタ用の API バージョン v1alpha3
  • ClusterClass に基づくクラスタ用の API バージョン v1beta1

v1alpha3 API を使用すると、TanzuKubernetesCluster タイプの適合する Kubernetes クラスタを作成できます。このタイプのクラスタは、迅速にプロビジョニングできるように一般的なデフォルト設定で事前構成されており、カスタマイズできます。v1beta1 API を使用すると、VMware によって提供されるデフォルトの ClusterClass に基づく、Cluster タイプの適合する Kubernetes クラスタを作成できます。

注: vSphere IaaS control plane を vSphere 7 から vSphere 8 にアップグレードするには、TKG クラスタで v1alpha2 API が実行されている必要があります。 v1alpha2 API は v7.0 Update 3 で導入されました。v1alpha1 API は廃止されました。詳細については、「 」を参照してください。

TKG サービス クラスタのクライアント

vSphere 8 スーパーバイザー 上の TKG は、TKG クラスタをプロビジョニング、監視、および管理するためのさまざまなクライアント インターフェイスをサポートしています。
  • スーパーバイザー の構成とデプロイされた TKG クラスタの監視のための vSphere Client
  • vCenter Single Sign-On を使用する スーパーバイザー および TKG クラスタでの認証のための kubectl 向けの vSphere プラグイン
  • TKG クラスタのライフサイクルを宣言によってプロビジョニングおよび管理し、スーパーバイザー と連携する kubectl
  • コンテナ レジストリとの間でイメージをプッシュおよびプルする vSphere Docker 認証情報ヘルパー
  • コマンドを使用してクラスタをプロビジョニングしたり、Tanzu パッケージをインストールしたりするための Tanzu CLI
  • TKG クラスタを管理するための Tanzu Mission Control Web インターフェイス。