Tanzu Kubernetes Grid(以下TKG)のv2.4が'23/9/28にリリースされた。
このメモは、TKG2.4を構築する機会があったので、構築手順を纏めた時のメモ。
TKG2.1とかと比べて大きな変化はないので、主な対象読者は初めてTKGを触る人向けとなる。
なお、今回の検証はUbuntuをBootstrapとして利用するため、Linux環境でのインストール手順となる。
Bootstrapのリソースが貧弱だと構築に失敗するため、メモリは8G以上積んでいることを確認してから進めた方がよい。
準備
Customer ConnectのDownloadページから以下を入手する。
- Ubuntu 2004 Kubernetes v1.27.5 OVA (PhotonでもOK)
- kubectl cli v1.27.5 for Linux
- TKG Carvel Tools for Linux
OVAに関してはvSphere ClientでDeploy OVF Template
から転送済みの状態になっているものとし、コマンド類のファイルもbootstrapに転送済みの状態から開始する。
バイナリについては全て${HOME}/bin以下にインストールするものとし、以下でパスを通しておく。
echo 'export PATH=$PATH:${HOME}/bin' >> ~/.bashrc
. ~/.bashrc
またこちらからTanzu CLIも入手する。
Carvel Toolsのインストール
正直なところ、普通にクラスタを構築する分にはCarvel Toolsをインストールする必要はない。
ただ、入れとくと便利なこともあるので、ここでは一応入れておく。
tar xvzfp tkg-carvel-tools-linux-amd64.tar.gz
gunzip cli/*
install cli/imgpkg-linux-amd64-v0.36.0+vmware.2 ~/bin/imgpkg
install cli/kapp-linux-amd64-v0.55.0+vmware.2 ~/bin/kapp
install cli/kbld-linux-amd64-v0.37.0+vmware.2 ~/bin/kbld
install cli/vendir-linux-amd64-v0.33.1+vmware.2 ~/bin/vendir
install cli/ytt-linux-amd64-v0.45.0+vmware.2 ~/bin/ytt
tanzu CLIのインストール
ファイルを展開して~/bin
以下にシンボリックリンクを張る。
tar xvzfp tanzu-cli-linux-amd64.tar.gz
mkdir -p ~/bin/tanzucli
mv v1.0.0/ ~/bin/tanzucli/
ln -s ~/bin/tanzucli/v1.0.0/tanzu-cli-linux_amd64 ~/bin/tanzu
確認する。
$ tanzu version
version: v1.0.0
buildDate: 2023-08-08
sha: 006d0429
次にPluginをインストールする。
tanzu plugin install --group vmware-tkg/default:v2.4.0
途中でGeneral Termsに同意するかと、カスタマーエクスペリエンス向上プログラムに参加するかを聞かれるので、それぞれ回答して先に進む。
最後に補完が聞くようcompletionを入れる。
echo "source <(tanzu completion bash)" >> ~/.bashrc
. ~/.bashrc
kubectlのインストール
ファイルを展開して~/bin
以下にシンボリックリンクを張る。
gunzip kubectl-linux-v1.27.5+vmware.1.gz
mkdir -p ~/bin/kubectl-bin/v1.27.5
chmod +x kubectl-linux-v1.27.5+vmware.1
mv kubectl-linux-v1.27.5+vmware.1 ~/bin/kubectl-bin/v1.27.5
ln -s ~/bin/kubectl-bin/v1.27.5/kubectl-linux-v1.27.5+vmware.1 ~/bin/kubectl
dockerのインストール
以下を実行してインストールする。
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release -y
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
sudo systemctl restart docker
dockerコマンドが叩けるようにユーザをdockerグループに追加してログインしなおす。
sudo usermod -aG docker $USER
exit
Management Clusterの作成
公式ドキュメントはこちら。
ここではUIからインストールを行う。
なお、こちらの記載によると、以下のようなケースではCLIからインストールする必要がある。
- IPv6やDual-Stackネットワークの利用
-
VSPHERE_STORAGE_POLICY_ID
を使ったカスタムストレージポリシーの利用 - Node IPAMの利用
tanzu
コマンドを実行してインストール用のUIを立ち上げる。
tanzu mc create --bind 10.180.81.126:9999 --ui -v9
インストール時の設定についてはTKG2.1の時とほとんど変わっていないので割愛する。
ただ、TKG2.1と比べてAvailability Zone(AZ)が選べるようになっている点は変更点となる。
AZに関してはここでは触れないが、利用する際は以下を読むと良い。
Workload Clusterの作成
こちらの公式手順に沿って進める。
Workload Clusterの設定ファイルを作成する。
最初にManagement Clusterの設定ファイルをコピーする。
cd ~/.config/tanzu/tkg/clusterconfigs/
cp gl2rih06fv.yaml workload.yaml
vSphere with Standalone Management Cluster Configuration Filesを見ながら設定していく。
ここでは以下を設定した。
--- gl2rih06fv.yaml 2023-10-03 04:04:47.722003999 +0000
+++ workload.yaml 2023-10-03 04:36:19.790320366 +0000
@@ -1,3 +1,5 @@
+CLUSTER_NAME: tkg24-wc
+NAMESPACE: default
AVI_CA_DATA_B64: ""
AVI_CLOUD_NAME: ""
AVI_CONTROL_PLANE_HA_PROVIDER: "false"
@@ -18,7 +20,7 @@
AVI_USERNAME: ""
CLUSTER_ANNOTATIONS: 'description:,location:'
CLUSTER_CIDR: 100.96.0.0/11
-CLUSTER_PLAN: dev
+CLUSTER_PLAN: prod
ENABLE_AUDIT_LOGGING: "false"
ENABLE_CEIP_PARTICIPATION: "false"
ENABLE_MHC: "false"
@@ -50,8 +52,8 @@
SERVICE_CIDR: 100.64.0.0/13
TKG_HTTP_PROXY_ENABLED: "false"
VSPHERE_CONTROL_PLANE_DISK_GIB: "40"
-VSPHERE_CONTROL_PLANE_ENDPOINT: 10.180.81.249
-VSPHERE_CONTROL_PLANE_MEM_MIB: "16384"
+VSPHERE_CONTROL_PLANE_ENDPOINT: 10.180.81.248
+VSPHERE_CONTROL_PLANE_MEM_MIB: "8192"
VSPHERE_CONTROL_PLANE_NUM_CPUS: "4"
VSPHERE_DATACENTER: /vSAN-DC
VSPHERE_DATASTORE: /vSAN-DC/datastore/vsanDatastore
@@ -64,7 +66,7 @@
VSPHERE_SSH_AUTHORIZED_KEY: ssh-rsa AAAAB3Nz...
VSPHERE_TLS_THUMBPRINT: B7:6F:93:7D:B2:4F:F5:52:49:F3:F7:9E:68:53:3B:EB:68:B5:72:D0
VSPHERE_USERNAME: administrator@vsphere.local
-VSPHERE_WORKER_DISK_GIB: "40"
+VSPHERE_WORKER_DISK_GIB: "100"
VSPHERE_WORKER_MEM_MIB: "8192"
-VSPHERE_WORKER_NUM_CPUS: "2"
+VSPHERE_WORKER_NUM_CPUS: "4"
WORKER_ROLLOUT_STRATEGY: ""
auto-apply-generated-clusterclass-based-configuration
(plan-basedの設定ファイルをclass-basedのものに自動変換する設定)をtrueにする。
tanzu config set features.cluster.auto-apply-generated-clusterclass-based-configuration true
Workload Clusterを作成する。
tanzu cl create -f ./workload.yaml -v9
構築後、kubeconfigを取得してコンテキストを切り替える。
tanzu cl kubeconfig get tkg24-wc --admin
kubectl config use-context tkg24-wc-admin@tkg24-wc
無事作成された。
$ kubectl get node
NAME STATUS ROLES AGE VERSION
tkg24-wc-8rxxh-87tzq Ready control-plane 10m v1.27.5+vmware.1
tkg24-wc-8rxxh-slmgs Ready control-plane 8m29s v1.27.5+vmware.1
tkg24-wc-8rxxh-vlb67 Ready control-plane 6m47s v1.27.5+vmware.1
tkg24-wc-md-0-nbjzg-85bb5bddd8xxl95h-p5lcz Ready <none> 8m54s v1.27.5+vmware.1
tkg24-wc-md-1-2bw24-5fb7c8dc9xncbpk-d2452 Ready <none> 8m52s v1.27.5+vmware.1
tkg24-wc-md-2-t7q5s-5bdc9746d4xhpq9c-dbhjk Ready <none> 8m45s v1.27.5+vmware.1