SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

VMware Tanzu Community Edition とは?

仮想化
2021.10.21

このブログでは、VMworld 2021 のタイミングで提供開始された「VMware Tanzu Community Edition」についてご紹介します。

※この投稿は2021年10月時点での情報をご紹介しています。Tanzu Community Editionは2022年10月に開発終了され、代わりにTanzu Kubernetes Gridが非商用環境であれば100CPUコアまで無料で利用可能になりました。

Tanzu Community Edition(TCE) とは

Tanzu Community Edition(TCE)は、無償で利用可能なTanzu Kubernetes Gridです。

まず、Tanzu Kubernetes Grid(TKG)は、Kubernetesディストリビューションであり、Kubernetesのソフトウェアと、セットアップ ツールや関連するソフトウェア群が含まれた製品です。つまり、Kubernetesを利用しやすいように調整したものです。

たとえば、TKGではTanzu CLIを利用して簡単にKubernetesクラスタを作成できます。クラスタの作成先となるプラットフォームとしては、vSphere、AWS(Amazon EC2)、Microsoft Azureが選択できます。
※TCEでは、さらに Dockerコンテナとして Kubernetesクラスタを作成できるようになりました。

Kubernetesはコンテナのオーケストレーターですが、多くのケースで、管理対象となるコンテナを起動するホストは、仮想マシンとして構築されます。vSphereであればESXi上で稼働する仮想マシン、AWSであればEC2インスタンスです。そして、TKGで構築されるKubernetesノードも、仮想マシンとして作成されます。

Kubernetesノードの仮想マシン テンプレートとなるOVAファイルについても、TKGの一部として、VMware Photon OS、またはUbuntuの仮想マシンとして用意されます。

vmware-tanzu-ce-01.PNG

そして作成されたKubernetesクラスタは、Tanzu CLIを利用してアップデートやスケールアウト・スケールイン、クラスタ削除といったライフサイクル管理も実施することができます。

Tanzu Community Edition の仕組み

それでは、もう少し詳しくTCEの仕組みをご紹介します。前述のとおり、TCEはTKGと同等のソフトウェアを利用しています。そのためTKGの仕組みについてもほぼ同様です。

TKGでは、Cluster API と呼ばれる、Kubernetesクラスタのライフサイクルを管理するAPIが利用されています。Cluster APIでは、最終的に利用者がアプリケーションを展開するための「ワークロード クラスタ」を作成するために、3つのKubernetesクラスタが利用されます。

1. ブートストラップ クラスタ

マネージメント クラスタを作成するための、一時的なKubernetesクラスタです。これは、kind(Kubernetes in Docker)が利用され、Dockerコンテナによる1ノードのKubernetesクラスタとして作成されます。そして、マネージメント クラスタ作成後は削除されます。

2. マネージメント クラスタ

ワークロード クラスタの作成、ノード増減やアップデート、クラスタ削除といったライフサイクル管理を担当するKubernetesクラスタです。ワークロード クラスタ ノードの障害監視・自動再起動なども担当します。

3. ワークロード クラスタ

利用者がアプリケーションを展開するための、Kubernetesクラスタです。ひとつのマネージメント クラスタに、複数のワークロード クラスタを作成できます。一般的なKubernetes(Vanilla Kubernetes)と同様に使用できますが、便利に運用できるようにTKGによるパッケージ管理の仕組みなども組み込まれています。

 

TKGとTCEでのKubernetesクラスタの作成や管理は、Tanzu CLI によって実施します。
最初に、「tanzu management-cluster create」コマンドでマネージメント クラスタ(と作成に利用されるブートストラップ クラスタ)を作成します。そして、ワークロード クラスタは、マネージメント クラスタ作成後に「tanzu cluster create」コマンドで作成することになります。

作成されるクラスタは一般的なKubernetesソフトウェアによるものです。そのため、一般的なKubernetesのクライアント ツールで操作できます。つまり、アプリケーションの展開はkubectlなどで実施できます。

vmware-tanzu-ce-02.PNG

なお、これまでのワークロード クラスタはマネージメント クラスタで管理されるため「Managed Cluster」とも呼ばれます。そして、TCEではマネージメント クラスタを利用しないワークロード クラスタとして「Standalone Cluster」も作成できるようになりました。ただし、Standalone Clusterについては、まだ試験的なあつかいのようです。

TCE での制御プレーン Endpoint IPアドレスの選択肢

Kubernetesでは、基本的に冗長化された構成をとるため、制御プレーンにEndpoint IPアドレス(VIP)が用意されます。たとえば、vSphere with Tanzuではこの部分には NSX-T、HAProxy、NSX Advanced Load Balancerが選択できました。

TCEで作成されるマネージメントクラスタとワークロード クラスタでは、このEndpoint IPアドレスのためのソフトウェアとして、Kube-vip、または NSX Advanced Load Balancerが選択可能です。Kube-vipの場合はとくに事前構築不要ですが、NSX Advanced Load Balancerを選択する場合には事前構築が必要です。

vmware-tanzu-ce-04a.PNG



TCE によって作成された Kubernetes クラスタの様子

Kubernetesクラスタの作成は、Tanzu CLI から起動する Web UI、もしくは Tanzu CLI のコマンドライン実行から実施します。

Web UIを利用する場合は、Tanzu CLIで「--ui」オプションを指定します。

一方で、Tanzu CLI のコマンドラインのみでクラスタを作成する場合は、あらかじめ YAML 形式の設定ファイルを用意しておきます。そして、Tanzu CLI では「--file」オプションを指定します。

なお、下図にある「tanzu management-cluster create」コマンドで作成されるのはマネージメント クラスタ(と作成に利用されるブートストラップ クラスタ)のみです。ワークロード クラスタは、マネージメント クラスタ作成後に「tanzu cluster create」コマンドで作成することになります。

vmware-tanzu-ce-03.PNG

vSphere に Kubernetes クラスタを作成すると、クラスタを構成する Kubernetesノードは、仮想マシンとして作成されます。マネージメント クラスタ、ワークロード クラスタは、それぞれ別の仮想マシン群によるKubernetesクラスタです。

以下の例は、マネージメント クラスタとワークロード クラスタで、わかりやすいように仮想マシン フォルダを分割して作成してみました。

vmware-tanzu-ce-05a.PNG


さらに「kubectl get nodes」コマンドで、マネージメント クラスタと、ワークロード クラスタを表示した結果と並べてみます。実際に、Kubernetesノードが仮想マシンとして作成されている様子が実感できるのではないでしょうか。

vmware-tanzu-ce-06a.PNG

なお、TCEでは、Dockerコンテナのマネージメント クラスタとワークロード クラスタを(仮想マシンではなく)作成できるようになりました。

もともと、クラスタ作成中に一時作成されるブートストラップ クラスタはDockerコンテナとして作成されていました。しかし、それとは別にクラスタがDockerコンテナとして作成されます。

作成先としてDockerを選択したクラスタでは、下記のようにKubernetesノードごとに、Dockerコンテナが作成されます。また、他のパターンとは異なり、制御プレーンのEndpoint IPアドレスはHAProxyのコンテナで提供されています。

vmware-tanzu-ce-07a.PNG


TCE と vSphere with Tanzu との関係は?

VMwareのKubernetesソリューションとしては、vSphere with Tanzuが最も知られているのではないかと思います。そこで、vSphere with TanzuとTCEの関係についても触れておきたいと思います。

まず、vSphere with Tanzuでは、2種類の Kubernetes ソフトウェアが利用されています。

  1. vSphere クラスタに Kubernetes の機能を追加した、スーパーバイザークラスタ
  2. Tanzu Kubernetes Grid を利用した Kubernetes クラスタ(TKC: Tanzu Kubernetes Cluster)

スーパーバイザー クラスタでは、従来の vSphere クラスタに「vSphere 名前空間」を作成し、その上に vSphere Pod が作成できるようになります。

それとは別に、スーパーバイザー クラスタは、TKGの管理クラスタとしての役割も担当します。たとえば、仮想マシンを Kubernetes リソースとして管理する機能も追加されており、TKGのKubernetesノードとして利用する仮想マシンをデプロイできます。

つまり、vSphere with Tanzu のスーパーバイザー クラスタを利用することで、vSphereにTKGを利用しやす環境を構成しています。

vmware-tanzu-ce-08a.PNG

vSphere with TanzuとTCEを見比べると、TCEはTKGにあたる部分に相当します。ただし、TKGや、vSphere with TanzuでのTanzu Kubernetes クラスタより、TCEの方がアップストリームにあたります。そのため、「まったく同じように利用できる」というわけではありません。また、最初のTCEリリース時点では、スーパーバイザー クラスタを利用してTCEのKubernetesクラスタを作成することはできません。

しかし、TKGのアップデートは(TCEでのフィードバックも含めて)vSphere with Tanzuでも利用されることになります。そのため、TCEを利用したKubernetesの利用経験は、将来的にVMwareによる商用版Kubernetes環境を利用する際にも役立つはずです。

また、ここではvSphere with Tanzuとの関係について触れていますが、前述のとおりTCEはマルチクラウド対応であるため、vSphere上でしか利用できないというわけではありません。

vmware-tanzu-ce-09a.PNG


最後に

Kubernetesは、クラウドネイティブ アプリケーションやアプリケーション モダナイゼーションといったキーワードとともに注目されており、VMwareとしても非常に注力している様子がうかがえます。

VMworld 2021では、Tanzu Application Platformのように、アプリケーションの本番展開にむけた製品の発表もありました。アプリケーションの本番展開をサプライチェーンに見立てたアプローチなどが紹介されていましたが、そこでもKubernetesは基盤となる技術要素となります。同じくVMworldで発表されたVMware Edge Compute Stackでは、エッジネイティブ アプリケーションの基盤としての活用も紹介されています。

TCEでは、VMwareの商用版のKubernetes・TKGでも利用されるソフトウェアを無償利用できるものであり、将来的なエンタープライズ向けKubernetes基盤のための準備に活用できるのではないでしょうか。

参考情報

著者紹介

SB C&S株式会社
ICT事業本部 ICT事業戦略・技術本部 技術統括部 第1技術部
渡辺 剛 - Go Watanabe -

VMware vExpert
Nutanix Technology Champion