メインコンテンツまでスキップ

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を開始すると、指定されたスナップショットから正常に実行され、復元されます。

オプション

これらのオプションはコマンドラインで渡すことも、設定ファイルで使用することもできます。

オプション説明
--etcd-disable-snapshots自動etcdスナップショットを無効にする
--etcd-snapshot-schedule-cronスナップショット間隔のcron形式。例:5時間ごと 0 */5 * * *(デフォルト:0 */12 * * *
--etcd-snapshot-retention保持するスナップショットの数(デフォルト:5)
--etcd-snapshot-dirDBスナップショットを保存するディレクトリ。(デフォルトの場所:${data-dir}/db/snapshots
--cluster-resetすべてのピアを忘れて新しいクラスターの唯一のメンバーになる。環境変数[$K3S_CLUSTER_RESET]でも設定可能。
--cluster-reset-restore-path復元するスナップショットファイルのパス

S3互換APIサポート

K3sは、S3互換APIを持つシステムにetcdスナップショットを保存および復元することをサポートしています。S3サポートは、オンデマンドおよびスケジュールされたスナップショットの両方で利用可能です。

以下の引数はserverサブコマンドに追加されています。これらのフラグはetcd-snapshotサブコマンドにも存在しますが、冗長性を避けるために--etcd-s3部分は削除されています。

オプション説明
--etcd-s3S3へのバックアップを有効にする
--etcd-s3-endpointS3エンドポイントURL
--etcd-s3-endpoint-caS3エンドポイントに接続するためのカスタムCA証明書
--etcd-s3-skip-ssl-verifyS3 SSL証明書の検証を無効にする
--etcd-s3-access-keyS3アクセスキー
--etcd-s3-secret-keyS3シークレットキー
--etcd-s3-bucketS3バケット名
--etcd-s3-regionS3リージョン/バケットの場所(オプション)。デフォルトはus-east-1
--etcd-s3-folderS3フォルダー

オンデマンドで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スナップショットをトリガー
注記

saveサブコマンドはk3s etcd-snapshotと同じです。後者は最終的に前者に置き換えられる予定です。

これらのコマンドは、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