antony@notes:~/data-platform$ cat "Rancher-Backup-and-Restore-RKE2-DownStream-Cluster-with-Minio.md"
Rancher Backup and Restore RKE2 DownStream Cluster with Minio
Rancher Backup and Restore RKE2 DownStream Cluster with Minio
Preface
本篇文章會介紹
- 如何透過 Rancher 將下游叢集的 RKE2 Cluster 中的 ETCD 資料備份至 MinIO 的 Bucket
可以透過點擊展開以下目錄,選擇想看的內容,跳轉至特定章節
:::warning
:::spoiler 文章目錄
[TOC]
:::
Prerequest
- 一座由 Rancher 建立的 RKE2 Cluster
- 已建立好 MinIO
1. 透過 CLI 在 Minio 中建立 Bucket
Step1: 下載管理 MinIO 的工具,並賦予執行權限
$ sudo curl -o /usr/local/bin/mc https://dl.min.io/client/mc/release/linux-amd64/mc \
&& sudo chmod +x /usr/local/bin/mcStep2: 新增要管理的 MinIO server
$ mc alias set myminio https://minio.example.com:9000 admin admin123myminio,可自定義的 Minio Server 名稱https://minio.example.com:9000- MinIO server 的位置 9000 Port 給 API 用的
- 9090 Port 給 Web Console
admin,帳號admin123,密碼
Note: 需要 DNS 能解析到 MinIO Server 的 Domain Name (
minio.example.com),不能直接用本機名稱解析
螢幕輸出 :
Added `myminio` successfully.Step3: create a new bucket for RKE2 Backup
$ mc mb myminio/rke2/backupmc mb,creates a new bucket or directory at the specified path.- 可以把
mc mb想像成mkdir -p
- 可以把
myminio/rke2/backup,在 Minio 儲存 Data 的目錄區下建立rke2bucket (其實就是一個目錄),這個目錄下再建立一個backup目錄
Step4: Upload File to the Bucket
建立一個測試檔案
$ touch testupload the file to the rke2 Bucket
$ mc cp test myminio/rke2/backup檢查是否 upload 成功
$ mc ls data/rke2/backup螢幕輸出 :
[2023-08-11 14:36:26 CST] 14B test/:::spoiler 補充: 刪除 bucket 命令
# 刪 bucket
$ mc rb --force --dangerous myminio/rke2backup
# 刪 bucket 的所有內容
$ sudo mc rm --recursive --force data/rke2backup/
# 刪除特定時間點的 bucket 裡面的 object
## 把 --dry-run 拿掉就會真的刪除檔案
$ mc version enable myminio/test
$ mc rm --dry-run --recursive --force --versions --rewind "2023.11.15T17:46" myminio/test:::
2. Rancher 設定 DownStream Cluster 的 ETCD Backup 到 Minio
- 點 “Cluster Management”
- 在要備份的叢集最左邊點選 “3 個點菜單”
- 點 “Edit Config”
- 在 Cluster Configuration 項目下點 “Etcd”
- 點擊 “Enable” Backup Snapshots to S3
- 點擊 “Authentication” 展開,選擇 “Create a S3-Compatible Auth Secret”
- Access Key 填入
admin - Secret Key 填入
admin123 - Bucket 輸入
rke2 - Folder 輸入
backup - Region 輸入
us-west-2 - Endpoint 輸入
minio.example.com:9000 - Endpoint CA Cert ,將簽發 MinIO 的 CA 憑證複製貼上 ( Example:
cacerts.pem) - 點擊 “Save”
範例示意圖 :

Take SnapShot
- 點 “Cluster Management”
- 點擊要備份的 K8S 叢集名稱
- 點 “Snapshots”
- 點 “SnapShot Now”
成功畫面

Recover a RKE2 cluster (DownStream Cluster) when all control plane nodes have failed
- 關閉 Control plane node (模擬災難)
- 在 Rancher UI 刪除 DownStream Cluster 的所有 Control plane 和 etcd node (
Cluster Management > machine > delete)
如果刪不掉,在 Upstream Cluster 中刪除以下是 對應節點的 object
kubectl -n c-m-ksb7fgl9 get nodes.management.cattle.io - 複製註冊指令 (Role: all)
- 在新節點 Run 註冊指令 (IP 跟 Hostname 可不一樣)
- 在 Rancher UI 選擇 Snapshot 點擊 Restore
- 將
/opt/rke2/bin目錄底下rke2、rke2-killall.sh和rke2-uninstall.sh指令複製到/usr/local/bin:sudo cp /opt/rke2/bin/* /usr/local/bin/ - 啟動 rke2-server 服務:
sudo systemctl enable --now rke2-server.service - 等 rke2 叢集建好後,做以下設定
# Copy kubectl and other commands, Copy rke2 Command, Setup kubeconfig
$ sudo cp /var/lib/rancher/rke2/bin/* /usr/local/bin/ && \
sudo cp /opt/rke2/bin/* /usr/local/bin/ && \
mkdir -p $HOME/.kube && \
sudo cp /etc/rancher/rke2/rke2.yaml $HOME/.kube/config && \
sudo chown $(id -u):$(id -g) $HOME/.kube/config- 在 Rancher UI Restore
- 要記得換
kubeconfig如果 restore 後,沒有錯誤訊息,但 kubectl get node 之後發現還有舊的節點,請執行以下命令刪除 secret:
kubectl -n kube-system delete secret k3m1.node-password.rke2