TKG クラスタをアップグレードする前に、自動スケーラを一時停止する必要があります。TKr バージョンのクラスタをアップグレードした後、TKr のマイナー バージョンと一致するように自動スケーラ パッケージのバージョンを更新する必要があります。

要件

このタスクでは、TKG クラスタにクラスタ自動スケーラがインストールされていることを前提としています。kubectl を使用したクラスタ自動スケーラのインストールを参照してください。

クラスタのアップグレード前︰自動スケーラの一時停止

自動スケーラがインストールされている TKG クラスタをアップグレードする前に、まず自動スケーラ パッケージを一時停止する必要があります。
  1. autoscaler-data-values.yaml シークレットで paused のブール値を true に設定して、クラスタの自動スケーラ パッケージを一時停止します。
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: autoscaler-data-values
      namespace: tkg-system
    stringData:
      values.yml: |
        ---
        arguments:
          ignoreDaemonsetsUtilization: true
          maxNodeProvisionTime: 15m
          maxNodesTotal: 0
          metricsPort: 8085
          scaleDownDelayAfterAdd: 10m
          scaleDownDelayAfterDelete: 10s
          scaleDownDelayAfterFailure: 3m
          scaleDownUnneededTime: 10m
        clusterConfig:
          clusterName: "gc1"
          clusterNamespace: "cluster"
        paused: true
  2. autoscaler-data-values シークレットに更新を適用します。
    kubectl apply -f autoscaler-data-values.yaml

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

自動スケーラが一時停止したら、クラスタの更新に進みます。
  1. TKG クラスタの Kubernetes バージョンをアップグレードします。

    TKR バージョンの編集による TKG クラスタの更新を参照してください。

クラスタのアップグレード後︰自動スケーラ パッケージのバージョンの更新

クラスタをアップグレードした後、TKr マイナー バージョンと一致するように自動スケーラ パッケージのバージョンを更新し、一時停止を無効にします。
  1. 対応する自動スケーラ バージョンを選択します。

    TKr と自動スケーラ パッケージのマイナー バージョンが一致している必要があります。たとえば、クラスタを TKr v1.28.8 にアップグレードした場合は、自動スケーラ v1.28.x パッケージを使用する必要があります。

  2. ターゲット自動スケーラのバージョンを設定し、paused を false にリセットして、自動スケーラのリソースを更新します。
    #autoscaler-package-upgrade.yaml
    ---
    apiVersion: packaging.carvel.dev/v1alpha1
    kind: PackageInstall
    metadata:
      name: autoscaler
      namespace: tkg-system
    spec:
      serviceAccountName: autoscaler-sa
      packageRef:
        refName: cluster-autoscaler.tanzu.vmware.com
        versionSelection:
          constraints: 1.28.0+vmware.1-tkg.1
      values:
      - secretRef:
          name: autoscaler-data-values
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: autoscaler-data-values
      namespace: tkg-system
    stringData:
      values.yml: |
        ---
        arguments:
          ignoreDaemonsetsUtilization: true
          maxNodeProvisionTime: 15m
          maxNodesTotal: 0
          metricsPort: 8085
          scaleDownDelayAfterAdd: 10m
          scaleDownDelayAfterDelete: 10s
          scaleDownDelayAfterFailure: 3m
          scaleDownUnneededTime: 10m
        clusterConfig:
          clusterName: "gc1"
          clusterNamespace: "cluster"
        paused: false
  3. 自動スケーラ パッケージに更新を適用します。
    kubectl apply -f autoscaler-package-upgrade.yaml
  4. 自動スケーラ ポッドが kube システムの名前空間内で実行されていることを確認します。
  5. クラスタの自動スケーラをテストします。

    クラスタ自動スケーラのテスト