vm.gowatana.jp

NEOにほんごVMware(仮)

vSphere with Tanzu ラボ環境構築。Part-13: Tanzu Kubernetes クラスタ準備編

ここまでに、vSphere with Tanzu のラボ環境を構築して、名前空間(スーパーバイザー名前空間)に vSphere Pod を起動してみました。

今回から、前回までに構築したスーパーバイザー クラスタのラボに、Tanzu Kubernetes クラスタを作成していきます。

 

前回はこちら。

 

一連の投稿のまとめはこちら。

 

vSphere with Tanzu での Kubernetes クラスタについて

vSphere with Tanzu では、2種類の Kubernetes で構成されます。そして、それぞれ異なる実装方式の Pod としてコンテナを起動できます。

 

vSphere with Tanzu での Kubernetes クラスタの種類

vSphere with Tanzu では、2種類の Kubernetes クラスタで構成されます。

  • スーパーバイザー クラスタ: Kubernetes の機能が組み込まれた vSphere クラスタ。ESXi が Kubernetes ワーカー ノードの上で、vSphere Pod を起動できる。(前回の投稿
  • Tanzu Kubernetes クラスタ: スーパーバイザー クラスタの名前空間のうえに、さらに Kubernetes クラスタを作成する。ゲスト クラスタを作成して、その上で Pod を起動する。

 

Tanzu Kubernetes クラスタは「Tanzu Kubernetes Grid(TKG)」を利用しています。

ドキュメントでは、下記のあたりが参考になります。

 

TKG では、Cluster API という Kubernetes クラスタ自体のライフサイクルを管理できる API を利用しています。

 

Cluster API の Kubernetes クラスタの種類

Cluster API では、(前述の vSphere with Kubernetes での観点とは異なる)2種類の Kubernetes クラスタの役割が存在します。

 

Management Cluster

Kubernetes クラスタを管理するための Kubernetes クラスタです。vSphere with Tanzu の TKG では、スーパーバイザー クラスタが Management Cluster の役割となります。

 

Workload Cluster

管理機能としてではなく「実際のアプリケーション ワークロード」を展開するための Kubernetes クラスタです。vSphere with Tanzu の TKG では、スーパーバイザー クラスタの名前空間に VM がデプロイされて、そのゲスト OS でさらに Kubernetes クラスタが作成されます。

 

そして、ここからは Management Cluster 側での準備作業となります。

 

コンテンツ ライブラリの準備

TKG では、Kubernetes ノードになる VM のテンプレートを利用します。そして、vSphere with Tanzu の TKG では、VM テンプレートの配置に vCenter のコンテンツ ライブラリを利用します。

ここでは、TKG で利用するコンテンツ ライブラリを作成して、コンテンツを同期(インターネット経由でダウンロード)しておきます。

 

vSphere Client で、「コンテンツ ライブラリ」メニューを開きます。

f:id:gowatana:20201116083238p:plain

 

「作成」ボタンをクリックして、「新しいコンテンツ ライブラリ」画面を開きます。コンテンツ ライブラリの名前は「lib-tkg-01」にしています。

f:id:gowatana:20201116083253p:plain

 

「コンテンツ ライブラリの設定」では、次のように入力して「NEXT」をクリックします。

  • 「サブスクライブ済み コンテンツ」を選択
  • サブスクリプション URL を入力: https://wp-content.vmware.com/v2/latest/lib.json
    ※製品ドキュメントにある URL です。
  • コンテンツのダウンロード: 今すぐ(デフォルトのまま)

f:id:gowatana:20201116083309p:plain

 

ストレージの追加では、ダウンロードされたコンテンツを格納するデータストアを選択します。

f:id:gowatana:20201116083326p:plain

 

コンテンツ ライブラリが作成されました。しばらく待つと、コンテンツ ライブラリの同期が完了します。

この処理は 5GB を超えるファイルのダウンロードなので、そこそこ時間がかかります。ちなみに「ライブラリの同期」タスクは 0% の状態が長く続くことがあります。

同期の完了したコンテンツ ライブラリで、名前(lib-tkg-01)をクリックします。

f:id:gowatana:20201116083343p:plain

 

「OVF & OVA テンプレート」を開くと、Kubernetes ノードになる VM テンプレートが見つかります。名前の文字列から、vSphere 7.0 のスーパーバイザー クラスタ では Kubernetes のバージョンが v1.16.8 であることがわかります。

f:id:gowatana:20201116083359p:plain

 

名前空間でのコンテンツ ライブラリ追加

名前空間で、TKG が VM テンプレートをさがすコンテンツ ライブラリを追加します。名前空間(ここでは lab-ns-02)の「サマリ」→「Tanzu Kubernetes」で、「ライブラリの追加」をクリックします。

f:id:gowatana:20201116083417p:plain

 

「ライブラリの追加」をクリックします。これは、名前空間の「設定」→「名前空間」→「全般」を直接ひらいても大丈夫です。

f:id:gowatana:20201116083434p:plain

 

先ほど作成・同期したコンテンツ ライブラリを選択し、「OK」をクリックします。

f:id:gowatana:20201116083451p:plain

 

コンテンツ ライブラリが追加されました。

f:id:gowatana:20201116083512p:plain

 

これにより、Kubernetes の VirtualMachineImage リソースが作成されます。kubectl で接続(前回の投稿参照)すれば、下記のようにリソースの存在を確認できます。

$ kubectl get virtualmachineimages
NAME                                                        VERSION                          OSTYPE
ob-15957779-photon-3-k8s-v1.16.8---vmware.1-tkg.3.60d2ffd   v1.16.8+vmware.1-tkg.3.60d2ffd   vmwarePhoton64Guest

 

名前空間への仮想マシン ストレージ ポリシーの追加

名前空間に、仮想マシン ストレージ ポリシーを追加します。この手順により、この仮想マシン ストレージ ポリシーによってデータストアを利用する、Kubernetes の StorageClass リソースが用意されます。

名前空間(ここでは lab-ns-02)の「サマリ」→「ストレージ」で、「ストレージの追加」をクリックします。

f:id:gowatana:20201116083534p:plain

 

仮想マシン ストレージ ポリシーを選択して、「OK」をクリックします。

f:id:gowatana:20201116083551p:plain

 

名前空間に、仮想マシン ストレージ ポリシーが追加されました。

f:id:gowatana:20201116083609p:plain

 

これにより、Kubernetes の StorageClasse リソースが作成されます。kubectl で接続(前回の投稿参照)すれば、下記のようにリソースの存在を確認できます。

$ kubectl get storageclasses
NAME                    PROVISIONER              RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
vm-storage-policy-wcp   csi.vsphere.vmware.com   Delete          Immediate           false                  7h

 

つづく・・・。