K3s 備份和恢復(fù)

2022-08-23 10:09 更新

備份和恢復(fù)

K3s 的備份和恢復(fù)方式由您使用的數(shù)據(jù)存儲類型決定。本文提供了基于外部數(shù)據(jù)存儲嵌入式 etcd 數(shù)據(jù)存儲兩種存儲方式的備份和恢復(fù)操作指導(dǎo),請按需閱讀以下章節(jié)完成備份和還原 K3s。

外部數(shù)據(jù)存儲備份和還原

當使用外部數(shù)據(jù)存儲時,備份和恢復(fù)操作是在 K3s 之外處理的。數(shù)據(jù)庫管理員需要對外部數(shù)據(jù)庫進行備份,或者從快照或轉(zhuǎn)儲中進行恢復(fù)。

我們建議將數(shù)據(jù)庫配置為執(zhí)行定期快照。

有關(guān)獲取數(shù)據(jù)庫快照和從快照還原數(shù)據(jù)庫的詳細信息,請參閱官方數(shù)據(jù)庫文檔:

嵌入式 etcd 數(shù)據(jù)存儲備份和還原(實驗性)

v1.19.1+k3s1 可用

在本節(jié)中,您將學習如何創(chuàng)建 K3s 集群數(shù)據(jù)的備份,并從備份中恢復(fù)集群。

關(guān)于帶有嵌入式 SQLite 的單個 Server 注意事項:目前,不支持 SQLite 的備份。相反,請制作一份 ?/var/lib/rancher/k3s/server? 的副本,然后刪除 K3s。

創(chuàng)建快照

快照目錄默認為 ?${data-dir}/server/db/snapshots?。數(shù)據(jù)目錄(data-dir)值默認為 ?/var/lib/rancher/k3s?,可以通過設(shè)置 ?--data-dir? 標志來改變數(shù)據(jù)目錄。

從快照恢復(fù)集群

當 K3s 從備份中恢復(fù)時,舊的數(shù)據(jù)目錄將被移動到 ?${data-dir}/server/db/etcd-old/?。然后 K3s 會嘗試通過創(chuàng)建一個新的數(shù)據(jù)目錄來恢復(fù)快照,然后從一個帶有一個 etcd 成員的新 K3s 集群啟動 etcd。

要從備份中恢復(fù)集群,運行 K3s 時,請使用 ?--cluster-reset? 選項運行 K3s,同時給出 ?--cluster-reset-restore-path?,如下:

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

結(jié)果:日志中出現(xiàn)一條信息,可以在沒有標志的情況下重新啟動 K3s。再次啟動 K3s,可以成功運行并從指定的快照中恢復(fù)。

參數(shù)

這些選項可以通過命令行或K3s 配置文件傳遞進來,這樣可以更容易使用。

參數(shù) 描述
--etcd-disable-snapshots 禁用自動 etcd 快照
--etcd-snapshot-schedule-cron 以 Cron 表達式的形式配置觸發(fā)定時快照的時間點,例如:每 5 小時觸發(fā)一次0 */5 * * *,默認值為每 12 小時觸發(fā)一次:0 */12 * * *
--etcd-snapshot-retention 保留的快照數(shù)量,默認值為 5。
--etcd-snapshot-dir 保存數(shù)據(jù)庫快照的目錄路徑。(默認位置:${data-dir}/db/snapshots)
--cluster-reset 忘記所有的對等體,成為新集群的唯一成員,也可以通過環(huán)境變量[$K3S_CLUSTER_RESET]進行設(shè)置。
--cluster-reset-restore-path 要恢復(fù)的快照文件的路徑

S3 兼容 API 支持

K3s 支持向具有 S3 兼容 API 的系統(tǒng)寫入 etcd 快照和從系統(tǒng)中恢復(fù) etcd 快照。S3 支持按需和計劃快照。

下面的參數(shù)已經(jīng)被添加到?server?子命令中。這些標志也存在于?etcd-snapshot?子命令中,但是?--etcd-s3?部分被刪除以避免冗余。

選項 描述
--etcd-s3 啟用備份到 S3
--etcd-s3-endpoint S3 endpoint url
--etcd-s3-endpoint-ca S3 自定義 CA 證書連接到 S3 endpoint
--etcd-s3-skip-ssl-verify 禁用 S3 SSL 證書驗證
--etcd-s3-access-key S3 access key
--etcd-s3-secret-key S3 secret key
--etcd-s3-bucket S3 bucket name
--etcd-s3-region S3 region/bucket 的位置(可選)。默認為 us-east-1
--etcd-s3-folder S3 文件夾

執(zhí)行按需的 etcd 快照并將其保存到 S3:

k3s etcd-snapshot \
  --s3 \
  --s3-bucket=<S3-BUCKET-NAME> \
  --s3-access-key=<S3-ACCESS-KEY> \
  --s3-secret-key=<S3-SECRET-KEY>

要從 S3 中執(zhí)行按需的 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 快照和恢復(fù)子命令

k3s 支持一組用于處理 etcd 快照的子命令

子命令 描述
delete 刪除指定的快照
ls, list, l 列出快照
prune 刪除超過配置的保留次數(shù)的快照
save 觸發(fā)一個即時的 etcd 快照

注 ?save?子命令與?k3s etcd-snapshot?相同。后者最終將被棄用,取而代之的是前者。

無論 etcd 快照是存儲在本地還是存儲在 S3 兼容的對象存儲中,這些命令都將按預(yù)期執(zhí)行。

關(guān)于 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>

用默認的保留策略 prune 本地快照。?prune?子命令接受一個額外的標志?--snapshot-retention?,允許覆蓋默認的保留策略。

k3s etcd-snapshot prune
k3s etcd-snapshot prune --snapshot-retention 10


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號