K3s 的備份和恢復(fù)方式由您使用的數(shù)據(jù)存儲類型決定。本文提供了基于外部數(shù)據(jù)存儲和嵌入式 etcd 數(shù)據(jù)存儲兩種存儲方式的備份和恢復(fù)操作指導(dǎo),請按需閱讀以下章節(jié)完成備份和還原 K3s。
當使用外部數(shù)據(jù)存儲時,備份和恢復(fù)操作是在 K3s 之外處理的。數(shù)據(jù)庫管理員需要對外部數(shù)據(jù)庫進行備份,或者從快照或轉(zhuǎn)儲中進行恢復(fù)。
我們建議將數(shù)據(jù)庫配置為執(zhí)行定期快照。
有關(guān)獲取數(shù)據(jù)庫快照和從快照還原數(shù)據(jù)庫的詳細信息,請參閱官方數(shù)據(jù)庫文檔:
v1.19.1+k3s1 可用
在本節(jié)中,您將學習如何創(chuàng)建 K3s 集群數(shù)據(jù)的備份,并從備份中恢復(fù)集群。
關(guān)于帶有嵌入式 SQLite 的單個 Server 注意事項:目前,不支持 SQLite 的備份。相反,請制作一份 ?
/var/lib/rancher/k3s/server
? 的副本,然后刪除 K3s。
快照目錄默認為 ?${data-dir}/server/db/snapshots
?。數(shù)據(jù)目錄(data-dir)值默認為 ?/var/lib/rancher/k3s
?,可以通過設(shè)置 ?--data-dir
? 標志來改變數(shù)據(jù)目錄。
當 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ù)。
這些選項可以通過命令行或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ù)的快照文件的路徑 |
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>
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
更多建議: