K3s 備份和恢復(fù)

2022-08-23 10:09 更新

備份和恢復(fù)

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

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

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

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

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

嵌入式 etcd 數(shù)據(jù)存儲(chǔ)備份和還原(實(shí)驗(yàn)性)

v1.19.1+k3s1 可用

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

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

創(chuàng)建快照

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

從快照恢復(fù)集群

當(dāng) K3s 從備份中恢復(fù)時(shí),舊的數(shù)據(jù)目錄將被移動(dòng)到 ?${data-dir}/server/db/etcd-old/?。然后 K3s 會(huì)嘗試通過(guò)創(chuàng)建一個(gè)新的數(shù)據(jù)目錄來(lái)恢復(fù)快照,然后從一個(gè)帶有一個(gè) etcd 成員的新 K3s 集群?jiǎn)?dòng) etcd。

要從備份中恢復(fù)集群,運(yùn)行 K3s 時(shí),請(qǐng)使用 ?--cluster-reset? 選項(xiàng)運(yùn)行 K3s,同時(shí)給出 ?--cluster-reset-restore-path?,如下:

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

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

參數(shù)

這些選項(xiàng)可以通過(guò)命令行或K3s 配置文件傳遞進(jìn)來(lái),這樣可以更容易使用。

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

S3 兼容 API 支持

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

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

選項(xiàng) 描述
--etcd-s3 啟用備份到 S3
--etcd-s3-endpoint S3 endpoint url
--etcd-s3-endpoint-ca S3 自定義 CA 證書(shū)連接到 S3 endpoint
--etcd-s3-skip-ssl-verify 禁用 S3 SSL 證書(shū)驗(yàn)證
--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 的位置(可選)。默認(rèn)為 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 沒(méi)有運(yùn)行。然后運(yùn)行以下命令:

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 刪除超過(guò)配置的保留次數(shù)的快照
save 觸發(fā)一個(gè)即時(shí)的 etcd 快照

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

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

關(guān)于 etcd 快照子命令的其他信息,請(qǐng)運(yùn)行?k3s etcd-snapshot?。

從 S3 中刪除一個(gè)快照。

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

用默認(rèn)的保留策略 prune 本地快照。?prune?子命令接受一個(gè)額外的標(biāo)志?--snapshot-retention?,允許覆蓋默認(rèn)的保留策略。

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


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)