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ノードずつアップグレードする必要があります。
エージェントノード - すべてのサーバノードのアップグレードが完了した後でアップグレードする必要があります。並行してアップグレード可能です。
詳細については、RKE2のアップグレードに関するドキュメントを参照してください。
24.2 OSのアップグレード #
このセクションでは、システムをhttps://scc.suse.comに登録済みであることを想定しています。
SUSEでは、新しいSLE
Micro
パッケージの更新を定期的にリリースしています。更新されたパッケージバージョンを取得するために、SLE
Microではtransactional-upgrade
を使用します。
transactional-upgrade
では、Linuxオペレーティングシステムをトランザクション方式で更新するためのアプリケーションとライブラリを用意しています。すなわち、更新をバックグラウンドで実行しながら、システムはそのまま動作を継続します。システムを再起動した後でのみ、更新が有効になります。詳細については、GitHubのtransactional-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
ディレクトリの下に作成する、チャートマニフェストファイルをアップグレードする必要があります。
確実な障害復旧のために、必ずチャートマニフェストファイルをバックアップするとともに、チャートで提供されている障害復旧に関連するドキュメントに従うことをお勧めします。
チャートマニフェストファイルをアップグレードするには、次の手順に従います。
初期化
ノードを見つけます。マルチノードクラスタ
の場合 - EIBのイメージ定義ファイルで、ノードの1つに対してinitializer: true
プロパティが指定されている必要があります。このプロパティが指定されていない場合、ノードリストで最初のサーバノードが初期化ノードになります。シングルノードクラスタ
の場合 - 初期化ノードは現在実行中のノードです。
初期化
ノードにSSHで接続します。ssh root@<node_ip>
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
プルした
.tgz
アーカイブをエンコードして、HelmChart
CR設定に渡せるようにします。base64 -w 0 <chart_name>-X.Y.Z.tgz > <chart_name>-X.Y.Z.txt
編集するチャートマニフェストファイルのコピーを作成します。
cp /var/lib/rancher/rke2/server/manifests/<chart_name>.yaml ./<chart_name>.yaml
bar.yaml
ファイルのchartContent
とversion
の設定を変更します。sed -i -e "s|chartContent:.*|chartContent: $(<chart-name-X.Y.Z.txt)|" -e "s|version:.*|version: X.Y.Z|" <chart_name>.yaml
注記チャートにアップグレードの追加の変更(新しいカスタムチャート値の追加など)を加える必要がある場合は、チャートマニフェストファイルを手動で編集する必要があります。
元のチャートマニフェストファイルを置き換えます。
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 例 #
このセクションの例では、初期化
ノードをすでに特定して接続していることを想定しています。
このセクションでは、以下をアップグレードする方法の例を示します。
Rancher (24.3.1.1.1項 「Rancherのアップグレード」) Helmチャート
Metal3 (24.3.1.1.2項 「Metal3のアップグレード」) Helmチャート
24.3.1.1.1 Rancherのアップグレード #
確実な障害復旧のために、Rancherのバックアップを作成することをお勧めします。方法については、こちらでご確認ください。
この例では、Rancherを2.8.4
バージョンにアップグレードする方法を説明します。
Rancher Prime
Helmリポジトリを追加します。helm repo add rancher-prime https://charts.rancher.com/server-charts/prime
Rancher Prime
の最新のHelmチャートバージョンをプルします。helm pull rancher-prime/rancher --version=2.8.4
.tgz
アーカイブをエンコードし、HelmChart
CR設定に渡せるようにします。base64 -w 0 rancher-2.8.4.tgz > rancher-2.8.4-encoded.txt
編集する
rancher.yaml
ファイルのコピーを作成します。cp /var/lib/rancher/rke2/server/manifests/rancher.yaml ./rancher.yaml
rancher.yaml
ファイルのchartContent
とversion
の設定を変更します。sed -i -e "s|chartContent:.*|chartContent: $(<rancher-2.8.4-encoded.txt)|" -e "s|version:.*|version: 2.8.4|" rancher.yaml
注記アップグレードの追加の変更( 新しいカスタムチャート値の追加など)を加える必要がある場合は、
rancher.yaml
ファイルを手動で編集する必要があります。元の
rancher.yaml
ファイルを置き換えます。cp rancher.yaml /var/lib/rancher/rke2/server/manifests/
更新を確認するには、次の手順に従います。
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
helm-install-rancher-*
Podのログを確認します。kubectl logs <helm_install_rancher_pod> -n default # Example kubectl logs helm-install-rancher-p99k5 -n default
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
Rancher
のバージョンがアップグレードされていることを確認します。kubectl get settings.management.cattle.io server-version # Example output NAME VALUE server-version v2.8.4
24.3.1.1.2 Metal3のアップグレード #
この例では、Metal3を0.7.1
バージョンにアップグレードする方法を説明します。
Metal3
の最新のHelmチャートバージョンをプルします。helm pull oci://registry.suse.com/edge/metal3-chart --version 0.7.1
.tgz
アーカイブをエンコードし、HelmChart
CR設定に渡せるようにします。base64 -w 0 metal3-chart-0.7.1.tgz > metal3-chart-0.7.1-encoded.txt
編集する
Metal3
マニフェストファイルのコピーを作成します。cp /var/lib/rancher/rke2/server/manifests/metal3.yaml ./metal3.yaml
Metal3
マニフェストファイルのchartContent
とversion
の設定を変更します。sed -i -e "s|chartContent:.*|chartContent: $(<metal3-chart-0.7.1-encoded.txt)|" -e "s|version:.*|version: 0.7.1|" metal3.yaml
注記チャートにアップグレードの追加の変更( 新しいカスタムチャート値の追加など)を加える必要がある場合は、
metal3.yaml
ファイルを手動で編集する必要があります。元の
Metal3
マニフェストファイルを置き換えます。cp metal3.yaml /var/lib/rancher/rke2/server/manifests/
更新を確認するには、次の手順に従います。
default
ネームスペースのPodを一覧にします。kubectl get pods -n default # Example output NAME READY STATUS RESTARTS AGE helm-install-metal3-7p7bl 0/1 Completed 0 27s
helm-install-rancher-*
Podのログを確認します。kubectl logs <helm_install_rancher_pod> -n default # Example kubectl logs helm-install-metal3-7p7bl -n default
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
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チャート #
現在実行中のHelmチャートの
.yaml
ファイルの値を取得し、必要に応じて値を変更します。helm get values <chart_name> -n <chart_namespace> -o yaml > <chart_name>-values.yaml
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
チャートがアップグレードされていることを確認します。チャートによっては、さまざまなリソースを確認しなければならない場合があります。チャートのアップグレードの例については、例(24.3.2.1項 「例」)のセクションを参照してください。
24.3.2.1 例 #
このセクションでは、以下をアップグレードする方法の例を示します。
Rancher (24.3.2.1.1項 「Rancher」) Helmチャート
Metal3 (24.3.2.1.2項 「Metal3」) Helmチャート
24.3.2.1.1 Rancher #
確実な障害復旧のために、Rancherのバックアップを作成することをお勧めします。方法については、こちらでご確認ください。
この例では、Rancherを2.8.4
バージョンにアップグレードする方法を説明します。
Rancherの現在のリリースの値を取得し、それらの値を
rancher-values.yaml
ファイルに出力します。helm get values rancher -n cattle-system -o yaml > rancher-values.yaml
Helmチャートを更新します。
helm upgrade rancher rancher-prime/rancher \ --namespace cattle-system \ -f rancher-values.yaml \ --version=2.8.4
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 #
この例では、Metal3を0.7.1
バージョンにアップグレードする方法を説明します。
Rancherの現在のリリースの値を取得し、それらの値を
rancher-values.yaml
ファイルに出力します。helm get values metal3 -n metal3-system -o yaml > metal3-values.yaml
Helmチャートを更新します。
helm upgrade metal3 oci://registry.suse.com/edge/metal3-chart \ --namespace metal3-system \ -f metal3-values.yaml \ --version=0.7.1
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
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