はじめに
Tanzu Kubernetes Grid(TKG)がリリースされたので、自宅のvSphere環境で検証しました。
すでにmasanaraさんが「Tanzu Kubernetes Grid 1.0 を使ってみた」でTKGをご紹介されていますが、今回はBootstrap環境にmacOSを使用して、GUIからデプロイする手順を書きます。
今回検証した環境
Bootstrap環境
今回はmacOSをBootstrap環境として使用します。
- macOS Catalina 10.15.4
vSphere環境
Kubernetesクラスタをデプロイする環境としてvSphere 6.7u3を使用します。
- vCenter Server 6.7u3 build-15976728
- ESXi 6.7u3 build-15160138 x 1台 ※公式には2台以上のESXiホストが必要です。
- モデル:Supermicro SYS-E200-8D
- CPU:Xeon D-1528 (6 CPUs x 1.9 GHz)
- メモリ:64GB
TKGを使ってvSphere上にKubernetesクラスタをデプロイする
Bootstrap環境を準備する
macOSでTKGを使用する場合、以下をインストールする必要があります。
また、システム時刻をNTPサーバと同期させておく必要もあります。
vSphere環境を準備する
TKGを使うためには、事前に以下について準備しておく必要があります。
- TKGインスタンス用クラスタ(
TKG-Cluster
)でDRSを有効化する - TKGインスタンス用のリソースプール(
TKG-Pool
)を作成する - TKGインスタンス用のフォルダ(
TKG-Folder
)を作成する - TKGインスタンス用に十分な容量を持つデータストア(
datastore1
)が存在する - TKGインスタンスが接続するネットワーク(
vm-pg
)上でDHCPが動作している - すべてのホストがNTPサーバと同期している
※()内は今回使用する環境で作成したオブジェクトの名前です。
govc find
コマンドで確認すると以下のように出力されます。
$ govc find
/
/Datacenter
/Datacenter/vm
/Datacenter/host
/Datacenter/datastore
/Datacenter/network
/Datacenter/network/vm-pg
/Datacenter/datastore/datastore1
/Datacenter/host/TKG-Cluster
/Datacenter/host/TKG-Cluster/Resources
/Datacenter/host/TKG-Cluster/esxi01.tta.local
/Datacenter/host/TKG-Cluster/Resources/Mgmt-Pool
/Datacenter/host/TKG-Cluster/Resources/Private-Pool
/Datacenter/host/TKG-Cluster/Resources/TKG-Pool
/Datacenter/vm/TKG-Folder
TKGインスタンスのベースとなるテンプレートイメージをvSphereにインポートする
- MyVMwareから以下のOVAをダウンロードします。
photon-3-v1.17.3_vmware.2.ova
photon-3-capv-haproxy-v0.6.3_vmware.1.ova
-
ダウンロードしたOVAをvCenter Serverへデプロイします。
-
デプロイしたOVAをテンプレートに変換します。
以下は、govc find
コマンドで確認した結果です。
$ govc find -type m
/Datacenter/vm/Template/photon-3-kube-v1.17.3+vmware.2
/Datacenter/vm/Template/capv-haproxy
TKGをmacOSにインストールする
- MyVMwareから以下のファイルをダウンロードします。
tkg-darwin-amd64-v1.0.0_vmware.1.gz
-
gunzip
コマンドで展開します。、/usr/local/bin/
に移動+リネームし、実行権限を付与します。$ gunzip tkg-darwin-amd64-v1.0.0_vmware.1.gz
-
展開したバイナリを
/usr/local/bin/
に移動して、tkg
にリネームします。$ mv ./tkg-darwin-amd64-v1.0.0_vmware.1 /usr/local/bin/tkg
-
実行権限を付与します。
$ chmod +x /usr/local/bin/tkg
-
tkg version
コマンドを実行して、バージョンが表示されることを確認します。$ tkg version Client: Version: v1.0.0 Git commit: 60f6fd5f40101d6b78e95a33334498ecca86176e
TKGを使ってManagementクラスタをデプロイする
-
tkg init --ui
コマンドを実行すると、ブラウザでTanzu Kubernetes Gridのインストーラーが起動します。 -
DEPLOY ON VSPHERE
ボタンをクリックします。 -
vCenter Serverに接続するための情報を入力して、
CONNECT
をクリックします。 -
Managementクラスタをデプロイするデータセンターを選択します。また、Bootstrap環境で使用しているsshの公開鍵も入力します。
-
Managementクラスタのコントロールプレーンノードの数を決めます。1台デプロイする場合は
Development
を、3台デプロイする場合はProduction
をクリックします。 -
INSTANCE TYPE
のドロップダウンメニューから、コントロールプレーンノードVMのサイズを選択します。 -
MANAGEMENT CLUSTER NAME
にManagementクラスタの名前を入力します(オプション)。API SERVER LOAD BALANCER
のドロップダウンメニューから、APIサーバ用ロードバランサーのテンプレート(capv-haproxy
)を選択します。 -
Managementクラスタをデプロイするリソースプール、仮想マシンフォルダ、データストアを選択します。
-
Kubernetesクラスタのための、ネットワークを設定します。
-
TKGインスタンス用のテンプレートを選択します。
-
REVIEW CONFIGURETION
をクリックして、これまでの設定を確認します。問題ないようであれば、DEPLOY MANAGEMENT CLUSTER
をクリックして、Managementクラスタのデプロイを開始します。 -
Managementクラスタのデプロイが完了したら、ブラウザを閉じます。
-
tkg get management-cluster
コマンドでManagementクラスタがデプロイされたことを確認します。$ tkg get management-cluster
+-----------------------------------+-----------------------------------------------------------------------+
| MANAGEMENT CLUSTER NAME | CONTEXT NAME |
+-----------------------------------+-----------------------------------------------------------------------+
| tkg-mgmt-vsphere-20200420012716 * | tkg-mgmt-vsphere-20200420012716-admin@tkg-mgmt-vsphere-20200420012716 |
+-----------------------------------+-----------------------------------------------------------------------+
```
TKGを使ってKubernetesクラスタを展開する
-
tkg create
コマンドを実行して、Kubernetesクラスタをデプロイします。$ tkg create cluster dev-cluster --plan=dev Logs of the command execution can also be found at: /var/folders/15/gygby50x4h15p8zgz27b71g80000gp/T/tkg-20200420T020425978485888.log
Creating workload cluster 'dev-cluster'...
Context set for workload cluster dev-cluster as dev-cluster-admin@dev-cluster
Waiting for cluster nodes to be available...
Workload cluster 'dev-cluster' created
```
-
kubectl config get-contexts
コマンドとvCenter Serverからdev-cluster
が展開されていることを確認します。kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * dev-cluster-admin@dev-cluster dev-cluster dev-cluster-admin tkg-mgmt-vsphere-20200420012716-admin@tkg-mgmt-vsphere-20200420012716 tkg-mgmt-vsphere-20200420012716 tkg-mgmt-vsphere-20200420012716-admin
おまけ:Waiting for cert-manager to be available...
でタイムアウトして、Managementクラスタのデプロイに失敗する
Managementクラスタのデプロイ中、以下のようにWaiting for cert-manager to be available...
の部分でタイムアウトして、デプロイに失敗しました。
いろいろと調べた結果、DHCPサーバにvSphere環境用のDNSサーバを通知する設定を入れていないことが原因でした。ManagementクラスタがvCenter Serverと通信するために、vCenter Serverを名前解決できる必要があることを失念していました...
最終的に、DHCPサーバにDNSサーバを通知する設定を追加してリトライすることで、Managementクラスタのデプロイに成功しました。