Tanzu Kubernetes Grid2.1とNSX ALBでKubernetes環境を構築する方法(クラスタ管理マシン構築編)

6 min read

はじめに

VMware vSphere環境ではTanzu Kubernetes Grid(通称: TKG)を使用することで簡単にKubernetes環境を構築することができます。本記事で紹介するTKGはStandalone版であり、マルチクラウドに対応可能なTKGmです。また、NSX ALBはEssentialsライセンスを使用していきます。本記事ではBootStrapマシン以外でTanzu CLIを実行するマシンを作成し、ManagementクラスタおよびWorkloadクラスタを管理する方法を紹介します。

前回

今回はManagementクラスタの構築、Workloadクラスタの構築が済んでいることを前提に進んでいきます。構築がまだな方は以下の記事を参考にTanzu Kubernetes Gridの構築をよろしくお願いします。

https://www.munenick.me/blog/tkg-nsx-alb-03

環境

環境
VMware ESXi 8
VMware vCenter 8
Tanzu Kubernetes Grid 2.1.1
NSX Advanced Load Balancer 22.1.3

前提条件

  • VMware ESXiの構築及びvCenterを使用してDatacenterの管理ができていること
  • 2つ以上のVLAN環境が構築できていること
    • 本環境ではマネジメントネットワーク:VM Network(VLAN0)とKubernetes用ネットワーク:VLAN100(VLAN100)を用意しています。
  • 十分なリソースのあるサーバ、ストレージ
    • NSX ALBでCPU:8, RAM:24GB, ROM:128GB使用します。
    • 要件によりますが、デプロイするKubernetesノードでもCPU:2, RAM:8GB, ROM:40GBの仮想マシンが4~12個デプロイされます。

クラスタ管理マシンの用意

自身の要件にあったOSを新規構築するか既存のOSを利用してください。管理マシンはLinux, MacOS, Windowsのどれかで動作します。詳細は以下のリンクをご参照ください。今回はBootStrapマシンと同様に

https://docs.vmware.com/jp/VMware-Tanzu-Kubernetes-Grid/2.1/tkg-deploy-mc-21/install-cli.html

Tanzu CLIおよびkubectlをインストール

クラスタ管理用マシンにTanzu CLIおよびkubectlをインストールしてください。Linuxの場合、BootStrapマシンのセットアップと同様の手順でインストールできると思います。

他OSの場合、以下のURLを参照してください。

https://docs.vmware.com/jp/VMware-Tanzu-Kubernetes-Grid/2.1/tkg-deploy-mc-21/install-cli.html

kubeconfigのコピー

BootStrapマシンからクラスタ管理マシンにkubeconfigをコピーする必要があります。

BootStrapマシンでの作業

  • 以下のコマンドを実行して、Managementクラスタのkubeconfigを取得してください。
MuNeNiCK [ ~ ]$ tanzu mc kubeconfig get tkg21mc01 --admin --export-file=$HOME/t
kg21mc01.kubeconfig.yaml
Credentials of cluster 'tkg21mc01' have been saved
You can now access the cluster by running 'kubectl config use-context tkg21mc01       -admin@tkg21mc01' under path '/home/MuNeNiCK/tkg21mc01.kubeconfig.yml'
MuNeNiCK [ ~ ]$ ls -l tkg21mc01.kubeconfig.yml
-rw------- 1 MuNeNiCK users 5567 May 11 11:02 tkg21mc01.kubeconfig.yaml
  • このファイルを保存し、クラスタ管理マシンに転送できるようにしておいてください。

クラスタ管理マシンでの作業

  • 保存したkubeconfigをクラスタ仮想マシンに転送してください。

  • 以下のコマンドを実行して、kubeconfigファイルを配置してください。

MuNeNiCK [ ~ ]$ mkdir $HOME/.kube-tkg
MuNeNiCK [ ~ ]$ cp $HOME/tkg21mc01.kubeconfig.yaml $HOME/.kube-tkg/config

Managementクラスタへの接続

  • 以下のコマンドを実行し、Managementクラスタにログインします。
MuNeNiCK [ ~ ]$ tanzu login --name=tkg21mc01 --kubeconfig=$HOME/.kube-tkg/config --context=tkg21mc01-admin@tkg21mc01
  • TAB補完機能に更新があるので、以下のコマンドを実行してください。
MuNeNiCK [ ~ ]$ source <(tanzu completion bash)
  • 以下のコマンドを実行し、Managementクラスタのkubeconfigを取得してください。
MuNeNiCK [ ~ ]$ tanzu mc kubeconfig get --admin
Credentials of cluster 'tkg21mc01' have been saved 
You can now access the cluster by running 'kubectl config use-context tkg21mc01-admin@tkg21mc01'
  • 以下のコマンドを実行し、使用するコンテキストを指定してください。
MuNeNiCK [ ~ ]$ kubectl config use-context tkg21mc01-admin@tkg21mc01
Switched to context "tkg21mc01-admin@tkg21mc01".
  • 以下のコマンドを実行して現在のコンテキストを確認してください。
MuNeNiCK [ ~ ]$ kubectl config get-contexts
CURRENT   NAME                        CLUSTER     AUTHINFO          NAMESPACE
          tkg21mc01-admin@tkg21mc01   tkg21mc01   tkg21mc01-admin   
  • コンテキストを使用してクラスタのノードを確認します。以下のコマンドを実行してください。
MuNeNiCK [ ~ ]$ kubectl get nodes
NAME                                   STATUS   ROLES           AGE   VERSION
tkg21mc01-md-0-2dzzk-bc849dd49-8svzt   Ready    <none>          11h   v1.24.10+vmware.1
tkg21mc01-s8ssk-fhjlq                  Ready    control-plane   11h   v1.24.10+vmware.1

Workloadクラスタへの接続

  • まず、以下のコマンドを実行してkubeconfigを取得してください。
MuNeNiCK [ ~ ]$ 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 tkg21wc01admin@tkg21wc01'
  • 次にログに出力されている通り、以下のコマンドを実行します。
MuNeNiCK [ ~ ]$ kubectl config use-context tkg21wc01-admin@tkg21wc01
Switched to context "tkg21wc01-admin@tkg21wc01".
  • 以下のコマンドを実行して現在のコンテキストを確認してください
MuNeNiCK [ ~ ]$ kubectl config get-contexts
CURRENT   NAME                        CLUSTER     AUTHINFO          NAMESPACE
          tkg21mc01-admin@tkg21mc01   tkg21mc01   tkg21mc01-admin
*         tkg21wc01-admin@tkg21wc01   tkg21wc01   tkg21wc01-admin
  • コンテキストを使用してクラスタのノードを確認します。以下のコマンドを実行してください。
MuNeNiCK [ ~ ]$ kubectl get nodes
NAME                                    STATUS   ROLES           AGE     VERSION
tkg21wc01-md-0-bzhsf-7876ffdcb7-8nkg8   Ready    <none>          8h      v1.24.10+vmware.1
tkg21wc01-md-1-hxlzn-7cbf69bd58-4tqjc   Ready    <none>          8h      v1.24.10+vmware.1
tkg21wc01-md-2-nrn7z-6bb84c66c-gxjgx    Ready    <none>          8h      v1.24.10+vmware.1
tkg21wc01-mdcg5-52ld6                   Ready    control-plane   8h      v1.24.10+vmware.1
tkg21wc01-mdcg5-n46zx                   Ready    control-plane   7h53m   v1.24.10+vmware.1
tkg21wc01-mdcg5-zkqg8                   Ready    control-plane   8h      v1.24.10+vmware.1

最後に

これまでの作業でTanzu CLIをクラスタ管理用マシンで動かし、2つのクラスタにアクセスできるようになりました。今後のクラスタの管理は基本的にこのマシンで実施することになります。一般的にはここまでの作業を終えた場合、BootStrapマシンを削除するようですが、それぞれの要件に合わせて判断してください。(私の場合は残しております。)もし、BootStrapマシンを削除する場合は、Managemet, Workloadクラスタ両方のyamlを保存しておくことをおすすめします。

次回

NSX ALBにはL7 Ingressを動かす方法が存在します。また、それを動作させるためにNSX ALB上にDNS Providerを実装する必要があります。(1部の設定によってはDNSの実装は必要ありません。) 次回はNSX ALBのDNS Providerの構築、AKO Ingressの構築、Ingress用証明書の実装方法を紹介します。ここからの作業はEnterprise Editionが必要になります。 https://www.munenick.me/blog/tkg-nsx-alb-05

参考にさせていただいたサイト