Tanzu Mission Control Self-Managed(TMC-SM)を自宅ラボに構築します。今回は、Tanzu Kubernetes Grid(TKG) による Kubernetes クラスタを作成します。
前回はこちら。
今回の内容です。
- 0. Bootstrap VM への OS ユーザの作成
- 1. Harbor の CA 証明書の入手
- 2. Management Cluster の作成
- 3. Workload Cluster の作成
- 参考: ノード数の調整
TKG の Management Cluster と Workload Cluster を作成します。このうち、TMC-SM を展開するのは Workload Cluster のほうです。
0. Bootstrap VM への OS ユーザの作成
TKG での Kubernetes クラスタ作成は、root ユーザ以外で実行する必要があります。
今回は、tmc という名前の OS ユーザを作成しておきます。
# useradd -m tmc # passwd tmc # chage -M 10000 tmc # usermod -aG docker tmc
docker サービスを起動しておきます。
# systemctl start docker # systemctl enable docker
ここからは、tmc ユーザで作業します。
# su - tmc tmc [ ~ ]$ id uid=1000(tmc) gid=100(users) groups=100(users),995(docker)
SSHのキーペアを作成しておきます。
$ mkdir -m 700 .ssh $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa $ cat ~/.ssh/id_rsa.pub
VMware Customer Connect からダウンロードしておいた、Tanzu CLI と kubectl を展開しておきます。
今回は、TKG 2.2 を利用します。
下記のファイルをダウンロードして、Bootstrap VM に scp などで転送しておきます。
- kubectl-linux-v1.25.7+vmware.2.gz
- tanzu-cli-bundle-linux-amd64.tar.gz
Bootstrap VM でファイルを展開 / インストールします。
$ mkdir bin $ gunzip --keep kubectl-linux-v1.25.7+vmware.2.gz $ install kubectl-linux-v1.25.7+vmware.2 ~/bin/kubectl $ tar zxvf tanzu-cli-bundle-linux-amd64.tar.gz $ install cli/core/v0.29.0/tanzu-core-linux_amd64 ~/bin/tanzu
PATH 環境変数を設定して、bash 補完機能を有効化しておきます。
$ echo 'export PATH=$HOME/bin:$PATH' >> ~/.bash_profile $ echo 'source <(kubectl completion bash)' >> ~/.bash_profile $ echo 'source <(tanzu completion bash)' >> ~/.bash_profile $ source .bash_profile
tanzu CLI のプラグインをインストールします。
$ tanzu init ? Checking for required plugins... ? Installing plugin 'package:v0.29.0' with target 'kubernetes' ? Installing plugin 'pinniped-auth:v0.29.0' ? Installing plugin 'secret:v0.29.0' with target 'kubernetes' ? Installing plugin 'telemetry:v0.29.0' with target 'kubernetes' ? Installing plugin 'isolated-cluster:v0.29.0' ? Installing plugin 'login:v0.29.0' ? Installing plugin 'management-cluster:v0.29.0' with target 'kubernetes' ? Successfully installed all required plugins ? successfully initialized CLI
1. Harbor の CA 証明書の入手
Harbor の CA 証明書を取得して、base64 エンコーディングしたものを記録しておきます。これは、Management Cluster と Workload Cluster の YAML ファイルに追記します。
$ curl -s https://lab-harbor-03.go-lab.jp/api/v2.0/systeminfo/getcert | base64 -w0
2. Management Cluster の作成
TKG の Management Cluster は、下記のような手順で作成します。そして、クラスタを定義した YAML ファイルを用意できるのであれば、はじめから tanzu CLI だけで作成できます。
2-1. Management Cluster の YAML 作成
TMC-SM を構成するコンテナを展開するクラスタではないので、ノード数は最小でも問題ありません。CLUSTER_PLAN: dev と指定することで、自動的にそれぞれが 1ノードの構成になります。
- Control Plane ノード x 1
- Worker ノード x 1
ただし、展開後の TMC-SM に Management Cluster として登録するのであれば、Control Plane Node は 3ノードにしておいたほうが無難かもしれません。
ロードバランサとして NSX ALB を利用するためのパラメータ(AVI_~)も設定しておきます。
今回は、下記の YAML で Management Cluster クラスタを作成します。
ADDITIONAL_IMAGE_REGISTRY_1 には Harbor のアドレス、ADDITIONAL_IMAGE_REGISTRY_1_CA_CERTIFICATE に Harbor の CA 証明書を Base64 エンコードしたものを記載しておきます。
ちなみにラボ環境なので、正式な TKG では利用されない標準仮想スイッチとローカル VMFS データストアの環境に展開しています。
tkg22mc03.yml
2-2. Management Cluster の作成
Tanzu CLI で Management Cluster を作成します。
$ tanzu mc create -f ./tkg22mc03.yml
Management Cluster が作成されました。
$ tanzu cluster list --include-management-cluster -A NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR tkg22mc03 tkg-system running 1/1 1/1 v1.25.7+vmware.2 management dev v1.25.7---vmware.2-tkg.1
3. Workload Cluster の作成
TMC-SM の展開先となる、Workload Cluster を作成します。
3-1. Workload Cluster の YAML 作成
Workload Cluster は、最低でも下記のスペック / ノード数でデプロイしておきます。CLUSTER_PLAN: prod と指定すると、自動的にそれぞれが 3ノードの構成になります。
- Control Plane ノード x 3(ノードあたり 4 vCPU / 8GB メモリ)
- Worker ノード x 3(ノードあたり 4 vCPU / 8GB メモリ)
ちなみに、物理マシンの都合でノードあたり 2 vCPU の場合は、Worker ノードが 5ノードないと、TMC-SM の展開が成功しませんでした。
今回の Workload Cluster の YAML ファイルは、下記のように作成しました。
tkg22wc03.yml
3-2. Workload Cluster の作成
tanzu cluster create を実行すると、新しい形式の YAML ファイルが生成されます。
$ tanzu cluster create -f tkg22wc03.yml
生成された YAML ファイルを、わかりやすい場所にコピーしておきます。
$ cp ~/.config/tanzu/tkg/clusterconfigs/tkg22wc03.yaml ./tkg22wc03_new.yaml
新しい YAML ファイルを使用して、Workload Cluster を作成します
$ tanzu cluster create -f ./tkg22wc03_new.yaml
しばらく待つと、Workload Cluster が作成されます。
$ tanzu cluster list --include-management-cluster -A NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR tkg22wc03 default running 3/3 3/3 v1.25.7+vmware.2prod v1.25.7---vmware.2-tkg.1 tkg22mc03 tkg-system running 1/1 1/1 v1.25.7+vmware.2 management dev v1.25.7---vmware.2-tkg.1
Workload Cluster の kubeconfig を入手します。
$ tanzu cluster kubeconfig get tkg22wc03 --admin Credentials of cluster 'tkg22wc03' have been saved You can now access the cluster by running 'kubectl config use-context tkg22wc03-admin@tkg22wc03'
Workload Cluster にコンテキストを切り替えます。
$ kubectl config use-context tkg22wc03-admin@tkg22wc03 Switched to context "tkg22wc03-admin@tkg22wc03".
kubectl で Workload Cluster に接続して、ノードの一覧が取得できました。
$ kubectl get nodes NAME STATUS ROLES AGE VERSION tkg22wc03-m4mmh-4m5r9 Ready control-plane 9m3s v1.25.7+vmware.2 tkg22wc03-m4mmh-6mdx6 Ready control-plane 12m v1.25.7+vmware.2 tkg22wc03-m4mmh-l7x76 Ready control-plane 14m v1.25.7+vmware.2 tkg22wc03-md-0-dgf2s-7cf689998f-c4bt8 Ready <none> 13m v1.25.7+vmware.2 tkg22wc03-md-1-4z6f6-5ccbfc48bc-vgq8t Ready <none> 13m v1.25.7+vmware.2 tkg22wc03-md-2-m9gnx-7ccdd468dd-kvdw9 Ready <none> 13m v1.25.7+vmware.2
参考: ノード数の調整
展開した Workload Cluster がリソース不足の場合は、下記のコマンドでノード追加できます。Control Plane ノードは 1 → 3 の変更のみ可能ですが、Worker ノードは自由に増減できます。
$ tanzu cluster scale tkg22wc03 --controlplane-machine-count 3 --worker-machine-count 3 Workload cluster 'tkg22wc03' is being scaled
つづく。