VMware Tanzu Kubernetes Grid(TKG)で、vSphere 環境に Kubernetes クラスタを作成してみます。今回は、Kubernetes クラスタ作成の起点になる Bootstrap マシンを用意します。
前回はこちら。
ドキュメントでは、下記のあたりです。
今回の内容です。
使用するソフトウェア
今回の Bootstrap マシンの OS は、Photon OS 4.0(Linux)を利用します。OVA ファイルは、下記からダウンロードしたものをデプロイしています。
- OVA with virtual hardware v13 (UEFI Secure Boot)
https://packages.vmware.com/photon/4.0/Rev2/ova/photon-ova_uefi-4.0-c001795b80.ova
TKG は、バージョン 1.6.1 を利用します。ソフトウェアは Customer Connect(下記)からダウンロードしておきます。
今回利用するソフトウェアは下記です。
- kubectl(kubectl-linux-v1.23.10+vmware.1.gz)
- tanzu CLI(tanzu-cli-bundle-linux-amd64.tar.gz)
- Kubernetes ノードの OVA ファイル(photon-3-kube-v1.23.10+vmware.1-tkg.1-efe12079f22627aa1246398eba077476.ova) ★これは今後の手順で使用する。
1. Bootstrap マシンの構築
ここでは、下記の部分を構築します。
1-1. OS 環境の準備
Photon OS の OVA ファイルをデプロイしておきます。仮想マシンのリソース割り当ては、下記のようにしてあります。
- vCPU: 2
- メモリ: 8GB(要件は 6GB)
仮想マシンをパワーオンして、root / changeme でログイン、初回パスワード変更をしておきます。
ホスト名の設定と RPM パッケージ更新を実施して、OS を再起動しておきます。
root@photon-machine [ ~ ]# hostnamectl set-hostname lab-tkg-02 root@photon-machine [ ~ ]# tdnf update -y root@photon-machine [ ~ ]# reboot
tdnf コマンドで、tar と diffutils の RPM をインストールしておきます。diffutils は TKG としては不要ですが、今回の手順ではファイル比較で利用したいのでインストールしておきます。
root@lab-tkg-02 [ ~ ]# tdnf install -y tar diffutils
あとで外部から Web UI にアクセスするので、今回は iptables を停止してしまいます。
root@lab-tkg-02 [ ~ ]# systemctl stop iptables root@lab-tkg-02 [ ~ ]# systemctl disable iptables
1-2. Docker Engine の準備
Photon OS の OVA には、デフォルトで Docker がインストールされています。
root@lab-tkg-02 [ ~ ]# rpm -q docker docker-20.10.14-10.ph4.x86_64 root@lab-tkg-02 [ ~ ]# docker -v Docker version 20.10.14, build a224086
docker サービスを有効化して、起動しておきます。
root@lab-tkg-02 [ ~ ]# systemctl enable docker root@lab-tkg-02 [ ~ ]# systemctl start docker
1-3. OS ユーザの準備
tanzu CLI を root 以外のユーザで実行するため、demo-01 ユーザを作成します。
root@lab-tkg-02 [ ~ ]# useradd -m demo-01 root@lab-tkg-02 [ ~ ]# passwd demo-01
demo-01 ユーザを、docker グループに追加しておきます。
root@lab-tkg-02 [ ~ ]# usermod -aG docker demo-01
su で、作成したユーザに切り替えます。
root@lab-tkg-02 [ ~ ]# su - demo-01 demo-01 [ ~ ]$ id uid=1000(demo-01) gid=100(users) groups=100(users),999(docker)
docker コマンドが実行できることを確認しておきます。
demo-01 [ ~ ]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
SSH 鍵ペアを作成します。
demo-01 [ ~ ]$ ssh-keygen -P '' -f $HOME/.ssh/id_rsa demo-01 [ ~ ]$ ls $HOME/.ssh/ id_rsa id_rsa.pub
生成された公開鍵を確認しておきます。
demo-01 [ ~ ]$ cat $HOME/.ssh/id_rsa.pub ssh-rsa AAAAB3Nza~ demo-01@lab-tkg-02
CLI を配置するディレクトリ($HOME/bin)を作成して、PATH 環境変数に追加設定しておきます。
demo-01 [ ~ ]$ mkdir $HOME/bin demo-01 [ ~ ]$ echo 'PATH=$HOME/bin:$PATH' >> $HOME/.bash_profile demo-01 [ ~ ]$ source $HOME/.bash_profile
1-4. tanzu CLI のインストール
ここでは、tanzu コマンドとプラグインをインストールします。tar.gz アーカイブ ファイルには Carvel 関連ツールも同梱されていますが、ここではインストールをスキップします。
Customer Connect からダウンロードした kubectl を、SFTP などで転送しておきます。下記のように、kubectl と tanz-cli を転送しておきます。
demo-01 [ ~ ]$ ls -lh total 306M drwxr-x--- 2 demo-01 users 4.0K Jan 8 15:33 bin -rw-r----- 1 demo-01 users 13M Jan 7 18:18 kubectl-linux-v1.23.10+vmware.1.gz -rw-r----- 1 demo-01 users 293M Jan 7 18:17 tanzu-cli-bundle-linux-amd64.tar.gz
配置しておいた tanzu CLI を解凍します。
demo-01 [ ~ ]$ tar zxf tanzu-cli-bundle-linux-amd64.tar.gz
$HOME/bin にインストールします。
demo-01 [ ~ ]$ ls ./cli/core/v*/tanzu-core-linux_amd64 cli/core/v0.25.4/tanzu-core-linux_amd64 demo-01 [ ~ ]$ install ./cli/core/v*/tanzu-core-linux_amd64 $HOME/bin/tanzu
バージョンを確認します。TKG 1.6.1 の Tanzu Framework バージョンは v0.25.4 です。
demo-01 [ ~ ]$ tanzu version version: v0.25.4 buildDate: 2022-12-22 sha: 8204f5b0d-dirty
tanzu CLI を初期化します。
demo-01 [ ~ ]$ tanzu init Checking for required plugins... Installing plugin 'login:v0.25.4' Installing plugin 'management-cluster:v0.25.4' Installing plugin 'package:v0.25.4' Installing plugin 'pinniped-auth:v0.25.4' Installing plugin 'secret:v0.25.4' Installing plugin 'telemetry:v0.25.4' Successfully installed all required plugins ? successfully initialized CLI
インストールされたプラグインを確認しておきます。
demo-01 [ ~ ]$ tanzu plugin list NAME DESCRIPTION SCOPE DISCOVERY VERSION STATUS login Login to the platform Standalone default v0.25.4 installed management-cluster Kubernetes management-cluster operations Standalone default v0.25.4 installed package Tanzu package management Standalone default v0.25.4 installed pinniped-auth Pinniped authentication operations (usually not directly invoked) Standalone default v0.25.4 installed secret Tanzu secret management Standalone default v0.25.4 installed telemetry Configure cluster-wide telemetry settings Standalone default v0.25.4 installed
tanzu CLI の Bash 補完機能を有効化しておきます。これは、再ログインした際に反映されます。
demo-01 [ ~ ]$ echo 'source <(tanzu completion bash)' >> $HOME/.bash_profile
1-5. kubectl のインストール
配置しておいた kubectl のファイルを解凍します。
demo-01 [ ~ ]$ gunzip kubectl-linux-v1.23.10+vmware.1.gz demo-01 [ ~ ]$ ls -l total 344860 drwxr-x--- 2 demo-01 users 4096 Jan 8 15:33 bin -rw-r----- 1 demo-01 users 46583808 Jan 7 18:18 kubectl-linux-v1.23.10+vmware.1 -rw-r----- 1 demo-01 users 306544579 Jan 7 18:17 tanzu-cli-bundle-linux-amd64.tar.gz
kubectl を、$HOME/bin ディレクトリにインストールします。
demo-01 [ ~ ]$ install kubectl-linux-v1.23.10+vmware.1 $HOME/bin/kubectl
インストール済みの元ファイルを削除しておきます。
demo-01 [ ~ ]$ rm -rf kubectl-linux-*
kubectl が実行できるようになったことを確認しておきます。
demo-01 [ ~ ]$ kubectl version --short --client Client Version: v1.23.10+vmware.1
kubectl の Bash 補完機能を有効化しておきます。これは、再ログインした際に反映されます。
demo-01 [ ~ ]$ echo 'source <(kubectl completion bash)' >> $HOME/.bash_profile
つづく。