vSphere 8.0 U3 の Local Consumption Interface(LCI)で、Tanzu Kubernetes Grid(TKG)クラスタを作成してみます。
LCI 有効化の様子はこちらをどうぞ。
今回の内容です。
1. vSphere 名前空間の作成
vSphere 名前空間の作成手順は、これまでの vSphere with Tanzu と同様です。下記のような感じで作成します。
今回は、demo-ns-01 という vSphere 名前空間を作成して、権限、ストレージ ポリシー、仮想マシン クラスを割り当ててあります。
- 権限: Administrator@vsphere.local ユーザに、所有者 ロール
- ストレージ ポリシー: vwt-nfs-policy
- 仮想マシン クラス: best-effort-small、(ついでに best-effort-xsmall)
2. LCI での TKG クラスタ作成
vSphere 名前空間の「リソース」タブ → vSphere 名前空間名の配下にある「Tanzu Kubernetes Grid」の「OPEN」をクリックします。
「Tanzu Kubernetes Grid service」の画面が開くので、「CREATE」をクリックします。
「1. Configuration Type」では、今回はデフォルトのまま「NEXT」をクリックします。
- Cluster Type: ClusterClass API
- Configuration Type: Default Configuration
「2. Review and Confirm」で「FINISH」をクリックします。
これで、TKG クラスタの作成が開始されます。
作成開始された TKG クラスタの Name の前にある「>>」ボタンをクリックすると、クラスタの情報を確認できます。
3. LCI での TKG クラスタ情報確認
しばらく待つと TKG クラスタの作成が完了して、Phase が「Running」になります。
vSphere 名前空間の「サマリ」や「リソース」といったタブは、「ワークロード管理」メニュー配下以外でも、「仮想マシンおよびテンプレート」のインベントリでは表示できます。ただし、「ホストおよびクラスタ」のインベントリでは表示できません。
vSphere Client の「仮想マシンおよびテンプレート」インベントリで vSphere 名前空間(demo-ns-01)→「リソース」タブを開くと、TKG クラスタの仮想マシンが作成されて、Phase が「Running」になっている様子が同時に確認できます。
TKG クラスタ名をクリックすると・・・
詳しめな情報が表示されます。下にスクロールすると・・・
Cluster health status や・・・
イベント情報などが確認できます。
ちなみに、TKG クラスタの API Server の外部 IP アドレスは、vSphere 名前空間の「ネットワーク」タブ →「サービス」などから確認できます。
4. TKG クラスタへの接続
TKG クラスタにアクセスするための kubeconfig は、vSphere Client でもダウンロードできるようになっています。
4-1. kubeconfig ファイルの入手
vSphere 名前空間の「リソース」タブ →「Tanzu Kubernetes Grid」 を開き、TKG クラスタの「>>」ボタンをクリックすると、「DOWNLOAD KUBECONFIG FILE」リンクから kubeconfig ファイルをダウンロードできます。
デフォルトのファイル名は「<TKG クラスタ名>-kubeconfig.yaml」です。
- kubeconfig ファイル名の例: tkg-cluster-f9k1-kubeconfig.yaml
4-2. kubectl の準備
従来からある、kubectl でスーパーバイザーを介して TKG クラスタに接続する方式では、基本的には TKG クラスタの初回ログインには、kubctl vsphere login が必要でした。
- kubectl vSphere Plug-in ダウンロードの様子
- kubctl vsphere login での TKG クラスタへの接続の様子
しかし、vSphere 名前空間の「リソース」タブからダウンロードした kubeconfig ファイルでは、直接 TKG クラスタに接続できます。ちなみに、10時間のセッション期限切れもないようです。
基本的には、kubectl は従来通りスーパーバイザー制御プレーンや、Broadcom Support Portal(旧 VMware Customer Connect)からダウンロードしたものを利用するとよいとは思います。しかし今回は、ためしにスーパーバイザーからダウンロードする kubectl 一式ではなく、Kubernetes プロジェクト公式リリース サイトにあるものを利用してみます。
TKG クラスタの Kubernetes バージョンに合わせた、kubectl をダウンロードします。
$ mkdir ./bin $ curl -L -o ./bin/kubectl https://dl.k8s.io/release/v1.29.4/bin/linux/amd64/kubectl
実行権限を付与して、配置したディレクトリを PATH 環境変数に追加します。
$ chmod +x ./bin/kubectl $ export PATH=$(pwd)/bin:$PATH
kubectl が実行可能になりました。
$ kubectl version --client Client Version: v1.29.4 Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
4-3. TKG クラスタへの接続確認
kubeconfig を kubectl を実行するマシンに配置して、kubectl config view コマンドを実行してみます。接続先は、スーパーバイザー制御プレーンではなく、TKG クラスタの制御プレーン(192.168.131.35)になっています。
$ kubectl config view --minify --kubeconfig tkg-cluster-f9k1-kubeconfig.yaml apiVersion: v1 clusters: - cluster: certificate-authority-data: DATA+OMITTED server: https://192.168.131.35:6443 name: tkg-cluster-f9k1 contexts: - context: cluster: tkg-cluster-f9k1 user: tkg-cluster-f9k1-admin name: tkg-cluster-f9k1-admin@tkg-cluster-f9k1 current-context: tkg-cluster-f9k1-admin@tkg-cluster-f9k1 kind: Config preferences: {} users: - name: tkg-cluster-f9k1-admin user: client-certificate-data: DATA+OMITTED client-key-data: DATA+OMITTED
TKG クラスタのノード情報を取得できました。
$ kubectl --kubeconfig tkg-cluster-f9k1-kubeconfig.yaml get nodes NAME STATUS ROLES AGE VERSION tkg-cluster-f9k1-rnc2d-h9ttp Ready control-plane 66m v1.29.4+vmware.3-fips.1 tkg-cluster-f9k1-tkg-cluster-f9k1-nodepool-lrqvc-qmg27-qgkmb Ready <none> 51m v1.29.4+vmware.3-fips.1
ここからは、KUBECONFIG 環境変数を設定して、kubeconfig の指定を省略します。
$ export KUBECONFIG=$(pwd)/tkg-cluster-f9k1-kubeconfig.yaml
Pod の情報を取得してみます。
$ kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system antrea-agent-jp42w 2/2 Running 0 52m kube-system antrea-agent-nhkzt 2/2 Running 0 63m kube-system antrea-controller-68b86f5c8c-pv79h 1/1 Running 0 63m kube-system coredns-66d8b77bb7-dg2s2 1/1 Running 0 66m kube-system coredns-66d8b77bb7-fmmwb 1/1 Running 0 66m kube-system docker-registry-tkg-cluster-f9k1-rnc2d-h9ttp 1/1 Running 0 67m kube-system docker-registry-tkg-cluster-f9k1-tkg-cluster-f9k1-nodepool-lrqvc-qmg27-qgkmb 1/1 Running 0 52m kube-system etcd-tkg-cluster-f9k1-rnc2d-h9ttp 1/1 Running 0 67m kube-system kube-apiserver-tkg-cluster-f9k1-rnc2d-h9ttp 1/1 Running 0 67m kube-system kube-controller-manager-tkg-cluster-f9k1-rnc2d-h9ttp 1/1 Running 10 (29m ago) 67m kube-system kube-proxy-6q85v 1/1 Running 0 66m kube-system kube-proxy-kmnkk 1/1 Running 0 52m kube-system kube-scheduler-tkg-cluster-f9k1-rnc2d-h9ttp 1/1 Running 8 (30m ago) 67m kube-system metrics-server-59bf4947db-8pqwf 1/1 Running 0 62m kube-system snapshot-controller-d8fc6b96-brf85 1/1 Running 0 63m secretgen-controller secretgen-controller-78bc8b9d65-j4rvq 1/1 Running 0 62m tkg-system kapp-controller-747b776d74-mmw56 2/2 Running 0 66m tkg-system tanzu-capabilities-controller-manager-58bfcc4485-kb9wh 1/1 Running 0 59m vmware-system-antrea register-placeholder-xj49j 0/1 Completed 0 63m vmware-system-auth guest-cluster-auth-svc-crj59 1/1 Running 0 53m vmware-system-cloud-provider guest-cluster-cloud-provider-5f8f6fbc86-tklmn 1/1 Running 6 (29m ago) 63m vmware-system-csi vsphere-csi-controller-784f895794-l5lfn 7/7 Running 0 63m vmware-system-csi vsphere-csi-node-4xz5j 3/3 Running 4 (33m ago) 52m vmware-system-csi vsphere-csi-node-f7qrh 3/3 Running 7 (44m ago) 63m
パッケージの情報です。
$ kubectl get apps -A NAMESPACE NAME DESCRIPTION SINCE-DEPLOY AGE vmware-system-tkg tkg-cluster-f9k1-antrea Reconcile succeeded 6m29s 64m vmware-system-tkg tkg-cluster-f9k1-capabilities Reconcile succeeded 8m15s 62m vmware-system-tkg tkg-cluster-f9k1-gateway-api Reconcile succeeded 7m51s 62m vmware-system-tkg tkg-cluster-f9k1-guest-cluster-auth-service Reconcile succeeded 8m27s 64m vmware-system-tkg tkg-cluster-f9k1-metrics-server Reconcile succeeded 96s 63m vmware-system-tkg tkg-cluster-f9k1-pinniped Reconcile succeeded 9m5s 63m vmware-system-tkg tkg-cluster-f9k1-secretgen-controller Reconcile succeeded 27s 63m vmware-system-tkg tkg-cluster-f9k1-vsphere-cpi Reconcile succeeded 16s 64m vmware-system-tkg tkg-cluster-f9k1-vsphere-pv-csi Reconcile succeeded 20s 64m
5. TKG クラスタの削除
TKG クラスタを削除しておきます。
TKG クラスタの作成と同様に、vSphere 名前空間の「リソース」タブ →「Tanzu Kubernetes Grid」にある「OPEN」を開いて、TKG クラスタの先頭にあるボタンをクリックします。
「DELETE」をクリックします。
確認画面が表示されるので、ここでも「DELETE」をクリックします。
これで、TKG クラスタの削除処理が開始されます。
少し待つと、TKG クラスタが削除されます。
以上、LCI で TKG クラスタを作成してみる話でした。
つづきはこちら。