ワークロード クラスタのアップグレード

このトピックでは、Tanzu Kubernetes Grid (TKG) ワークロード クラスタをアップグレードする方法について説明します。スタンドアローン管理クラスタを使用する TKG の場合は、まずワークロード クラスタを管理する管理クラスタをアップグレードする必要があります。

重要

前提条件

インフラストラクチャの前提条件

vSphere
vSphere で実行されているクラスタをアップグレードする場合は、お使いの Tanzu Kubernetes Grid のバージョンに対応したデフォルト以外のバージョンの Kubernetes にクラスタをアップグレードする前に、仮想マシン テンプレートとして適切な基本イメージ テンプレート OVA が vSphere で使用可能である必要があります。OVA ファイルを vSphere にインポートする方法については、「 クラスタのアップグレードの準備」の [vSphere] タブを参照してください。
AWS
Amazon Web Services (AWS) で実行されているクラスタをアップグレードする場合、サポート対象の Kubernetes バージョンを含む Amazon Linux 2 Amazon Machine Images (AMI) は、サポートされているすべての AWS リージョンのすべての AWS ユーザーに対して、公開されており使用可能です。Tanzu Kubernetes Grid は、アップグレード中に指定した Kubernetes バージョンに対して適切な AMI を自動的に使用します。
Azure
Azure で実行されているクラスタをアップグレードする場合は、「 クラスタのアップグレードの準備」の [Azure] タブの手順を完了していることを確認します。


手順

アップグレード プロセスでは、ワークロード クラスタのすべての制御プレーン ノードとワーカー ノード内の Kubernetes のバージョンがアップグレードされます。

  1. 使用可能な管理クラスタのインタラクティブなリストを表示し、アップグレードするクラスタを管理する管理クラスタを選択するには、tanzu context use コマンドを実行します。

    tanzu context use
    
  2. ワークロード クラスタを一覧表示するには、次のコマンドを実行します。

    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
    
  3. 管理クラスタによって使用可能になっている 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
    
  4. 古い 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 にアップグレードする必要があります。

  5. (Azure) クラスタが Azure で実行されている場合は、クラスタをアップグレードする前に AZURE_CLIENT_SECRET 環境変数を設定します。

    export AZURE_CLIENT_SECRET=YOUR-AZURE-CLIENT-SECRET
    
  6. (vSphere) ノード IP アドレス管理を使用するクラスタでは、アップグレード前に IP アドレス プールに少なくとも 1 つの未割り当ての IP アドレスが必要です。

    1. クラスタがノード 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
        }
      } 
      
    2. クラスタの IP アドレス プールに未使用のアドレスがあることを確認するには、プール内の合計数を次のコマンドによって出力される現在割り当てられている数と比較します。

      kubectl -n NAMESPACE get ipaddress | grep POOL-NAME | wc -l
      
  7. 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
    
  8. アップグレードが完了したら、tanzu cluster list コマンドを実行して、ワークロード クラスタがアップグレードされていることを確認します。

    tanzu cluster list --include-management-cluster -A
    
  9. 管理者の kubeconfig を再生成します。

    tanzu cluster kubeconfig get CLUSTER-NAME --admin
    

    ここで、CLUSTER-NAME はワークロード クラスタの名前です。

  10. LDAP または OIDC ID プロバイダを使用している場合は、kubectl を使用して、クラスタに対して認証できることを確認します。例:

    kubectl get pods -A --kubeconfig my-cluster-credentials
    
  11. ワークロード クラスタで実行されている、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 と互換性がありません。

ローカル仮想マシン テンプレートを使用した Edge クラスタのアップグレード

tanzu cluster upgrade コマンドを使用して、ローカル仮想マシン テンプレートを持つ Edge ワークロード クラスタの Kubernetes バージョンをアップグレードすることはできません。詳細については上記の「ローカル仮想マシン テンプレートの指定」を参照してください。

代わりに、Edge ワークロード クラスタの Kubernetes バージョンを次のようにアップグレードします。

  1. 新しい仮想マシン テンプレートをローカル vCenter Server にアップロードし、そのインベントリ パス(/dc0/vm/ubuntu-2004-kube-v1.26.5+vmware.1-tkg.1 など)を記録します。

  2. アップグレードする Cluster オブジェクトのマニフェストを編集します。

    kubectl edit cluster CLUSTER-NAME
    

    ここで、CLUSTER-NAME はクラスタの名前です。

  3. spec.topology で、以下を更新します。

    • 新しい Kubernetes バージョンを反映するように version を設定します。
    • クラスタ全体または個々のマシンの展開で更新するすべての vcenter.template の値を、新しいローカル テンプレートのインベントリ パスに設定します。
  4. 保存して終了し、新しい Cluster オブジェクト設定を適用します。

次の手順

引き続き Tanzu CLI を使用してクラスタを管理できるようになりました。詳細については、『Tanzu CLI を使用した TKG 2.3 ワークロード クラスタの作成と管理』を参照してください。

check-circle-line exclamation-circle-line close-line
Scroll to top icon