Tanzu Kubernetes Grid(TKG)2.1 がリリースされたので、以前に投稿した TKG 1.6 環境を流用してセットアップしてみます。
TKG 2.1 のリリースノートはこちら。
- https://docs.vmware.com/en/VMware-Tanzu-Kubernetes-Grid/2.1/tkg-deploy-mc-21/mgmt-release-notes.html
TKG 2.1 では、デフォルトだと TKG 1.6 とは異なる Class-based clusters という新しい形式で Workload Cluster が作成されるようです。
ドキュメントでは下記のあたりが参考になります。
- https://docs.vmware.com/en/VMware-Tanzu-Kubernetes-Grid/2/about-tkg/clusters.html
- https://docs.vmware.com/en/VMware-Tanzu-Kubernetes-Grid/2.1/using-tkg-21/workload-clusters-deploy.html
そこで、ためしに以前の TKG 1.6 で利用していたままの YAML ファイルを指定して、tanzu cluster create を実行してみました。
今回の内容です。
- 0. 今回の環境
- 1. TKG 2.1.0 のダウンロード
- 2. Bootstrap マシンでの準備
- 3. Management Cluster の作成
- 4. Workload Cluster の作成
0. 今回の環境
以前に用意した TKG 1.6 環境を流用しています。スーパーバイザ クラスタは利用しないで vSphere 7.0 U3 環境にスタンドアローンの TKG Management Cluster を作成します。
1. TKG 2.1.0 のダウンロード
TKG 2.1 は、これまでと同様に VMware Customer Connect からダウンロードします。
今回は、Linux の Bootstrap マシンで最低限必要になる、3つのファイルをダウンロードしておきます。
- VMware Tanzu CLI for Linux
- tanzu-cli-bundle-linux-amd64.tar.gz
- アーカイブ ファイル名にバージョン文字列が含まれていないので、他のもとの間違えないように要注意。
- kubectl cli v1.24.9 for Linux
- kubectl-linux-v1.24.9+vmware.1.gz
- Kubernetes OVAs for VMware Tanzu Kubernetes Grid 2.1.0
- photon-3-kube-v1.24.9+vmware.1-tkg.1-f5e94dab9dfbb9988aeb94f1ffdc6e5e.ova
- Management Cluster をデプロイするには Kubernetes v1.24.9 の OVA が必須だが、Workload Cluster は v1.22.17、v1.23.15、v1.24.9 から選択可。
- Photon OS または Ubuntu の OVA が利用できるが、今回は Photon OS のものを利用。
OVA ファイルは、vCenter Server から「photon-3-kube-v1.24.9+vmware.1」という名前でデプロイして、テンプレートに変換しておきます。
2. Bootstrap マシンでの準備
今回は、下記の投稿で構築した Bootstrap マシンを流用します。
Management Cluster を作成するために、Photon OS のマシンで、Docker のサービスを起動してあります。
demo-03 [ ~ ]$ cat /etc/photon-release VMware Photon OS 4.0 PHOTON_BUILD_NUMBER=2f5aad892 demo-03 [ ~ ]$ systemctl is-active docker active
まだ利用中の TKG 1.6 と併用したいので、今回は OS ユーザを追加作成します。
root@lab-tkg-02 [ ~ ]# useradd -m demo-03 root@lab-tkg-02 [ ~ ]# passwd demo-03 root@lab-tkg-02 [ ~ ]# usermod -aG docker demo-03
ここからは、追加作成したユーザで作業します。
root@lab-tkg-02 [ ~ ]# su - demo-03 demo-03 [ ~ ]$
SSH 鍵のペアを作成しておきます。
demo-03 [ ~ ]$ ssh-keygen -P '' -f $HOME/.ssh/id_rsa demo-03 [ ~ ]$ cat $HOME/.ssh/id_rsa.pub
TKG 関連の CLI を配置するディレクトリを作成して、PATH を通しておきます。
demo-03 [ ~ ]$ mkdir $HOME/bin demo-03 [ ~ ]$ echo 'export PATH=$HOME/bin:$PATH' >> $HOME/.bash_profile demo-03 [ ~ ]$ export PATH=$HOME/bin:$PATH
TKG 2.1 の tanzu CLI と kubectl のファイルを、scp などで転送しておきます。
demo-03 [ ~ ]$ ls -1 kubectl-linux-v1.24.9+vmware.1.gz tanzu-cli-bundle-linux-amd64.tar.gz
tanzu CLI と kubectl をインストールします。
demo-03 [ ~ ]$ tar zxf tanzu-cli-bundle-linux-amd64.tar.gz demo-03 [ ~ ]$ install cli/core/v0.28.0/tanzu-core-linux_amd64 $HOME/bin/tanzu demo-03 [ ~ ]$ gunzip kubectl-linux-v1.24.9+vmware.1.gz -k demo-03 [ ~ ]$ install kubectl-linux-v1.24.9+vmware.1 $HOME/bin/kubectl demo-03 [ ~ ]$ rm -f kubectl-linux-* tanzu-cli-bundle-linux-amd64.tar.gz
これで、tanzu CLI と kubectl インストールされました。
demo-03 [ ~ ]$ tanzu version version: v0.28.0 buildDate: 2023-01-20 sha: 3c34115bc-dirty demo-03 [ ~ ]$ kubectl version --client --short Flag --short has been deprecated, and will be removed in the future. The --short output will become the default. Client Version: v1.24.9+vmware.1 Kustomize Version: v4.5.4
tanzu CLI のプラグインをインストールしておきます。
demo-03 [ ~ ]$ tanzu plugin sync ? Checking for required plugins... ? Installing plugin 'telemetry:v0.28.0' with target 'kubernetes' ? Installing plugin 'isolated-cluster:v0.28.0' ? Installing plugin 'login:v0.28.0' ? Installing plugin 'management-cluster:v0.28.0' with target 'kubernetes' ? Installing plugin 'package:v0.28.0' with target 'kubernetes' ? Installing plugin 'pinniped-auth:v0.28.0' ? Installing plugin 'secret:v0.28.0' with target 'kubernetes' ? Successfully installed all required plugins ? Done
3. Management Cluster の作成
3-1. YAML ファイルの作成
Management Cluster を定義する YAML ファイルを作成します。これは、TKG 1.6 で利用していた形式のままで利用してみます。また、この定義にあわせて事前に vCenter インベントリ オブジェクト(リソース プールや仮想マシン フォルダなど)を作成しておく必要があります。
tkg21mc01.yml
3-2. Management Cluster の作成
tanzu management-cluster create コマンドを実行すると、Management Cluster は従来の YAML 形式のままでも作成できました。
demo-03 [ ~ ]$ tanzu management-cluster create -f tkg21mc01.yml
これで、しばらく待つと Management Cluster が作成されます。
demo-03 [ ~ ]$ kubectl get nodes NAME STATUS ROLES AGE VERSION tkg21mc01-g54v5-tc4jh Ready control-plane 27m v1.24.9+vmware.1 tkg21mc01-md-0-tntbb-54cd58bf96-hcxwz Ready24m v1.24.9+vmware.1 demo-03 [ ~ ]$ kubectl get apps -A NAMESPACE NAME DESCRIPTION SINCE-DEPLOY AGE tkg-system tanzu-addons-manager Reconcile succeeded 3m44s 4m9s tkg-system tanzu-auth Reconcile succeeded 2m20s 4m9s tkg-system tanzu-cliplugins Reconcile succeeded 3m16s 4m9s tkg-system tanzu-core-management-plugins Reconcile succeeded 109s 2m11s tkg-system tanzu-featuregates Reconcile succeeded 3m10s 4m9s tkg-system tanzu-framework Reconcile succeeded 4m13s 4m15s tkg-system tkg-clusterclass Reconcile succeeded 4m11s 4m14s tkg-system tkg-clusterclass-vsphere Reconcile succeeded 2m10s 4m8s tkg-system tkg-pkg Reconcile succeeded 4m18s 4m20s tkg-system tkg21mc01-antrea Reconcile succeeded 58s 22m tkg-system tkg21mc01-capabilities Reconcile succeeded 5m5s 22m tkg-system tkg21mc01-metrics-server Reconcile succeeded 5m17s 22m tkg-system tkg21mc01-pinniped Reconcile succeeded 5m22s 22m tkg-system tkg21mc01-secretgen-controller Reconcile succeeded 5m12s 22m tkg-system tkg21mc01-tkg-storageclass Reconcile succeeded 5m23s 22m tkg-system tkg21mc01-vsphere-cpi Reconcile succeeded 64s 22m tkg-system tkg21mc01-vsphere-csi Reconcile succeeded 62s 22m tkg-system tkr-service Reconcile succeeded 4m6s 4m9s tkg-system tkr-source-controller Reconcile succeeded 2m1s 2m11s tkg-system tkr-vsphere-resolver Reconcile succeeded 2m3s 2m11s
Management Cluster は、tkg-system Namespace に作成されています。
demo-03 [ ~ ]$ tanzu cluster list --include-management-cluster -A NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR tkg21mc01 tkg-system running 1/1 1/1 v1.24.9+vmware.1 management dev v1.24.9---vmware.1-tkg.1
参考: Web UI で生成された YAML
今回は TKG 1.6 の頃の YAML ファイルを利用しましたが、今回の Management Cluster と同様の構成を TKG の Web UI から作成すると、YAML ファイルは下記のように生成されます。
tkg21mc01_tkg2.1-ui.yaml
4. Workload Cluster の作成
TKG 2.1 では、Workload Cluster の作成方法が3種類用意されています。
- Class-based clusters (default)
- Plan-based clusters (legacy) → 以前の TKG の方式
- TKC-based clusters (legacy) → スーパーバイザー クラスタの TKC
tanzu CLI では、features.cluster.allow-legacy-cluster: false となっており、デフォルトでは Legacy 方式での Workload Cluster 作成はできないようです。
demo-03@lab-tkg-02 [ ~ ]$ tanzu config get clientOptions: cli: discoverySources: - oci: name: default image: projects.registry.vmware.com/tkg/packages/standalone-plugins:v0.28.0_vmware.1 edition: tkg bomRepo: projects.registry.vmware.com/tkg compatibilityFilePath: tkg-compatibility features: cluster: allow-legacy-cluster: "false" custom-nameservers: "false" dual-stack-ipv4-primary: "false" dual-stack-ipv6-primary: "false" global: context-aware-cli-for-plugins: "true" context-target-v2: "true" tkr-version-v1alpha3-beta: "false" management-cluster: aws-instance-types-exclude-arm: "true" custom-nameservers: "false" deploy-in-cluster-ipam-provider: "true" dual-stack-ipv4-primary: "false" dual-stack-ipv6-primary: "false" export-from-confirm: "true" import: "false" package-based-cc: "true" standalone-cluster-mode: "false" package: kctrl-command-tree: "true"
4-1. YAML ファイルの作成
ためしに TKG 1.6 で利用していた、Plan-based clusters の YAML を用意します。
tkg21wc01.yml
Management Cluster の YAML との差分です。
demo-03 [ ~ ]$ diff tkg21mc01.yml tkg21wc01.yml 5c5 < CLUSTER_NAME: tkg21mc01 --- > CLUSTER_NAME: tkg21wc01 21c21 < VSPHERE_CONTROL_PLANE_ENDPOINT: 192.168.11.203 --- > VSPHERE_CONTROL_PLANE_ENDPOINT: 192.168.11.204 26c26 < VSPHERE_FOLDER: /infra-dc-01/vm/05-Lab-k8s/k8s_lab-tkg-02_demo-03/vm_tkg21mc01 --- > VSPHERE_FOLDER: /infra-dc-01/vm/05-Lab-k8s/k8s_lab-tkg-02_demo-03/vm_tkg21wc01
この YAML ファイルで Workload Cluster を作成してみると、Workload Cluster の YAML ファイルが「Legacy configuration file」であることが検知され、Workload Cluster の作成は中断されます。そして、自動的に新しい形式にコンバートされた YAML ファイルが生成されます。
demo-03 [ ~ ]$ tanzu cluster create -f tkg21wc01.yml Validating configuration... Warning: Pinniped configuration not found; Authentication via Pinniped will not be set up in this cluster. If you wish to set up Pinniped after the cluster is created, please refer to the documentation. Legacy configuration file detected. The inputs from said file have been converted into the new Cluster configuration as '/home/demo-03/.config/tanzu/tkg/clusterconfigs/tkg21wc01.yaml' To create a cluster with it, use tanzu cluster create --file /home/demo-03/.config/tanzu/tkg/clusterconfigs/tkg21wc01.yaml
生成された YAML ファイルを、わかりやすい名前で保存しておきます。
demo-03 [ ~ ]$ cp $HOME/.config/tanzu/tkg/clusterconfigs/tkg21wc01.yaml tkg21wc01_new.yml
コンバートされた YAML の内容です。
tkg21wc01_new.yml
4-2. Workload Cluster の作成
コンバート生成された YAML ファイルを指定して tanzu cluster create コマンドを実行すると、Workload Cluster が作成されます。
demo-03 [ ~ ]$ tanzu cluster create -f tkg21wc01_new.yml Validating configuration... Warning: Pinniped configuration not found; Authentication via Pinniped will not be set up in this cluster. If you wish to set up Pinniped after the cluster is created, please refer to the documentation. creating workload cluster 'tkg21wc01'... waiting for cluster to be initialized... [zero or multiple KCP objects found for the given cluster, 0 tkg21wc01 default, no MachineDeployment objects found for the given cluster] cluster control plane is still being initialized: ScalingUp cluster control plane is still being initialized: WaitingForIPAllocation @ Machine/tkg21wc01-9spnb-f5zkj cluster control plane is still being initialized: WaitingForKubeadmInit waiting for cluster nodes to be available... unable to get the autoscaler deployment, maybe it is not exist waiting for addons core packages installation... Workload cluster 'tkg21wc01' created demo-03 [ ~ ]$
Workload Cluster が作成されたことを確認しておきます。
demo-03 [ ~ ]$ tanzu cluster list --include-management-cluster -A NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR tkg21wc01 default running 1/1 1/1 v1.24.9+vmware.1dev v1.24.9---vmware.1-tkg.1 tkg21mc01 tkg-system running 1/1 1/1 v1.24.9+vmware.1 management dev v1.24.9---vmware.1-tkg.1
Workload Cluster の kubeconfig を取得して、コンテキストを切り替えます。
demo-03 [ ~ ]$ tanzu cluster kubeconfig get tkg21wc01 --admin Credentials of cluster 'tkg21wc01' have been saved You can now access the cluster by running 'kubectl config use-context tkg21wc01-admin@tkg21wc01' demo-03 [ ~ ]$ kubectl config use-context tkg21wc01-admin@tkg21wc01 Switched to context "tkg21wc01-admin@tkg21wc01".
Workload Cluster ノードの一覧です。
demo-03 [ ~ ]$ kubectl get nodes NAME STATUS ROLES AGE VERSION tkg21wc01-9spnb-f5zkj Ready control-plane 28m v1.24.9+vmware.1 tkg21wc01-md-0-bsvmc-7745b88ff-rvchz Ready <none> 4m34s v1.24.9+vmware.1
Workload Cluster にインストールされてたパッケージの一覧です。
demo-03 [ ~ ]$ kubectl get apps -A NAMESPACE NAME DESCRIPTION SINCE-DEPLOY AGE tkg-system tkg21wc01-antrea Reconcile succeeded 60s 34m tkg-system tkg21wc01-capabilities Reconcile succeeded 65s 34m tkg-system tkg21wc01-metrics-server Reconcile succeeded 108s 34m tkg-system tkg21wc01-pinniped Reconcile succeeded 13m 34m tkg-system tkg21wc01-secretgen-controller Reconcile succeeded 69s 34m tkg-system tkg21wc01-tkg-storageclass Reconcile succeeded 13m 34m tkg-system tkg21wc01-vsphere-cpi Reconcile succeeded 13m 34m tkg-system tkg21wc01-vsphere-csi Reconcile succeeded 21s 34m
以上、TKG 2.1 で Workload Cluster を作成してみる話でした。