vm.gowatana.jp

NEOにほんごVMware(仮)

vSphere IaaS Control Plane 8.0 U3 の Local Consumption Interface で TKG クラスタを作成してみる。

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 が必要でした。

 

しかし、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 クラスタを作成してみる話でした。

つづきはこちら。