Tanzu Kubernetes Grid2.1とNSX ALBでKubernetes環境を構築する方法(事前準備編)

17 min read

はじめに

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

前回

今回はNSX ALBが構築してあることを前提に進んでいきます。構築がまだな方は以下の記事を参考にNSX ALBの構築をよろしくお願いします。

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

環境

環境
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個デプロイされます。

必要ファイルの準備

TKGを構築する際にいくつかのファイルが必要になります。ここでは必要なファイルの準備を行います。

  • 以下のサイトにアクセスしてください。 https://customerconnect.vmware.com/downloads/details?downloadGroup=TKG-211&productId=1400&rPId=100663

  • VMware Connectでログインしてください。

  • 以下の項目のファイルをダウンロードしてください。※OVAファイルに関してはPhoton v3とUbuntu 2004の2つが用意されています。ご自身の要件に応じて決定してください。本記事ではUbuntuよりも軽量であるPhoton OSを使用していきます

項目名 ファイル名
VMware Tanzu CLI for Linux tanzu-cli-bundle-linux-amd64.tar.gz
Photon v3 Kubernetes v1.24.10 OVA または Ubuntu 2004 Kubernetes v1.24.10 OVA photon-3-kube-v1.24.10+vmware.1-tkg.1-fbb49de6d1bf1f05a1c3711dea8b9330.ova または ubuntu-2004-kube-v1.24.10+vmware.1-tkg.1-765d418b72c247c2310384e640ee075e.ova
kubectl cli v1.24.10 for Linux kubectl-linux-v1.24.10+vmware.1.gz

vCenter上での事前準備

TKGを構築する前にvCenter上でいくつかの事前準備があります。

フォルダの作成

  • Datacenterを右クリックし、「新規フォルダ」、「新規仮想マシンおよびテンプレートフォルダ」をクリックしてください。

  • 任意のフォルダ名を入力してください。今回は「TKG」というフォルダを作成します。

  • 同様の手順でTKGフォルダ内に以下のフォルダを作成してください。ただし、名前は一例であり、任意の名前に変えていただいて構いません。

    • Management
    • Workload
    • Template

TKRテンプレートの作成

TKGでは、先程ダウンロードしたOVAをデプロイし、テンプレート化したものをノードとして使用します。これをTKRといいます。

OVAのデプロイ

  • 先程作成したTKGフォルダ内の「Template」フォルダを右クリックし、「OVFテンプレートのデプロイ」をクリックしてください。

  • ローカルファイルを選択し、先程ダウンロードしたOVAファイル(Photon v3 Kubernetes v1.24.10 OVA または Ubuntu 2004 Kubernetes v1.24.10 OVA)を選択してください。

  • 名前とフォルダの選択では、仮想マシン名は変更しないでください。仮想マシンの保存場所は「TKG」→「Template」であることを確認してください。

  • コンピューティングリソースの選択では、自身の環境に合わせたデータセンタ、クラスタまたはホストを指定してください。

  • 詳細の確認を行ったら、「次へ」をクリックしてください。

  • 使用許諾契約では、「すべての使用許諾同意書に同意します。」にチェックを入れ、「次へ」をクリックしてください。

  • ストレージの選択では、自身の環境に合わせたストレージを選択してください。

  • ネットワークの選択では、TKG構築の際にネットワークインターフェースを上書きするのでデフォルトで構いません。

  • 設定を確認したら「完了」をクリックし、OVAのデプロイを行ってください。

テンプレートに変換

  • 「TKG」→「Template」フォルダ内のPhoton v3またはUbuntu 2004を右クリックし、「テンプレート」→「テンプレートに変換」をクリックしてください。

  • 変換の確認にて「はい」をクリックしてください。

  • 仮想マシンを開き、「仮想マシンテンプレートの詳細」という表示ができていれば完了です。

BootStrapマシンの作成

Tanzu Kubernetes Gridではまず、BootStrapと呼ばれるマシンを用いてManagement Clusterを構築します。BootStrapマシンはDockerの動作が前提であり、Docker上で動作するkindと呼ばれるKubernetes ClusterでCluster APIを実行し、vSphere上にKubernetes用ノードを作成します。

BootStrap用仮想マシンの作成

基本的にDockerが動作しているマシンであればBootStrapマシンとして動作しますが、今回はPhoton OSをOVAからデプロイして作成していきます。

  • 以下のサイトにアクセスする。 https://github.com/vmware/photon/wiki/Downloading-Photon-OS

  • Downloading Photon OS 5.0 GA欄にある「OVA with virtual hardware v15 (Supports both BIOS and UEFI boot, default is UEFI)」のリンクをコピーしてください。(または以下のURLをコピーしてください。) https://packages.vmware.com/photon/5.0/GA/ova/photon-hw15-5.0-dde71ec57.x86_64.ova

  • vCenterへログインする。

  • 「TKG」フォルダを右クリックし、「OVFテンプレートのデプロイ」をクリックしてください。

  • OVFテンプレートの選択では、URLに先程コピーしたURLを貼り付ける。

  • ソースの検証では、警告が出るが「はい」をクリックし、続行してください。

  • 名前とフォルダの選択では、名前は任意の名前を指定し、フォルダには「TKG」フォルダが選択されていることを確認してください。

  • コンピューティングリソースの選択では、自身の環境に合わせてリソースを選択してください。

  • 詳細を確認したら「次へ」をクリックしてください。

  • 使用許諾契約書の確認では「同意」にチェックを入れ、「次へ」をクリックしてください。

  • ストレージの選択では、自身の環境に合わせてストレージを選択してください。

  • ネットワークの選択では、マネジメントネットワークを選択してください。

  • 設定の確認をしたら「完了」をクリックし、OVAをデプロイしてください。

OVAデプロイ中に次の項目に進んでください。

仮想マシンのカスタマイズ仕様の作成

BootStrapマシンにIPアドレスやホスト名の設定を行うために、カスタマイズ仕様を作成します。

  • vSphere Clientのメニューにある「ポリシーおよびプロファイル」をクリックしてください。

  • 「仮想マシンのカスタマイズ仕様」をクリックし、「新規」をクリックしてください。

  • 名前とターゲットOSでは、名前には任意の名前を指定し、ターゲットゲストOSは「Linux」を選択してください。

  • コンピュータ名では、「クローン/デプロイウィザードに名前を入力」を選択し、後でコンピュータ名を指定できるようにします。また、ドメイン名には任意のドメインまたは「localhost.localdomain」を指定します。

  • タイムゾーンでは、エリアを「アジア」に設定し、保存場所を「東京」に設定してください。

  • カスタマイズスクリプトでは、特に設定を行わないのでデフォルトのまま「次へ」をクリックしてください。

  • ネットワークでは、「カスタム設定を手動で選択」を選択してください。その後、「NIC1」を選択し、「編集」をクリックしてください。

  • ネットワークの編集にて「この使用を使用する場合、IPv4アドレスの入力プロンプトを表示」を選択し、「OK」をクリックしてください。

  • DNS設定では、自身の環境に合わせたDNS設定を行ってください。

  • 設定を確認したら、「完了」をクリックしてください。

BootStrapマシンの起動前セッティング

OVAのデプロイが終わったら、起動せずにいくつか設定を行います。

ゲストOSのカスタマイズ

  • 仮想マシンを開き、「アクション」→「ゲストOS」→「ゲストOSのカスタマイズ」をクリックしてください。

  • ゲストOSのカスタマイズでは、先程作成したカスタマイズ仕様を選択してください。

  • 必要な追加のアクションにて警告が出ますが、「はい」をクリックしてください。

  • ゲストOSのカスタマイズにて、任意のコンピュータ名、自身の環境に合わせたネットワーク設定を行い、「保存」をクリックしてください。

仮想マシン要件の変更

BootStrapサーバに割り当てるCPUやRAMが少ない場合、デプロイが正常に行われない場合があります。

  • 仮想マシンの「アクション」→「設定の編集」をクリックしてください。

  • CPUとメモリを自身の環境に合わせて変更してください。今回はCPU: 4, メモリ: 8GBに指定しています。

  • ここまでの設定が終わったら仮想マシンを起動してください。

BootStrapマシンのセットアップ

Boostrapマシンの基本的な設定

  • Teratermなどを使用してBootStrapマシンにSSHで接続してください。 この際、ユーザ名/パスワードは以下のようになります。
ユーザ名 パスワード
root changeme
  • 初回アクセス時にはパスワード変更を要求されます。「Current password」には「changeme」を入力し、「New password」および「Retype new password」には任意のパスワードを入力してください。

  • パッケージをアップデートするために以下のコマンドを入力してください。また、アップデート終了後、再起動を行ってください。
root@BootStrap [ ~ ]# tdnf update -y
root@BootStrap [ ~ ]# shutdown -r now
  • 再度SSHでBootStrapマシンにアクセスしてください。この際、ユーザは「root」、パスワードは自身で設定したパスワードになります。

  • 必要なパッケージを以下のコマンドでインストールしてください。

root@BootStrap [ ~ ]# tdnf install -y tar diffutils
  • 外部からWebUIにアクセスするため、以下のコマンドでファイアウォールを無効化してください。
root@BootStrap [ ~ ]# systemctl stop iptables
root@BootStrap [ ~ ]# systemctl disable iptables
  • BootStrapマシンはDockerの動作が必須になるので、以下のコマンドでインストールを確認してください。また、TKRがUbuntuの場合は別途Docker環境を構築する必要があります。
root@BootStrap [ ~ ]# rpm -q docker
docker-23.0.2-1.ph5.x86_64
root@BootStrap [ ~ ]# docker -v
Docker version 23.0.2, build 569dd73
  • Dockerのサービスを有効化するために以下のコマンドを実行してください。
root@BootStrap [ ~ ]# systemctl enable docker
root@BootStrap [ ~ ]# systemctl start docker
  • 以下のコマンドでDockerサービスが起動していることを確認してください。
root@BootStrap [ ~ ]# systemctl status docker

  • Tanzu CLIをroot以外のユーザで実行するため、一般ユーザを以下のコマンドで作成します。以降、「MuNeNiCK」は自身で指定したユーザ名に置き換えてください。
root@BootStrap [ ~ ]# useradd -m MuNeNiCK
root@BootStrap [ ~ ]# passwd MuNeNiCK
  • 一般ユーザでDockerを実行するために以下のコマンドを実行してください。
root@BootStrap [ ~ ]# usermod -aG docker MuNeNiCK
  • FTPやSCPなどを用いて以下の2つのファイルを作成したユーザのホームディレクトリ(例: /home/MuNeNiCK)に送信してください。今回はTeratermのSCP機能で送信しています。

    • tanzu-cli-bundle-linux-amd64.tar.gz
    • kubectl-linux-v1.24.10+vmware.1.gz
  • 以下のコマンドでファイルが送信された事を確認してください。

root@BootStrap [ ~ ]# ls -al /home/MuNeNiCK/
total 282364
drwxr-xr-x 2 MuNeNiCK users      4096 May  9 20:15 .
drwxr-xr-x 3 root     root       4096 May  9 20:10 ..
-rw-r--r-- 1 MuNeNiCK users       178 Apr 25 03:27 .bash_logout
-rw-r--r-- 1 MuNeNiCK users       643 Apr 25 03:27 .bash_profile
-rw-r--r-- 1 MuNeNiCK users       451 Apr 25 03:27 .bashrc
-rw-r----- 1 root     root   14062013 Apr 23 20:34 kubectl-linux-v1.24.10+vmware.1.gz
-rw-r----- 1 root     root  275052656 Apr 23 20:34 tanzu-cli-bundle-linux-amd64.tar.gz
  • 送信したファイルに権限を付与するために以下のコマンドを実行してください。
root@BootStrap [ ~ ]# chmod 777 /home/MuNeNiCK/tanzu-cli-bundle-linux-amd64.tar.gz
root@BootStrap [ ~ ]# chmod 777 /home/MuNeNiCK/kubectl-linux-v1.24.10+vmware.1.gz
  • ここからは作成したユーザでの作業になります。以下のコマンドでユーザの切り替えを行ってください。
root@BootStrap [ ~ ]# su - MuNeNiCK
MuNeNiCK [ ~ ]$ ls
kubectl-linux-v1.24.10+vmware.1.gz  tanzu-cli-bundle-linux-amd64.tar.gz
MuNeNiCK [ ~ ]$
  • Dockerコマンドが使用できることを以下のコマンドで確認してください。
MuNeNiCK [ ~ ]$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
MuNeNiCK [ ~ ]$

SSH鍵ペアの作成

  • TKGデプロイ時に使用するSSH鍵ペアを以下のコマンドで作成してください。
MuNeNiCK [ ~ ]$ ssh-keygen -P '' -f $HOME/.ssh/id_rsa
  • 以下のコマンドで作成されたSSH鍵を確認してください。また、後のデプロイで使用するのでどこかにメモをしておいてください。
MuNeNiCK [ ~ ]$ cat $HOME/.ssh/id_rsa.pub

Tanzu CLIのインストール

  • Tanzu CLIのファイルを設置するためのディレクトリを以下のコマンドで作成してください。また、同時に環境変数の設定も行ってください。
MuNeNiCK [ ~ ]$ mkdir $HOME/bin
MuNeNiCK [ ~ ]$ echo 'PATH=$HOME/bin:$PATH' >> $HOME/.bash_profile
MuNeNiCK [ ~ ]$ source $HOME/.bash_profile
  • 以下のコマンドでTanzu CLIを解凍&インストールしてください。
MuNeNiCK [ ~ ]$ tar zxf tanzu-cli-bundle-linux-amd64.tar.gz
MuNeNiCK [ ~ ]$ install ./cli/core/v*/tanzu-core-linux_amd64 $HOME/bin/tanzu
  • 以下のコマンドでTanzu CLIが正常にインストールされた事を確認してください。
MuNeNiCK [ ~ ]$ tanzu version
version: v0.28.1
buildDate: 2023-03-07
sha: 0e6704777-dirty
  • 以下のコマンドでTanzu CLIの初期セットアップを行ってください。
MuNeNiCK [ ~ ]$ tanzu init
  • Tanzu CLIの補完機能使用する為に以下のコマンドを実行してください。
MuNeNiCK [ ~ ]$ echo 'source <(tanzu completion bash)' >> $HOME/.bash_profile

kubectlのインストール

  • 以下のコマンドでkubectlを解凍&インストールしてください。
MuNeNiCK [ ~ ]$ gunzip kubectl-linux-*.gz
MuNeNiCK [ ~ ]$ install kubectl-linux-* $HOME/bin/kubectl
  • 以下のコマンドでkubectlが正常にインストールされた事を確認してください。
MuNeNiCK [ ~ ]$ kubectl version --short --client
Flag --short has been deprecated, and will be removed in the future. The --short output will become the default.
Client Version: v1.24.10+vmware.1
Kustomize Version: v4.5.4
  • 以下のコマンドで補完機能を有効化してください。
MuNeNiCK [ ~ ]$ echo 'source <(kubectl completion bash)' >> $HOME/.bash_profile

以上で事前準備およびBootStrapサーバの構築は終了です。

次回

Tanzu Kubernetes Gridの構築としてManagementクラスタおよびWorkloadクラスタを構築します。

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

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