k3s etcd-snapshot
Version Gate
v1.19.1+k3s1から利用可能 |
このセクションでは、K3sの組み込みetcdデータストアのバックアップを作成し、バックアップからクラスターを復元する方法を学びます。
スナップショットの作成
スナップショットはデフォルトで有効になっており、システム時間の00:00と12:00に実行され、5つのスナップショットが保持されます。スナップショットの間隔や保持するスナップショットの数を設定するには、オプションを参照してください。
スナップショットディレクトリのデフォルトは${data-dir}/server/db/snapshots
です。data-dirの値はデフォルトで/var/lib/rancher/k3s
に設定されており、--data-dir
フラグを設定することで変更できます。
スナップショットからクラスターを復元する
K3sがバックアップから復元されると、古いデータディレクトリは${data-dir}/server/db/etcd-old/
に移動されます。その後、K3sは新しいデータディレクトリを作成し、新しいK3sクラスターを1つのetcdメンバーで開始してスナップショットを復元しようとします。
バックアップからクラスターを復元するには:
-
シングルサーバー
-
高可用性
--cluster-reset
オプションと--cluster-reset-restore-path
を指定してK3sを実行します:
k3s server \
--cluster-reset \
--cluster-reset-restore-path=<PATH-TO-SNAPSHOT>
結果: ログにK3sをフラグなしで再起動できるというメッセージが表示されます。再度k3sを開始すると、指定されたスナップショットから正常に実行され、復元されます。
この例では、3つのサーバーS1
、S2
、およびS3
があります。スナップショットはS1
にあります。
-
S1
で、--cluster-reset
オプションと--cluster-reset-restore-path
を指定してK3sを開始します:k3s server \ --cluster-reset \ --cluster-reset-restore-path=<PATH-TO-SNAPSHOT>
結果: ログにK3sをフラグなしで再起動できるというメッセージが表示されます。
-
S2
とS3
で、K3sを停止します。その後、データディレクトリ/var/lib/rancher/k3s/server/db/
を削除します:systemctl stop k3s rm -rf /var/lib/rancher/k3s/server/db/
-
S1
で、再度K3sを開始します:systemctl start k3s
-
S2
とS3
で、再度K3sを開始して復元されたクラスターに参加します:systemctl start k3s
オプション
これらのオプションはコマンドラインで渡すことも、設定ファイルで使用することもできます。
オプション | 説明 |
---|---|
|
自動etcdスナップショットを無効にする |
|
スナップショット間隔のcron形式。例:5時間ごと |
|
保持するスナップショットの数(デフォルト:5) |
|
DBスナップショットを保存するディレクトリ。(デフォルトの場所: |
|
すべてのピアを忘れて新しいクラスターの唯一のメンバーになる。環境変数 |
|
復元するスナップショットファイルのパス |
S3互換APIサポート
K3sは、S3互換APIを持つシステムにetcdスナップショットを保存および復元することをサポートしています。S3サポートは、オンデマンドおよびスケジュールされたスナップショットの両方で利用可能です。
以下の引数はserver
サブコマンドに追加されています。これらのフラグはetcd-snapshot
サブコマンドにも存在しますが、冗長性を避けるために--etcd-s3
部分は削除されています。
オプション | 説明 |
---|---|
|
S3へのバックアップを有効にする |
|
S3エンドポイントURL |
|
S3エンドポイントに接続するためのカスタムCA証明書 |
|
S3 SSL証明書の検証を無効にする |
|
S3アクセスキー |
|
S3シークレットキー |
|
S3バケット名 |
|
S3リージョン/バケットの場所(オプション)。デフォルトはus-east-1 |
|
S3フォルダー |
オンデマンドでetcdスナップショットを作成し、S3に保存するには:
k3s etcd-snapshot save \
--s3 \
--s3-bucket=<S3-BUCKET-NAME> \
--s3-access-key=<S3-ACCESS-KEY> \
--s3-secret-key=<S3-SECRET-KEY>
オンデマンドでS3からetcdスナップショットを復元するには、まずK3sが実行されていないことを確認します。その後、以下のコマンドを実行します:
k3s server \
--cluster-init \
--cluster-reset \
--etcd-s3 \
--cluster-reset-restore-path=<SNAPSHOT-NAME> \
--etcd-s3-bucket=<S3-BUCKET-NAME> \
--etcd-s3-access-key=<S3-ACCESS-KEY> \
--etcd-s3-secret-key=<S3-SECRET-KEY>
Etcdスナップショットと復元のサブコマンド
k3sは、etcdスナップショットを操作するための一連のサブコマンドをサポートしています。
サブコマンド | 説明 |
---|---|
delete |
指定されたスナップショットを削除 |
ls, list, l |
スナップショットの一覧表示 |
prune |
設定された保持数を超えるスナップショットを削除 |
save |
即時のetcdスナップショットをトリガー |
|
これらのコマンドは、etcdスナップショットがローカルに保存されている場合でも、S3互換のオブジェクトストアに保存されている場合でも、期待通りに動作します。
etcdスナップショットのサブコマンドに関する追加情報は、k3s etcd-snapshot
を実行して確認してください。
S3からスナップショットを削除します。
k3s etcd-snapshot delete \
--s3 \
--s3-bucket=<S3-BUCKET-NAME> \
--s3-access-key=<S3-ACCESS-KEY> \
--s3-secret-key=<S3-SECRET-KEY> \
<SNAPSHOT-NAME>
デフォルトの保持ポリシー(5)でローカルスナップショットを削除します。prune
サブコマンドには、デフォルトの保持ポリシーを上書きするための追加フラグ--snapshot-retention
があります。
k3s etcd-snapshot prune
k3s etcd-snapshot prune --snapshot-retention 10