このトピックでは、Tanzu Kubernetes Grid (TKG) ワークロード クラスタをアップグレードする方法について説明します。スタンドアローン管理クラスタを使用する TKG の場合は、まずワークロード クラスタを管理する管理クラスタをアップグレードする必要があります。
重要
- vSphere 8 でスーパーバイザーを使用して展開したワークロード クラスタをアップグレードする場合は、『Tanzu CLI を使用した TKG 2.4 ワークロード クラスタの作成と管理』の「スーパーバイザーによって展開されたクラスタのアップグレード(vSphere 8 のみ)」を参照してください。
- ローカルに保存された仮想マシン テンプレートを使用する Edge ワークロード クラスタをアップグレードするには、「ローカル仮想マシン テンプレートを使用した Edge クラスタのアップグレード」を参照してください。
- カスタム クラスタ マニフェストから作成したワークロード クラスタをアップグレードするには、「カスタム クラスタのアップグレード」を参照してください。
- スタンドアローン管理クラスタとワークロード クラスタは、クライアント証明書を使用してクライアントを認証します。これらの証明書は 1 年間有効です。更新するには、少なくとも年 1 回クラスタをアップグレードします。
重要Tanzu Kubernetes Grid v2.4.x は、AWS および Azure での既存の TKG ワークロード クラスタのアップグレードをサポートする TKG の最後のバージョンです。AWS および Azure で TKG ワークロード クラスタをアップグレードする機能は、Tanzu Kubernetes Grid v2.5 リリースで削除される予定です。
以降、VMware では、Tanzu Mission Control を使用してネイティブの AWS EKS クラスタと Azure AKS クラスタを作成することをお勧めします。ただし、AWS および Azure 上の既存の TKG ワークロード クラスタのアップグレードは、TKG v2.4.x までのすべての TKG リリースで引き続き完全にサポートされます。
詳細については、『VMware Tanzu Kubernetes Grid v2.4 Release Notes』の「AWS および Azure での TKG 管理クラスタとワークロード クラスタの廃止」を参照してください。
アップグレード プロセスでは、ワークロード クラスタのすべての制御プレーン ノードとワーカー ノード内の Kubernetes のバージョンがアップグレードされます。
使用可能な管理クラスタのインタラクティブなリストを表示し、アップグレードするクラスタを管理する管理クラスタを選択するには、tanzu context use
コマンドを実行します。
tanzu context use
ワークロード クラスタを一覧表示するには、次のコマンドを実行します。
tanzu cluster list --include-management-cluster -A
--include-management-cluster -A
オプションを指定した tanzu cluster list
コマンドにより、管理クラスタで実行されている Kubernetes のバージョンと、管理するすべてのクラスタが表示されます。この例では、管理クラスタはすでに v1.27.5 にアップグレードされていますが、ワークロード クラスタでは古いバージョンの Kubernetes が実行されています。
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR
k8s-1-25-10-cluster default running 1/1 1/1 v1.25-10+vmware.1 <none> dev v1.25.10---vmware.1-tkg.1
k8s-1-26-5-cluster default running 1/1 1/1 1.26.5+vmware.1 <none> dev v1.26.5---vmware.1-tkg.1
mgmt-cluster tkg-system running 1/1 1/1 v1.27.5+vmware.1 management dev v1.27.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.25.13---vmware.1-tiny.2-tkg.1 v1.25.13+vmware.1-tiny.2-tkg.1 True True
v1.25.13---vmware.2-tkg.1 v1.25.13+vmware.2-tkg.1 True True
v1.26.8---vmware.1-tiny.2-tkg.1 v1.26.8+vmware.1-tiny.2-tkg.1 True True
v1.26.8---vmware.2-tkg.1 v1.26.8+vmware.2-tkg.1 True True
v1.27.5---vmware.1-tiny.2-tkg.1 v1.27.5+vmware.1-tiny.2-tkg.1 True True
v1.27.5---vmware.1-tkg.1 v1.27.5+vmware.2-tkg.1 True True
古い tkr
バージョンを実行しているワークロード クラスタのアップグレード先となる新しい tkr
バージョンを検出するには、現在の tkr
バージョンを指定して tanzu kubernetes-release available-upgrades get
コマンドを実行します。
tanzu kubernetes-release available-upgrades get v1.26.5---vmware.2-tkg.1
このコマンドは、指定されたバージョンを実行しているクラスタのアップグレード先となる使用可能なすべての Kubernetes バージョンを一覧表示します。
また、tanzu cluster available-upgrades get
コマンドでクラスタ名を指定することで、特定のワークロード クラスタで使用可能な tkr
バージョンを検出することもできます。
tanzu cluster available-upgrades get k8s-1-26-5-cluster
このコマンドは、指定されたクラスタと互換性のあるすべての Kubernetes バージョンを一覧表示します。
tkr
バージョンをアップグレードするときに、マイナー バージョンをスキップすることはできません。たとえば、クラスタを v1.25.x から v1.27.x に直接アップグレードすることはできません。v1.25.x クラスタを v1.26.x にアップグレードしてから、クラスタを v1.27.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.27.5
です。例:
tanzu cluster upgrade k8s-1-26-5-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.27.5 を持つ Photon OVA テンプレートと Ubuntu OVA テンプレートの両方をアップロードした場合は、--os-name ubuntu
を指定して、Ubuntu で実行するようにワークロード クラスタをアップグレードします。
tanzu cluster upgrade CLUSTER-NAME --os-name ubuntu
tkr
のマイナー バージョンをスキップすることはできないため、デフォルト バージョンより 2 つ上のマイナー バージョンのクラスタをアップグレードしようとすると、アップグレード コマンドは失敗します。たとえば、v1.25.x から v1.27.x に直接アップグレードすることはできません。このリリースの Tanzu Kubernetes Grid のデフォルト以外の Kubernetes バージョンにクラスタをアップグレードするには、上記の tanzu kubernetes-release get
によって一覧表示されている、選択したバージョンの NAME
を使用して --tkr
オプションを指定します。たとえば、クラスタ k8s-1-24-11-cluster
を v1.25.13 から v1.26.8 にアップグレードするには、次を実行します。
tanzu cluster upgrade k8s-1-25-13-cluster --tkr v1.26.8---vmware.1-tkg.1
アップグレードが完了したら、tanzu cluster list
コマンドを実行して、ワークロード クラスタがアップグレードされていることを確認します。
tanzu cluster list --include-management-cluster -A
管理者の kubeconfig
を再生成します。
tanzu cluster kubeconfig get CLUSTER-NAME --admin
ここで、CLUSTER-NAME
はワークロード クラスタの名前です。
重要アップグレード後に
kubeconfig
を更新しない場合、有効期限が切れるとクラスタにアクセスできなくなります。
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.27.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.4 ワークロード クラスタの作成と管理』を参照してください。