vm.gowatana.jp

NEOにほんごVMware(仮)

Tanzu Mission Control Self-Managed 自宅ラボ構築。Part-03 TKG の Kubernetes 環境構築

Tanzu Mission Control Self-Managed(TMC-SM)を自宅ラボに構築します。今回は、Tanzu Kubernetes Grid(TKG) による Kubernetes クラスタを作成します。

前回はこちら。

 

今回の内容です。

 

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

gist.github.com

 

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

gist.github.com

 

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.2        prod  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

 

つづく。