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

クラスタのバックアップ

RancherのUIでは、Rancherが起動したKubernetesクラスタのetcdバックアップと復元を簡単に実行できます。

Rancherは、すべてのプロダクションクラスタに対して定期的な`etcd`スナップショットの設定を推奨しています。さらに、一度限りのスナップショットも取得できます。

etcdデータベースのスナップショットは、etcdノードにローカルにまたはS3互換ターゲットに保存されます。S3を設定する利点は、すべてのetcdノードが失われた場合でも、スナップショットがリモートに保存され、クラスタを復元するために使用できることです。

スナップショットの仕組み

スナップショットコンポーネント

  • RKE

  • RKE2/K3s

Rancherがスナップショットを作成すると、3つのコンポーネントが含まれます:

  • etcdのクラスタデータ

  • Kubernetesバージョン

  • `cluster.yml`の形式のクラスタ設定

Kubernetesバージョンがスナップショットに含まれるようになったため、以前のKubernetesバージョンにクラスタを復元することができます。

Rancherはスナップショットの作成をダウンストリームのKubernetesエンジンに委任します。Kubernetesエンジンがスナップショットを作成すると、3つのコンポーネントが含まれます:

  • etcdのクラスタデータ

  • Kubernetesバージョン

  • クラスタ設定

Kubernetesバージョンがスナップショットに含まれるため、etcdスナップショットを復元しながら、以前のKubernetesバージョンにクラスタを復元することが可能です。

スナップショットの複数のコンポーネントにより、スナップショットからクラスタを復元する必要がある場合に次のオプションから選択できます:

  • *etcdの内容のみを復元する:*この復元は、Rancherのv2.4.0以前のスナップショットへの復元に似ています。

  • *etcdおよびKubernetesのバージョンを復元する:*このオプションは、Kubernetesのアップグレードがクラスタの障害の原因であり、クラスタの構成変更を行っていない場合に使用する必要があります。

  • *etcd、Kubernetesのバージョンおよびクラスタの構成を復元する:*このオプションは、アップグレード時にKubernetesのバージョンとクラスタの構成の両方を変更した場合に使用する必要があります。

構成変更やアップグレードを行う前に、新しいスナップショットを取得することを常にお勧めします。

etcdノードからスナップショットを生成する

  • RKE

  • RKE2/K3s

クラスタ内のetcdノードごとに、etcdクラスタの正常性が確認されます。ノードがetcdクラスタが正常であると報告した場合、そこからスナップショットが作成され、オプションでS3にアップロードされます。

スナップショットは`/opt/rke/etcd-snapshots`に保存されます。ディレクトリが共有マウントとしてノードで設定されている場合、ディレクトリは上書きされます。S3では、スナップショットは常に最後にアップロードしたノードからのものであり、すべてのetcdノードがアップロードし、最後のものが残ります。

複数のetcdノードが存在する場合、作成されたスナップショットはクラスタの正常性チェック後に作成されるため、etcdクラスタ内のデータの有効なスナップショットと見なすことができます。

スナップショットはデフォルトで有効になっています。

スナップショットのディレクトリはデフォルトで`/var/lib/rancher/<RUNTIME>/server/db/snapshots`に設定されており、`<RUNTIME>`は`rke2`または`k3s`のいずれかです。

RKE2では、スナップショットは各etcdノードに保存されます。複数のetcdまたはetcd + コントロールプレーンノードがある場合、ローカルetcdスナップショットの複数のコピーが存在します。

スナップショット命名規則

  • RKE

  • RKE2/K3s

スナップショットの名前は自動生成されます。`--name`オプションは、RKE CLIでワンタイムスナップショットを作成する際にスナップショットの名前を上書きするために使用できます。

RancherがRKEクラスターのスナップショットを作成する際、スナップショット名はタイプ(スナップショットが手動か定期的か)とターゲット(スナップショットがローカルに保存されるかS3にアップロードされるか)に基づいています。命名規則は次のとおりです:

  • `m`は手動を表します

  • `r`は定期的を表します

  • `l`はローカルを表します

  • `s`はS3を表します

いくつかのスナップショット名の例は次のとおりです:

  • c-9dmxz-rl-8b2cx

  • c-9dmxz-ml-kr56m

  • c-9dmxz-ms-t6bjb

  • c-9dmxz-rs-8gxc8

スナップショットの名前は自動生成されます。`--name`オプションは、RKE2またはK3s CLIを使用してワンタイムスナップショットを作成する際に、スナップショットの基本名を上書きするために使用できます。

RancherがRKE2またはK3sクラスターのスナップショットを作成する際、スナップショット名はタイプ(スナップショットが手動か定期的か)とターゲット(スナップショットがローカルに保存されるかS3にアップロードされるか)に基づいています。命名規則は次のとおりです:

<name>-<node>-<timestamp>

<name>:は`--name`によって設定された基本名であり、次のいずれかになります

  • `etcd-snapshot`は定期的なスナップショットに前置きされます

  • `on-demand`は手動のオンデマンドスナップショットに前置きされます

<node>:ノードは、スナップショットが取得されたノードの名前です。

`<timestamp>`はスナップショット作成日のUnixタイムスタンプです。

いくつかのスナップショット名の例は次のとおりです:

  • on-demand-my-super-rancher-k8s-node1-1652288934

  • on-demand-my-super-rancher-k8s-node2-1652288936

  • etcd-snapshot-my-super-rancher-k8s-node1-1652289945

  • etcd-snapshot-my-super-rancher-k8s-node2-1652289948

スナップショットからの復元の仕組み

  • RKE

  • RKE2/K3s

復元時には、次の処理が使用されます。

  1. スナップショットは、S3が設定されている場合、S3から取得されます。

  2. スナップショットは解凍されます(圧縮されている場合)。

  3. クラスター内のetcdノードの1つが、そのスナップショットファイルを他のノードに提供します。

  4. 他のetcdノードはスナップショットをダウンロードし、すべてが同じスナップショットを復元に使用するためにチェックサムを検証します。

  5. クラスタが復元され、復元後のアクションがクラスタ内で実行されます。

復元時に、Rancherは復元を実行するためのいくつかの計画セットを提供します。フェーズのセットが使用され、具体的には:

  • Started

  • シャットダウン

  • 復元

  • RestartCluster

  • 終了しました

etcdスナップショットの復元が失敗した場合、フェーズは`Failed`に設定されます。

  1. etcdスナップショットの復元リクエストが受信され、`restoreRKEConfig`に応じて、クラスタの設定/Kubernetesのバージョンが調整されます。

  2. フェーズが`Started`に設定されます。

  3. フェーズが`Shutdown`に設定され、全体のクラスタは、配布`killall.sh`スクリプトを実行するプランを使用してシャットダウンされます。新しい初期ノードが選出されます。復元されるスナップショットがローカルスナップショットである場合、スナップショットが存在するノードが初期ノードとして選択されます。スナップショットがS3から復元される場合、既存の初期ノードが使用されます。

  4. フェーズが`Restore`に設定され、初期ノードにスナップショットが復元されます。

  5. フェーズが`RestartCluster`に設定され、クラスタは新しい初期ノードに再起動/再参加し、そこには新しく復元されたスナップショット情報があります。

  6. フェーズが`Finished`に設定され、クラスタは正常に復元されたと見なされます。`cattle-cluster-agent`が再接続され、クラスタの調整が完了します。

定期スナップショットの設定

  • RKE

  • RKE2/K3s

定期スナップショットを取得する頻度と保持するスナップショットの数を選択してください。時間の長さは時間単位で測定されます。タイムスタンプ付きのスナップショットを使用すると、ユーザはポイントインタイムリカバリを実行できます。

デフォルトでは、Rancherで起動したKubernetesクラスタは、定期的なスナップショットを作成するように設定されています(ローカルディスクに保存)。ローカルディスクのエラーから保護するには、S3ターゲットを使用するか、ディスク上のパスを複製することをお勧めします。

クラスタのプロビジョニングまたは編集中、スナップショットの設定は*クラスタオプション*の詳細セクションにあります。*詳細オプションの表示*をクリックします。

*詳細クラスタオプション*セクションには、設定可能なオプションがいくつかあります。

オプション 説明 デフォルト値

etcdスナップショットバックアップターゲット

スナップショットを保存する場所を選択してください。オプションはローカルまたはS3のいずれかです。

local

定期的なetcdスナップショットが有効

定期的スナップショットの有効化/無効化

はい

定期的etcdスナップショット作成期間

定期的スナップショット間の時間(時間単位)

12時間

定期的etcdスナップショット保持数

保持するスナップショットの数

6

定期的スナップショットを取得するスケジュールと、保持するスナップショットの数を設定します。スケジュールは従来のcron形式です。保持ポリシーは、ノードごとに名前に一致するスナップショットの数を保持することを指示します。

デフォルトでは、Rancherで起動したKubernetesクラスタは、午前0時から始まり、5時間ごとに定期的スナップショットを作成するように設定されています(ローカルディスクに保存)。ローカルディスクのエラーから保護するには、S3ターゲットを使用するか、ディスク上のパスを複製することをお勧めします。

クラスタのプロビジョニングまたは編集中、スナップショットの設定は*クラスタ設定*の下にあります。*etcd*をクリックします。

オプション 説明 デフォルト値

定期的なetcdスナップショットが有効

定期的スナップショットの有効化/無効化

はい

定期的etcdスナップショット作成期間

定期的スナップショットのためのcronスケジュール

0 */5 * * *

定期的etcdスナップショット保持数

保持するスナップショットの数

5

一度限りのスナップショット

  • RKE

  • RKE2/K3s

定期的スナップショットに加えて、「一度限りの」スナップショットを取得したい場合があります。例えば、クラスタのKubernetesバージョンをアップグレードする前に、アップグレード失敗に備えてクラスタの状態をバックアップするのが最善です。

  1. 左上隅で、*☰ > クラスター管理*をクリックします。

  2. *クラスタ*ページで、一度限りのスナップショットを取得したいクラスタに移動します。

  3. *⋮ > スナップショットを取得*をクリックします。

定期的スナップショットに加えて、「一度限りの」スナップショットを取得したい場合があります。例えば、クラスタのKubernetesバージョンをアップグレードする前に、アップグレード失敗に備えてクラスタの状態をバックアップするのが最善です。

  1. 左上隅で、*☰ > クラスター管理*をクリックします。

  2. *クラスタ*ページで、一度限りのスナップショットを取得したいクラスタに移動します。

  3. `Snapshots`タブに移動し、`Snapshot Now`をクリックします。

一度限りのスナップショットの取得方法

一度限りのスナップショット作成時に、Rancherはスナップショット作成を行うためのいくつかの計画を提供します。フェーズのセットが使用され、具体的には:

  • Started

  • RestartCluster

  • 終了しました

etcdスナップショット作成が失敗した場合、フェーズは`Failed`に設定されます。

  1. etcdスナップショット作成リクエストが受信されました。

  2. フェーズが`Started`に設定されます。クラスタの設定に従って、クラスタ内のすべてのetcdノードはetcdスナップショットを作成するための計画を受け取ります。

  3. フェーズは`RestartCluster`に設定され、すべてのetcdノードの計画はetcdノードの元の計画にリセットされます。

  4. フェーズが`Finished`に設定されます。

*結果:*あなたのバックアップターゲットに基づいて、一度限りのスナップショットが取得され、選択されたバックアップターゲットに保存されます。

バックアップターゲット

Rancherは2つの異なるバックアップターゲットをサポートしています:

ローカルバックアップターゲット

  • RKE

  • RKE2/K3s

デフォルトでは、local`バックアップターゲットが選択されています。このオプションのメリットは、外部設定がないことです。スナップショットは、/opt/rke/etcd-snapshots`にあるRancherが起動したKubernetesクラスタのetcdノードに自動的にローカル保存されます。すべての定期的スナップショットは設定された間隔で作成されます。`local`バックアップターゲットを使用するデメリットは、完全な災害が発生し、_すべて_のetcdノードが失われた場合、クラスタを復元する能力がないことです。

デフォルトでは、local`バックアップターゲットが選択されています。このオプションのメリットは、外部設定がないことです。スナップショットは、/var/lib/rancher/<runtime>/server/db/snapshots`にあるRancherが起動したKubernetesクラスタのetcdノードに自動的にローカル保存され、`<runtime>`は`k3s`または`rke2`のいずれかです。すべての定期的なスナップショットはcronスケジュールに従って取得されます。`local`バックアップターゲットを使用するデメリットは、完全な災害が発生し、_すべて_のetcdノードが失われた場合、クラスタを復元する能力がないことです。

S3バックアップターゲット

`S3`バックアップターゲットを使用することをお勧めします。これにより、スナップショットを外部に、S3互換のバックエンドに保存できます。スナップショットはローカルに保存されないため、すべてのetcdノードを失ってもクラスタを復元できます。

`S3`ターゲットはローカルバックアップに対して利点を提供しますが、追加の設定が必要です。

S3バックアップターゲットを使用する場合は、すべてのクラスターに独自のバケットまたはフォルダーがあることを確認してください。Rancherは、そのクラスターに設定されたS3バケットまたはフォルダーにリストされている利用可能なスナップショットからスナップショット情報を取得します。

オプション 説明 必須

S3バケット名

バックアップを保存するためのS3バケットの名前

*

S3リージョン

バックアップバケットのS3リージョン

S3リージョンエンドポイント

バックアップバケットのS3リージョンエンドポイント

*

S3アクセスキー

バックアップバケットにアクセスするための権限を持つS3アクセスキー

*

S3シークレットキー

バックアップバケットにアクセスするための権限を持つS3シークレットキー

*

カスタムCA証明書

プライベートS3バックエンドにアクセスするために使用されるカスタム証明書

S3用のカスタムCA証明書の使用

バックアップスナップショットは、`S3`バックアップのようなカスタム minioに保存できます。S3バックエンドが自己署名またはカスタム証明書を使用する場合、`Custom CA Certificate`オプションを使用してカスタム証明書を提供し、S3バックエンドに接続します。

S3にスナップショットを保存するためのIAMサポート

`S3`バックアップターゲットは、API資格情報を使用することに加えて、AWS APIへのIAM認証を使用することをサポートしています。IAMロールは、アプリケーションがS3ストレージにAPIコールを行う際に使用できる一時的な権限を付与します。IAM認証を使用するには、以下の要件を満たす必要があります。

  • クラスタのetcdノードは、指定されたバックアップバケットに対して読み取り/書き込みアクセス権を持つインスタンスロールを持っている必要があります。

  • クラスタのetcdノードは、指定されたS3エンドポイントへのネットワークアクセスを持っている必要があります。

  • Rancher Serverのワーカーノードは、指定されたバックアップバケットに対して読み取り/書き込みアクセス権を持つインスタンスロールを持っている必要があります。

  • Rancher Serverのワーカーノードは、指定されたS3エンドポイントへのネットワークアクセスを持っている必要があります。

アプリケーションにS3へのアクセスを付与するには、 Amazon EC2インスタンスで実行されるアプリケーションに権限を付与するためのIAMロールの使用に関するAWSのドキュメントを参照してください。

利用可能なスナップショットの表示

クラスタのすべての利用可能なスナップショットのリストは、Rancher UIで確認できます。

  1. 左上隅で、*☰ > クラスター管理*をクリックします。

  2. *クラスタ*ページで、スナップショットを表示したいクラスタに移動し、その名前をクリックしてください。

  3. *スナップショット*タブをクリックして、保存されたスナップショットのリストを表示します。これらのスナップショットには、作成された日時のタイムスタンプが含まれています。

安全なタイムスタンプ(RKE)

スナップショットファイルには、外部ツールやスクリプトを使用してファイルを処理しやすくするためにタイムスタンプが付けられていますが、一部のS3互換バックエンドでは、これらのタイムスタンプは使用できませんでした。

オプション`safe_timestamp`は、互換性のあるファイル名をサポートするために追加されます。このフラグが`true`に設定されると、スナップショットファイル名のタイムスタンプ内のすべての特殊文字が置き換えられます。

このオプションはUIで直接利用できず、`Edit as Yaml`インターフェースを通じてのみ利用可能です。