K3s 的備份和恢復(fù)方式由您使用的數(shù)據(jù)存儲(chǔ)類型決定。本文提供了基于外部數(shù)據(jù)存儲(chǔ)和嵌入式 etcd 數(shù)據(jù)存儲(chǔ)兩種存儲(chǔ)方式的備份和恢復(fù)操作指導(dǎo),請(qǐng)按需閱讀以下章節(jié)完成備份和還原 K3s。
當(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ù)文檔:
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。
快照目錄默認(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ù)目錄。
當(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ù)。
這些選項(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ù)的快照文件的路徑 |
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>
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
更多建議: