ここまでに、vSphere with Kubernetes のラボ環境を構築して、
名前空間(Supervisor Namespace)に vSphere Pod を起動してみました。
前回の投稿はこちら。
vSphere with Kubernetes ラボ環境構築。Part-11: kubectl で vSphere Pod 起動編
vSphere with Kubernetes では、おもに 2種類の方法でコンテナを起動できます。
- Supervisor Cluster(ESXi が Kubernetes Worker ノード)の上で、vSphere Pod を起動する。※前回の投稿。
- Supervisor Cluster のうえに、さらに ゲスト OS による Kubernetes クラスタ(Tanzu Kubernetes Cluster)を作成して、その上で Pod を起動する。
今回から、前回までに構築した Subervisor Cluster に、Tanzu Kubernetes Cluster のデモ環境を構築していきます。
つまり、Supervisor Namespace に Tanzu Kubernetes Grid サービスによる Kubernetes Cluster
(ドキュメントでは Tanzu Kubernetes Cluster)を作成してみます。
vSphere with Kubernetes での Tanzu Kubernetes クラスタの実行
Tanzu Kubernetes Grid(TKG)は、Cluster API という Kubernetes クラスタ自体のライフサイクルを管理できる API を利用しています。
Cluster API では、おもに 2種類の Kubernetes クラスタが登場します。
- Management Cluster
- Kubernetes クラスタを管理するための Kubernetes クラスタ。
- vSphere with Kubernetes の TKG では、Subervisor Cluster が Management Cluster になる。
- Workload Cluster
- 実際になにかしたいワークロードを展開するための Kubernetes クラスタ。
- vSphere with Kubernetes の TKG では、Subervisor Cluster の名前空間に VM がデプロイされて、そのゲスト OS でさらに Kubernetes クラスタが作成される。
ここからは、Management Cluster での準備作業です。
コンテンツ ライブラリの準備。
TKG では、Kubernetes ノードになる VM のテンプレートを利用します。
そして、vSphere with Kubernetes の 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 テンプレートが見つかります。
名前の文字列から、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
つづく・・・。