ここまでに、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 で、「コンテンツ ライブラリ」メニューを開きます。
「作成」ボタンをクリックして、「新しいコンテンツ ライブラリ」画面を開きます。コンテンツ ライブラリの名前は「lib-tkg-01」にしています。
「コンテンツ ライブラリの設定」では、次のように入力して「NEXT」をクリックします。
- 「サブスクライブ済み コンテンツ」を選択
- サブスクリプション URL を入力: https://wp-content.vmware.com/v2/latest/lib.json
※製品ドキュメントにある URL です。 - コンテンツのダウンロード: 今すぐ(デフォルトのまま)
ストレージの追加では、ダウンロードされたコンテンツを格納するデータストアを選択します。
コンテンツ ライブラリが作成されました。しばらく待つと、コンテンツ ライブラリの同期が完了します。
この処理は 5GB を超えるファイルのダウンロードなので、そこそこ時間がかかります。ちなみに「ライブラリの同期」タスクは 0% の状態が長く続くことがあります。
同期の完了したコンテンツ ライブラリで、名前(lib-tkg-01)をクリックします。
「OVF & OVA テンプレート」を開くと、Kubernetes ノードになる VM テンプレートが見つかります。名前の文字列から、vSphere 7.0 のスーパーバイザー クラスタ では Kubernetes のバージョンが v1.16.8 であることがわかります。
名前空間でのコンテンツ ライブラリ追加
名前空間で、TKG が VM テンプレートをさがすコンテンツ ライブラリを追加します。名前空間(ここでは lab-ns-02)の「サマリ」→「Tanzu Kubernetes」で、「ライブラリの追加」をクリックします。
「ライブラリの追加」をクリックします。これは、名前空間の「設定」→「名前空間」→「全般」を直接ひらいても大丈夫です。
先ほど作成・同期したコンテンツ ライブラリを選択し、「OK」をクリックします。
コンテンツ ライブラリが追加されました。
これにより、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)の「サマリ」→「ストレージ」で、「ストレージの追加」をクリックします。
仮想マシン ストレージ ポリシーを選択して、「OK」をクリックします。
名前空間に、仮想マシン ストレージ ポリシーが追加されました。
これにより、Kubernetes の StorageClasse リソースが作成されます。kubectl で接続(前回の投稿参照)すれば、下記のようにリソースの存在を確認できます。
$ kubectl get storageclasses NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE vm-storage-policy-wcp csi.vsphere.vmware.com Delete Immediate false 7h
つづく・・・。