このトピックでは、Tanzu Kubernetes Grid (TKG) ワークロード クラスタをアップグレードする方法について説明します。スタンドアローン管理クラスタを使用する TKG の場合は、まずワークロード クラスタを管理する管理クラスタをアップグレードする必要があります。
重要
- vSphere 8 でスーパーバイザーを使用して展開したワークロード クラスタをアップグレードする場合は、『Tanzu CLI を使用した TKG 2.3 ワークロード クラスタの作成と管理』の「スーパーバイザーによって展開されたクラスタのアップグレード(vSphere 8 のみ)」を参照してください。
- ローカルに保存された仮想マシン テンプレートを使用する Edge ワークロード クラスタをアップグレードするには、「ローカル仮想マシン テンプレートを使用した Edge クラスタのアップグレード」を参照してください。
- カスタム クラスタ マニフェストから作成したワークロード クラスタをアップグレードするには、「カスタム クラスタのアップグレード」を参照してください。
- スタンドアローン管理クラスタとワークロード クラスタは、クライアント証明書を使用してクライアントを認証します。これらの証明書は 1 年間有効です。更新するには、少なくとも年 1 回クラスタをアップグレードします。
アップグレード プロセスでは、ワークロード クラスタのすべての制御プレーン ノードとワーカー ノード内の Kubernetes のバージョンがアップグレードされます。
使用可能な管理クラスタのインタラクティブなリストを表示し、アップグレードするクラスタを管理する管理クラスタを選択するには、tanzu context use コマンドを実行します。
tanzu context use
ワークロード クラスタを一覧表示するには、次のコマンドを実行します。
tanzu cluster list --include-management-cluster -A
--include-management-cluster -A オプションを指定した tanzu cluster list コマンドにより、管理クラスタで実行されている Kubernetes のバージョンと、管理するすべてのクラスタが表示されます。この例では、管理クラスタはすでに v1.26.5 にアップグレードされているのに、ワークロード クラスタでは古いバージョンの Kubernetes が実行されています。
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR
k8s-1-24-11-cluster default running 1/1 1/1 v1.24.11+vmware.1 <none> dev v1.24.11---vmware.1-tkg.1
k8s-1-25-7-cluster default running 1/1 1/1 1.25.7+vmware.1 <none> dev 1.25.7---vmware.1-tkg.1
mgmt-cluster tkg-system running 1/1 1/1 v1.26.5+vmware.1 management dev v1.26.5---vmware.1-tkg.1
管理クラスタによって使用可能になっている Kubernetes のバージョンを確認するには、tanzu kubernetes-release get コマンドを実行します。
tanzu kubernetes-release get
出力には、クラスタの展開に使用できる Kubernetes のすべてのバージョンが一覧表示されます。また、次の注意事項があります。
COMPATIBLE:現在の管理クラスタは、この Tanzu Kubernetes リリース (tkr) でワークロード クラスタを展開できます。UPDATES AVAILABLE:この tkr は、Kubernetes バージョン ラインの最新のものではありません。この tkr バージョンを実行しているワークロード クラスタは、新しいバージョンにアップグレードできます。例:
NAME VERSION COMPATIBLE ACTIVE UPDATES AVAILABLE
v1.24.14---vmware.1-tiny.2-tkg.1 v1.24.14+vmware.1-tiny.2-tkg.1 True True
v1.24.14---vmware.2-tkg.1 v1.24.14+vmware.2-tkg.1 True True
v1.25.10---vmware.1-tiny.2-tkg.1 v1.25.10+vmware.1-tiny.2-tkg.1 True True
v1.25.10---vmware.2-tkg.1 v1.25.10+vmware.2-tkg.1 True True
v1.26.5---vmware.1-tiny.2-tkg.1 v1.26.5+vmware.1-tiny.2-tkg.1 True True
v1.26.5---vmware.2-tkg.1 v1.26.5+vmware.2-tkg.1 True True
古い tkr バージョンを実行しているワークロード クラスタのアップグレード先となる新しい tkr バージョンを検出するには、現在の tkrtkrtkr バージョンを指定して tanzu kubernetes-release available-upgrades gettkr コマンドを実行します。tkr
tanzu kubernetes-release available-upgrades get v1.25.7---vmware.2-tkg.1
このコマンドは、指定されたバージョンを実行しているクラスタのアップグレード先となる使用可能なすべての Kubernetes バージョンを一覧表示します。
また、tanzu cluster available-upgrades get コマンドでクラスタ名を指定することで、特定のワークロード クラスタで使用可能な tkr バージョンを検出することもできます。
tanzu cluster available-upgrades get k8s-1-24-11-cluster
このコマンドは、指定されたクラスタと互換性のあるすべての Kubernetes バージョンを一覧表示します。
tkr バージョンをアップグレードするときに、マイナー バージョンをスキップすることはできません。たとえば、クラスタを v1.24.x から v1.26.x に直接アップグレードすることはできません。クラスタを v1.26.x にアップグレードする前に、v1.24.x クラスタを v1.25.x にアップグレードする必要があります。
(Azure) クラスタが Azure で実行されている場合は、クラスタをアップグレードする前に AZURE_CLIENT_SECRET 環境変数を設定します。
export AZURE_CLIENT_SECRET=YOUR-AZURE-CLIENT-SECRET
(vSphere) ノード IP アドレス管理を使用するクラスタでは、アップグレード前に IP アドレス プールに少なくとも 1 つの未割り当ての IP アドレスが必要です。
クラスタがノード IP アドレス管理を使用しているかどうかを確認するには、クラスタ オブジェクトの spec.topology.variables network 設定で addressesFromPools を探します。
kubectl -n NAMESPACE get cluster CLUSTER-NAME -o json | jq '.spec.topology.variables[] | select(.name=="network")'
ここで、CLUSTER-NAME および NAMESPACE は、ワークロード クラスタの名前と管理クラスタの名前空間です。例:
kubectl -n default get cluster my-work-cluster -o json | jq '.spec.topology.variables[] | select(.name=="network")'
{
"name": "network",
"value": {
"addressesFromPools": [
{
"apiGroup": "ipam.cluster.x-k8s.io",
"kind": "InClusterIPPool",
"name": "mgmt-cluster-nimbus"
}
],
"ipv6Primary": false
}
}
クラスタの IP アドレス プールに未使用のアドレスがあることを確認するには、プール内の合計数を次のコマンドによって出力される現在割り当てられている数と比較します。
kubectl -n NAMESPACE get ipaddress | grep POOL-NAME | wc -l
tanzu cluster upgrade CLUSTER-NAME コマンドを実行し、y と入力して確認します。確認手順をスキップするには、--yes オプションを指定します。
このリリースの Tanzu Kubernetes Grid のデフォルトの Kubernetes バージョンにクラスタをアップグレードするには、オプションの設定なしで tanzu cluster upgrade コマンドを実行します。このリリースでは、デフォルトのバージョンは v1.26.5 です。例:
tanzu cluster upgrade k8s-1-25-7-cluster
クラスタが default 名前空間で実行されていない場合は、--namespace オプションを指定します。
tanzu cluster upgrade CLUSTER-NAME --namespace NAMESPACE-NAME
アップグレードが完了する前にタイムアウトした場合は、デフォルトの 30 分よりも大きい値を指定した --timeout オプションを指定して、tanzu cluster upgrade を再度実行します。
tanzu cluster upgrade CLUSTER-NAME --timeout 45m0s
重要Azure での操作は、他のプラットフォームでの場合よりも時間がかかる場合があります。Azure 上のクラスタをアップグレードする場合は、エラーを回避するために
--timeoutオプションを定期的に設定してください。
IaaS アカウント内の複数のベース仮想マシン イメージに、アップグレード対象と同じバージョンの Kubernetes がある場合は、--os-name オプションを使用して、必要な OS を指定します。詳細については、「クラスタをアップグレードする際の OS の選択」を参照してください。
たとえば、vSphere で Kubernetes v1.26.5 を持つ Photon OVA テンプレートと Ubuntu OVA テンプレートの両方をアップロードした場合は、--os-name ubuntu を指定して、Ubuntu 仮想マシンで実行するようにワークロード クラスタをアップグレードします。
tanzu cluster upgrade CLUSTER-NAME --os-name ubuntu
tkr のマイナー バージョンをスキップすることはできないため、デフォルト バージョンより 2 つ上のマイナー バージョンのクラスタをアップグレードしようとすると、アップグレード コマンドは失敗します。たとえば、v1.24.x から v1.26.x に直接アップグレードすることはできません。このリリースの Tanzu Kubernetes Grid のデフォルト以外の Kubernetes バージョンにクラスタをアップグレードするには、上記の tanzu kubernetes-release get によって一覧表示されている、選択したバージョンの NAME を使用して --tkr オプションを指定します。たとえば、クラスタ k8s-1-24-11-cluster を v1.24.11 から v1.25.10 にアップグレードするには、次を実行します。
tanzu cluster upgrade k8s-1-24-11-cluster --tkr v1.25.10---vmware.1-tkg.1
アップグレードが完了したら、tanzu cluster list コマンドを実行して、ワークロード クラスタがアップグレードされていることを確認します。
tanzu cluster list --include-management-cluster -A
管理者の kubeconfig を再生成します。
tanzu cluster kubeconfig get CLUSTER-NAME --admin
ここで、CLUSTER-NAME はワークロード クラスタの名前です。
LDAP または OIDC ID プロバイダを使用している場合は、kubectl を使用して、クラスタに対して認証できることを確認します。例:
kubectl get pods -A --kubeconfig my-cluster-credentials
ワークロード クラスタで実行されている、Contour、Fluent Bit、Prometheus などの CLI で管理されるパッケージをアップグレードします。CLI で管理されるパッケージのアップグレードの詳細については、「Update a Package」を参照してください。
重要ワークロード クラスタに Prometheus がインストールされていて、ワークロード クラスタを Kubernetes v1.25 にアップグレードする場合は、Prometheus をバージョン
2.37.0+vmware.3-tkg.1以降にアップグレードする必要があります。Prometheus パッケージの以前のバージョン(バージョン2.37.0+vmware.1-tkg.1など)は、Kubernetes 1.25 と互換性がありません。
tanzu cluster upgrade コマンドを使用して、ローカル仮想マシン テンプレートを持つ Edge ワークロード クラスタの Kubernetes バージョンをアップグレードすることはできません。詳細については上記の「ローカル仮想マシン テンプレートの指定」を参照してください。
代わりに、Edge ワークロード クラスタの Kubernetes バージョンを次のようにアップグレードします。
新しい仮想マシン テンプレートをローカル vCenter Server にアップロードし、そのインベントリ パス(/dc0/vm/ubuntu-2004-kube-v1.26.5+vmware.1-tkg.1 など)を記録します。
アップグレードする Cluster オブジェクトのマニフェストを編集します。
kubectl edit cluster CLUSTER-NAME
ここで、CLUSTER-NAME はクラスタの名前です。
spec.topology で、以下を更新します。
version を設定します。vcenter.template の値を、新しいローカル テンプレートのインベントリ パスに設定します。保存して終了し、新しい Cluster オブジェクト設定を適用します。
引き続き Tanzu CLI を使用してクラスタを管理できるようになりました。詳細については、『Tanzu CLI を使用した TKG 2.3 ワークロード クラスタの作成と管理』を参照してください。