Tanzu Kubernetes Gridを2.1.1から2.2.0にアップグレードする方法

7 min read

はじめに

Tanzu Kubernetes Gridの2.1.1から2.2.0へアップグレードする方法を紹介します。本記事で紹介しているTKGはスタンドアロン版(TKGm)です。

環境

本記事は以下の記事で作成した環境を使用しています。

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

必要ファイルの準備

TKGをアップグレードする際にいくつかのファイルが必要になります。ここでは必要なファイルの準備を行います。

項目名 ファイル名
VMware Tanzu CLI for Linux tanzu-cli-bundle-linux-amd64.tar.gz
Kubernetes OVAs for VMware Tanzu Kubernetes Grid 2.2.0 任意のOVAイメージをダウンロードしてください。
kubectl cli v1.25.7 for Linux kubectl-linux-v1.25.7+vmware.2.gz

vCenter上での事前準備

TKGをアップグレードする前にvCenter上にOVAをデプロイする必要があります。

TKRテンプレートの作成

OVAのデプロイ

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

  • ローカルファイルを選択し、先程ダウンロードしたOVAファイルを選択してください。

  • 名前とフォルダの選択では、仮想マシン名は変更しないでください。

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

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

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

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

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

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

テンプレートに変換

  • デプロイしたOVAイメージを右クリックし、「テンプレート」→「テンプレートに変換」をクリックしてください。

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

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

Tanzu CLIとKubectlのアップグレード

TKGのアップグレードを行うためにまずTanzu CLIとKubectlをアップグレードする必要があります。

事前準備

クラスタ管理マシンまたはBootstrapマシンなどTanzu CLIおよびKubectlを実行している環境へアクセスし、準備する必要があります。

  • クラスタ管理マシンまたはBootstrapマシンにSSHなどでアクセスしてください。

  • FTPやSCPなどを用いて以下の2つのファイルをユーザのホームディレクトリ(例: /home/MuNeNiCK)に送信してください。

    • tanzu-cli-bundle-linux-amd64.tar.gz
    • kubectl-linux-v1.25.7+vmware.2.gz
  • 以下のコマンドを実行してファイルに実行権限を付与してください。

root@BootStrap [ /home/MuNeNiCK ]# chmod 777 /home/MuNeNiCK/tanzu-cli-bundle-linux-amd64.tar.gz
root@BootStrap [ /home/MuNeNiCK ]# chmod 777 kubectl-linux-v1.25.7+vmware.2.gz
  • 以下のコマンドを実行して、互換性ファイルを移動させてください。
root@BootStrap [ /home/MuNeNiCK ]$ mv $HOME/.config/tanzu/tkg/compatibility/tkg-compatibility.yaml $HOME/.config/tanzu/tkg/compatibility/tkg-compatibility.yaml.bak
  • 以下のコマンドを実行してクラスタ管理を行っているユーザに変更してください。※本記事では「MuNeNiCK」ユーザとなっています。
root@BootStrap [ /home/MuNeNiCK ]# su - MuNeNiCK

Tanzu CLIのアップグレード

  • 以下のコマンドでTanzu CLIを解凍してください。
MuNeNiCK [ ~ ]$ tar zxf tanzu-cli-bundle-linux-amd64.tar.gz
  • 以下のコマンドを実行してTanzu CLIの最新バージョンを確認してください。
MuNeNiCK [ ~ ]$ ls cli/core/
v0.28.1  v0.29.0
  • 以下のコマンドを実行してTanzu CLIをアップグレードしてください。※バージョンは自身の環境に書き直してください。
MuNeNiCK [ ~ ]$ install ./cli/core/v0.29.0/tanzu-core-linux_amd64 $HOME/bin/tanzu
  • 以下のコマンドを実行して、Tanzu CLIのバージョンが更新されていることを確認してください。
MuNeNiCK [ ~ ]$ tanzu version
version: v0.29.0
buildDate: 2023-05-02
sha: b25b198b0-dirty

kubectlのアップグレード

  • 以下のコマンドでkubectlを解凍&インストールしてください。
MuNeNiCK [ ~ ]$ gunzip kubectl-linux-v1.25.7+vmware.2.gz
MuNeNiCK [ ~ ]$ install kubectl-linux-v1.25.7+vmware.2 $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.25.7+vmware.2
Kustomize Version: v4.5.7

マネジメントクラスタのアップグレード

  • 以下のコマンドを実行し、アップグレードしたいマネジメントクラスタを選択してください。
MuNeNiCK [ ~ ]$ tanzu login
? Select a server tkg21mc01           ()
  successfully logged in to management cluster using the kubeconfig tkg21mc01
  Checking for required plugins...
  All required plugins are already installed and up-to-date
  • 以下のコマンドを実行してクラスタ管理情報を取得してください。
MuNeNiCK [ ~ ]$ tanzu mc kubeconfig get --admin
Downloading TKG compatibility file from 'projects.registry.vmware.com/tkg/tkg-compatibility'
Credentials of cluster 'tkg21mc01' have been saved
You can now access the cluster by running 'kubectl config use-context tkg21mc01-admin@tkg21mc01'
  • 一個前のコマンドの実行結果にあるkubectlコマンドを実行してください。
MuNeNiCK [ ~ ]$ kubectl config use-context tkg21mc01-admin@tkg21mc01
Switched to context "tkg21mc01-admin@tkg21mc01".
  • 以下のコマンドを実行し、マネジメントクラスタのアップグレードを行ってください。ただし、「–os-name」オプションでデプロイするOSを指定することがっできます。デプロイしたOVAのOSに合わせて指定してください。
MuNeNiCK [ ~ ]$ tanzu mc upgrade --os-name photon
Upgrading management cluster 'tkg21mc01' to TKG version 'v2.2.0' with Kubernetes version 'v1.25.7+vmware.2'. Are you sure? [y/N]: y

アップグレード時に最新バージョンが表示さない場合

  • 最新バージョンが表示されない場合、以下のファイルを書き換えることで強制的に最新バージョンを指定することができます。(公式のやり方ではありません。)
MuNeNiCK [ ~ ]$ vi $HOME/.config/tanzu/tkg/compatibility/tkg-compatibility.yaml
  • vimが開いたら、以下の項目のtagを「v2.2.0」に書き換えます。
- version: v0.28.1
  supportedTKGBomVersions:
  - imagePath: tkg-bom
    tag: v2.2.0
  • 以下のコマンドを実行し、最新バージョンのメタデータを取得します。
MuNeNiCK [ ~ ]$ tanzu mc kubeconfig get --admin
Downloading the TKG Bill of Materials (BOM) file from 'projects.registry.vmware.com/tkg/tkg-bom:v2.2.0'
Downloading the TKr Bill of Materials (BOM) file from 'projects.registry.vmware.com/tkg/tkr-bom:v1.25.7_vmware.2-tkg.1'
the old providers folder /home/MuNeNiCK/.config/tanzu/tkg/providers is backed up to /home/MuNeNiCK/.config/tanzu/tkg/providers-20230606160128-23n1ez3p
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 [ ~ ]$ tanzu mc upgrade --os-name photon
Upgrading management cluster 'tkg21mc01' to TKG version 'v2.2.0' with Kubernetes version 'v1.25.7+vmware.2'. Are you sure? [y/N]: