目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Edgeドキュメント / Day 2操作 / 管理クラスタ

24 管理クラスタ

このセクションでは、さまざまなDay 2操作を管理クラスタで実行する方法について説明します。

24.1 RKE2のアップグレード

注記
注記

確実な障害復旧のため、RKE2クラスタデータをバックアップすることをお勧めします。バックアップの実行方法については、こちらをご確認ください。rke2バイナリのデフォルトの場所は、/opt/rke2/binです。

次のようなRKE2インストールスクリプトを使用して、RKE2バージョンをアップグレードできます。

curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION=vX.Y.Z+rke2rN sh -

インストール後にrke2プロセスを再起動することを忘れないでください。

# For server nodes:
systemctl restart rke2-server

# For agent nodes:
systemctl restart rke2-agent
重要
重要

アップグレードに関する予期しない問題を避けるために、ノードのアップグレードは次の順序で行ってください。

  1. サーバノード - 一度に1ノードずつアップグレードする必要があります。

  2. エージェントノード - すべてのサーバノードのアップグレードが完了した後でアップグレードする必要があります。並行してアップグレード可能です。

詳細については、RKE2のアップグレードに関するドキュメントを参照してください。

24.2 OSのアップグレード

注記
注記

このセクションでは、システムをhttps://scc.suse.comに登録済みであることを想定しています。

SUSEでは、新しいSLE Microパッケージの更新を定期的にリリースしています。更新されたパッケージバージョンを取得するために、SLE Microではtransactional-upgradeを使用します。

transactional-upgradeでは、Linuxオペレーティングシステムをトランザクション方式で更新するためのアプリケーションとライブラリを用意しています。すなわち、更新をバックグラウンドで実行しながら、システムはそのまま動作を継続します。システムを再起動した後でのみ、更新が有効になります。詳細については、GitHubtransactional-updateのページを参照してください。

システム内のすべてのパッケージを更新するには、次のコマンドを実行します。. 

transactional-update

ノードを「再起動」すると、ノードはしばらくの間利用不可能になるため、マルチノードクラスタを実行している場合は、ノードに対してcordonおよびdrainを実行してから 再起動できます。

ノードに対してcordonを実行するには、次のコマンドを実行します。. 

kubectl cordon <node>

これにより、ノードはデフォルトのスケジューリングメカニズムから除外され、誤ってPodが割り当てられることがなくなります。

ノードに対してdrainを実行するには、次のコマンドを実行します。. 

kubectl drain <node>

これにより、ノード上のすべてのワークロードが他の利用可能なノードに転送されるようになります。

注記
注記

ノードで実行されているワークロードによっては、追加のフラグ(--delete-emptydir-data--ignore-daemonsetsなど)をコマンドに指定する必要がある場合があります。

ノードを再起動します。. 

sudo reboot

正常に再起動すると、ノードのパッケージが更新されます。残る手順は、uncordonコマンドを使用して、ノードをデフォルトのスケジューリングメカニズムに戻すことのみです。

ノードに対してCordonを解除します。. 

kubectl uncordon <node>

注記
注記

更新を元に戻す場合は、上記の手順と次のtransactional-updateコマンドを使用します。

transactional-update rollback last

24.3 Helmのアップグレード

注記
注記

このセクションでは、システムにhelmがインストール済みであることを想定しています。helmのインストール手順については、こちらをご確認ください。

このセクションでは、EIBでデプロイされたHelmチャート(24.3.1項 「EIBでデプロイされたHelmチャート」)とEIB以外でデプロイされたHelmチャート(24.3.2項 「EIB以外でデプロイされたHelmチャート」)の両方をアップグレードする方法について説明します。

24.3.1 EIBでデプロイされたHelmチャート

EIBは、そのイメージ定義ファイル(3.3項 「イメージ定義ファイルの作成」)で定義されたHelmチャートを、RKE2のマニフェストであるauto-deploy機能を使用してデプロイします。

このような方法でデプロイされたチャートをアップグレードするには、EIBが初期化ノードの/var/lib/rancher/rke2/server/manifestsディレクトリの下に作成する、チャートマニフェストファイルをアップグレードする必要があります。

注記
注記

確実な障害復旧のために、必ずチャートマニフェストファイルをバックアップするとともに、チャートで提供されている障害復旧に関連するドキュメントに従うことをお勧めします。

チャートマニフェストファイルをアップグレードするには、次の手順に従います。

  1. 初期化ノードを見つけます。

    • マルチノードクラスタの場合 - EIBのイメージ定義ファイルで、ノードの1つに対してinitializer: trueプロパティが指定されている必要があります。このプロパティが指定されていない場合、ノードリストで最初のサーバノードが初期化ノードになります。

    • シングルノードクラスタの場合 - 初期化ノードは現在実行中のノードです。

  2. 初期化ノードにSSHで接続します。

    ssh root@<node_ip>
  3. Helmチャートをプルします。

    • HelmチャートリポジトリでホストされているHelmチャートの場合:

      helm repo add <chart_repo_name> <chart_repo_urls>
      helm pull <chart_repo_name>/<chart_name>
      
      # Alternatively if you want to pull a specific verison
      helm pull <chart_repo_name>/<chart_name> --version=X.Y.Z
    • OCIベースのHelmチャートの場合:

      helm pull oci://<chart_oci_url>
      
      # Alternatively if you want to pull a specific verison
      helm pull oci://<chart_oci_url> --version=X.Y.Z
  4. プルした.tgzアーカイブをエンコードして、HelmChart CR設定に渡せるようにします。

    base64 -w 0 <chart_name>-X.Y.Z.tgz  > <chart_name>-X.Y.Z.txt
  5. 編集するチャートマニフェストファイルのコピーを作成します。

    cp /var/lib/rancher/rke2/server/manifests/<chart_name>.yaml ./<chart_name>.yaml
  6. bar.yamlファイルのchartContentversionの設定を変更します。

    sed -i -e "s|chartContent:.*|chartContent: $(<chart-name-X.Y.Z.txt)|" -e "s|version:.*|version: X.Y.Z|" <chart_name>.yaml
    注記
    注記

    チャートにアップグレードの追加の変更(新しいカスタムチャート値の追加など)を加える必要がある場合は、チャートマニフェストファイルを手動で編集する必要があります。

  7. 元のチャートマニフェストファイルを置き換えます。

    cp <chart_name>.yaml /var/lib/rancher/rke2/server/manifests/

上記のコマンドにより、Helmチャートのアップグレードがトリガされます。アップグレードは、helm-controllerによって処理されます。

Helmチャートのアップグレードを追跡するには、helm-controllerがチャートのアップグレード時に作成するPodのログを表示する必要があります。詳細については、例(24.3.1.1項 「例」)のセクションを参照してください。

24.3.1.1

注記
注記

このセクションの例では、初期化ノードをすでに特定して接続していることを想定しています。

このセクションでは、以下をアップグレードする方法の例を示します。

24.3.1.1.1 Rancherのアップグレード
注記
注記

確実な障害復旧のために、Rancherのバックアップを作成することをお勧めします。方法については、こちらでご確認ください。

この例では、Rancherを2.8.4バージョンにアップグレードする方法を説明します。

  1. Rancher Prime Helmリポジトリを追加します。

    helm repo add rancher-prime https://charts.rancher.com/server-charts/prime
  2. Rancher Primeの最新のHelmチャートバージョンをプルします。

    helm pull rancher-prime/rancher --version=2.8.4
  3. .tgzアーカイブをエンコードし、HelmChart CR設定に渡せるようにします。

    base64 -w 0 rancher-2.8.4.tgz  > rancher-2.8.4-encoded.txt
  4. 編集するrancher.yamlファイルのコピーを作成します。

    cp /var/lib/rancher/rke2/server/manifests/rancher.yaml ./rancher.yaml
  5. rancher.yamlファイルのchartContentversionの設定を変更します。

    sed -i -e "s|chartContent:.*|chartContent: $(<rancher-2.8.4-encoded.txt)|" -e "s|version:.*|version: 2.8.4|" rancher.yaml
    注記
    注記

    アップグレードの追加の変更( 新しいカスタムチャート値の追加など)を加える必要がある場合は、rancher.yamlファイルを手動で編集する必要があります。

  6. 元のrancher.yamlファイルを置き換えます。

    cp rancher.yaml /var/lib/rancher/rke2/server/manifests/

更新を確認するには、次の手順に従います。

  1. defaultネームスペースのPodを一覧にします。

    kubectl get pods -n default
    
    # Example output
    NAME                              READY   STATUS      RESTARTS   AGE
    helm-install-cert-manager-7v7nm   0/1     Completed   0          88m
    helm-install-rancher-p99k5        0/1     Completed   0          3m21s
  2. helm-install-rancher-* Podのログを確認します。

    kubectl logs <helm_install_rancher_pod> -n default
    
    # Example
    kubectl logs helm-install-rancher-p99k5 -n default
  3. RancherのPodが実行されていることを確認します。

    kubectl get pods -n cattle-system
    
    # Example output
    NAME                               READY   STATUS      RESTARTS   AGE
    helm-operation-mccvd               0/2     Completed   0          3m52s
    helm-operation-np8kn               0/2     Completed   0          106s
    helm-operation-q8lf7               0/2     Completed   0          2m53s
    rancher-648d4fbc6c-qxfpj           1/1     Running     0          5m27s
    rancher-648d4fbc6c-trdnf           1/1     Running     0          9m57s
    rancher-648d4fbc6c-wvhbf           1/1     Running     0          9m57s
    rancher-webhook-649dcc48b4-zqjs7   1/1     Running     0          100s
  4. Rancherのバージョンがアップグレードされていることを確認します。

    kubectl get settings.management.cattle.io server-version
    
    # Example output
    NAME             VALUE
    server-version   v2.8.4
24.3.1.1.2 Metal3のアップグレード

この例では、Metal30.7.1バージョンにアップグレードする方法を説明します。

  1. Metal3の最新のHelmチャートバージョンをプルします。

    helm pull oci://registry.suse.com/edge/metal3-chart --version 0.7.1
  2. .tgzアーカイブをエンコードし、HelmChart CR設定に渡せるようにします。

    base64 -w 0 metal3-chart-0.7.1.tgz  > metal3-chart-0.7.1-encoded.txt
  3. 編集するMetal3マニフェストファイルのコピーを作成します。

    cp /var/lib/rancher/rke2/server/manifests/metal3.yaml ./metal3.yaml
  4. Metal3マニフェストファイルのchartContentversionの設定を変更します。

    sed -i -e "s|chartContent:.*|chartContent: $(<metal3-chart-0.7.1-encoded.txt)|" -e "s|version:.*|version: 0.7.1|" metal3.yaml
    注記
    注記

    チャートにアップグレードの追加の変更( 新しいカスタムチャート値の追加など)を加える必要がある場合は、metal3.yamlファイルを手動で編集する必要があります。

  5. 元のMetal3マニフェストファイルを置き換えます。

    cp metal3.yaml /var/lib/rancher/rke2/server/manifests/

更新を確認するには、次の手順に従います。

  1. defaultネームスペースのPodを一覧にします。

    kubectl get pods -n default
    
    # Example output
    NAME                              READY   STATUS      RESTARTS   AGE
    helm-install-metal3-7p7bl         0/1     Completed   0          27s
  2. helm-install-rancher-* Podのログを確認します。

    kubectl logs <helm_install_rancher_pod> -n default
    
    # Example
    kubectl logs helm-install-metal3-7p7bl -n default
  3. Metal3のPodが実行されていることを確認します。

    kubectl get pods -n metal3-system
    
    # Example output
    NAME                                                     READY   STATUS    RESTARTS      AGE
    baremetal-operator-controller-manager-785f99c884-9z87p   2/2     Running   2 (25m ago)   36m
    metal3-metal3-ironic-96fb66cdd-lkss2                     4/4     Running   0             3m54s
    metal3-metal3-mariadb-55fd44b648-q6zhk                   1/1     Running   0             36m
  4. HelmChartのリソースバージョンがアップグレードされていることを確認します。

    kubectl get helmchart metal3 -n default
    
    # Example output
    NAME     JOB                   CHART   TARGETNAMESPACE   VERSION   REPO   HELMVERSION   BOOTSTRAP
    metal3   helm-install-metal3           metal3-system     0.7.1

24.3.2 EIB以外でデプロイされたHelmチャート

  1. 現在実行中のHelmチャートの.yamlファイルの値を取得し、必要に応じて値を変更します。

    helm get values <chart_name> -n <chart_namespace> -o yaml > <chart_name>-values.yaml
  2. Helmチャートを更新します。

    # For charts using a chart repository
    helm upgrade <chart_name> <chart_repo_name>/<chart_name> \
      --namespace <chart_namespace> \
      -f <chart_name>-values.yaml \
      --version=X.Y.Z
    
    # For OCI based charts
    helm upgrade <chart_name> oci://<oci_registry_url>/<chart_name> \
      --namespace <chart_namespace> \
      -f <chart_name>-values.yaml \
      --version=X.Y.Z
  3. チャートがアップグレードされていることを確認します。チャートによっては、さまざまなリソースを確認しなければならない場合があります。チャートのアップグレードの例については、例(24.3.2.1項 「例」)のセクションを参照してください。

24.3.2.1

このセクションでは、以下をアップグレードする方法の例を示します。

24.3.2.1.1 Rancher
注記
注記

確実な障害復旧のために、Rancherのバックアップを作成することをお勧めします。方法については、こちらでご確認ください。

この例では、Rancherを2.8.4バージョンにアップグレードする方法を説明します。

  1. Rancherの現在のリリースの値を取得し、それらの値をrancher-values.yamlファイルに出力します。

    helm get values rancher -n cattle-system -o yaml > rancher-values.yaml
  2. Helmチャートを更新します。

    helm upgrade rancher rancher-prime/rancher \
      --namespace cattle-system \
      -f rancher-values.yaml \
      --version=2.8.4
  3. Rancherのバージョンがアップグレードされていることを確認します。

    kubectl get settings.management.cattle.io server-version
    
    # Example output
    NAME             VALUE
    server-version   v2.8.4

RancherのHelmチャートのアップグレードに関する追加情報については、こちらをご確認ください。

24.3.2.1.2 Metal3

この例では、Metal30.7.1バージョンにアップグレードする方法を説明します。

  1. Rancherの現在のリリースの値を取得し、それらの値をrancher-values.yamlファイルに出力します。

    helm get values metal3 -n metal3-system -o yaml > metal3-values.yaml
  2. Helmチャートを更新します。

    helm upgrade metal3 oci://registry.suse.com/edge/metal3-chart \
      --namespace metal3-system \
      -f metal3-values.yaml \
      --version=0.7.1
  3. Metal3のPodが実行されていることを確認します。

    kubectl get pods -n metal3-system
    
    # Example output
    NAME                                                     READY   STATUS    RESTARTS   AGE
    baremetal-operator-controller-manager-785f99c884-fvsx4   2/2     Running   0          12m
    metal3-metal3-ironic-96fb66cdd-j9mgf                     4/4     Running   0          2m41s
    metal3-metal3-mariadb-55fd44b648-7fmvk                   1/1     Running   0          12m
  4. Metal3のHelmリリースバージョンが変更されていることを確認します。

    helm ls -n metal3-system
    
    # Expected output
    NAME  	NAMESPACE    	REVISION	UPDATED                                	STATUS  	CHART       	APP VERSION
    metal3	metal3-system	2       	2024-06-17 12:43:06.774802846 +0000 UTC	deployed	metal3-0.7.1	1.16.0