この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

K3sのロールバック

アップグレード後にK3sのKubernetesバージョンをロールバックするには、K3sバイナリのダウングレードとデータストアの復元を組み合わせて使用します。ロールバックは、シングルノードのSQLite、外部データストア、または組み込みのetcdを含むすべてのタイプのクラスターで実行できます。以前のKubernetesマイナーバージョンにロールバックする場合、ロールバック先のKubernetesマイナーバージョンで取得したデータストアのスナップショットが必要です。

データベースを復元できない場合、以前のマイナーバージョンにロールバックすることはできません。

重要な考慮事項

  • *バックアップ:*アップグレード前に、古いバージョンのK3sを実行しているクラスターから有効なデータベースまたはetcdのスナップショットを取得していることを確認してください。バックアップがない場合、ロールバックは不可能です。

  • データ損失の可能性:`k3s-killall.sh`スクリプトはK3sプロセスを強制終了させ、アプリケーションが適切にシャットダウンされていない場合、データ損失が発生する可能性があります。

  • *バージョンの詳細:*ロールバックの前後にK3sおよびコンポーネントのバージョンを常に確認してください。

K3sクラスターのロールバック

  • SQLite

  • 組み込みetcd

  • 外部データベース

SQLiteデータベースを使用してK3sクラスターをロールバックするには、.db`ファイルをデータベースのバックアップを取ったときに作成した.db`ファイルのコピーと置き換えます。

組み込みetcdを使用してK3sクラスターをロールバックするには、次の手順に従ってください:

  1. クラスターが実行中でKubernetes APIが利用可能な場合、すべてのノードをドレインしてワークロードを優雅に停止します:

    kubectl drain --ignore-daemonsets --delete-emptydir-data <NODE-ONE-NAME> <NODE-TWO-NAME> <NODE-THREE-NAME> ...
  2. 各ノードで、K3sサービスとすべての実行中のポッドプロセスを停止します:

    k3s-killall.sh
  3. 各ノードで、K3sバイナリを前のバージョンにロールバックしますが、*起動しないで*ください。

    • インターネットアクセスのあるクラスター:

      • サーバーノード:

        curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_VERSION=vX.Y.Zk3s1 INSTALL_K3S_EXEC="server" INSTALL_K3S_SKIP_START="true" sh -
      • エージェントノード:

        curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_VERSION=vX.Y.Zk3s1 INSTALL_K3S_EXEC="agent" INSTALL_K3S_SKIP_START="true" sh -
    • エアギャップ(された)クラスター:

      • アーティファクトをダウンロードし、インストールスクリプトをローカルで実行します。インストールスクリプトを実行する際に、K3sが起動しないように環境変数`INSTALL_K3S_SKIP_START="true"`を追加します。

  4. 最初のサーバーノードまたはK3s設定ファイルに`server:`エントリがないノードで、クラスターの復元を開始します。詳細については、スナップショット復元手順を参照してください:

    k3s server --cluster-reset --cluster-reset-restore-path=<PATH-TO-SNAPSHOT>

    これはetcdデータストア内のすべてのデータを上書きします。復元する前にスナップショットの整合性を確認してください。大きなスナップショットは復元に時間がかかる場合があることに注意してください。

  5. 最初のサーバーノードでK3sサービスを開始します:

    systemctl start k3s
  6. 他のサーバーノードでK3sのデータベースディレクトリを削除します:

    rm -rf /var/lib/rancher/k3s/server/db
  7. 他のサーバーノードでK3sサービスを開始します:

    systemctl start k3s
  8. すべてのエージェントノードでK3sサービスを開始します:

    systemctl start k3s
  9. `systemctl status k3s`を使用してK3sサービスのステータスを確認します。

外部データベース(例:PostgreSQL、MySQL)を使用してK3sクラスターをロールバックするには、次の手順に従ってください:

  1. クラスターが実行中でKubernetes APIが利用可能な場合、すべてのノードをドレインしてワークロードを優雅に停止します:

    kubectl drain --ignore-daemonsets --delete-emptydir-data <NODE-ONE-NAME> <NODE-TWO-NAME> <NODE-THREE-NAME> ...

    このプロセスは、実行中のアプリケーションに影響を与える可能性があります。

  2. 各ノードで、K3sサービスとすべての実行中のポッドプロセスを停止します:

    k3s-killall.sh
  3. K3sのアップグレード前に取得したデータベーススナップショットを復元し、データベースの整合性を確認してください。例えば、PostgreSQLを使用している場合は、次のコマンドを実行してください:

    pg_restore -U <DB-USER> -d <DB-NAME> <BACKUP-FILE>
  4. 各ノードで、K3sのバイナリを前のバージョンにロールバックします。

    • インターネットアクセスのあるクラスター:

      • サーバーノード:

        curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_VERSION=vX.Y.Zk3s1 INSTALL_K3S_EXEC="server" sh -
      • エージェントノード:

        curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_VERSION=vX.Y.Zk3s1 INSTALL_K3S_EXEC="agent" sh -
    • エアギャップ(された)クラスター:

      • アーティファクトをダウンロードし、インストールスクリプトをローカルで実行します。インストール後に`k3s --version`でK3sのバージョンを確認し、アップグレード前に使用されていたカスタム設定を再適用してください。

  5. 各ノードでK3sサービスを開始します:

    systemctl start k3s
  6. `systemctl status k3s`を使用してK3sサービスのステータスを確認します。

検証

ロールバック後、次のことを確認してください:

  • K3sのバージョン:k3s --version

  • Kubernetesクラスタの健康状態:kubectl get nodes

  • アプリケーションの機能。

  • K3sのログにエラーがないか確認してください。