備份中心用于應用的備份、恢復與遷移,安裝migrate-controller備份服務組件并配置相關權限以開啟備份能力,實現多集群和混合環境中應用的數據容災和應用遷移。
前提條件
開通相關云服務
已開通云備份。相關計費,請參見云備份計費方式與計費項。
使用云備份備份文件系統類型存儲卷的數據(OSS、NAS、CPFS、本地存儲等類型存儲卷數據,以及混合云場景中的存儲卷數據)。在使用之前,您需要參見下文開通云備份服務并配置云備份權限。
當前備份中心僅使用阿里云OSS存儲備份的應用。在使用阿里云對象存儲OSS之前,您需要參見下文配置OSS權限。
開通快照服務不收取費用。創建快照后,阿里云默認根據快照容量與時長按量計費,更多信息,請參見快照計費。
如需使用ECS云盤快照備份阿里云云盤類型存儲卷的數據,您需要先開通快照并參見下文配置權限。
準備集群
已創建1.18及以上版本的集群。請參見創建ACK托管集群、創建ACK專有集群、創建ACK Serverless集群、創建Edge集群或創建注冊集群并接入本地數據中心集群。關于升級集群,請參見手動升級集群。
若使用ACK托管集群,需要創建以cnfs-oss-****開頭命名的Bucket,便于權限最小化管理及存儲備份的模板,例如cnfs-oss-backup。
備份中心不支持Flexvolume插件集群,若您需要使用備份功能,可以通過以下方式遷移至CSI。
若是無存儲集群的Flexvolume插件,建議您將存儲插件遷移至CSI。具體操作,請參見將無存儲集群的Flexvolume遷移至CSI。
其他情況,請加入釘釘用戶群(釘釘群號:35532895)咨詢。
背景信息
隨著越來越多的應用運行在Kubernetes中,定時備份變得格外重要。備份中心可以有效防止因意外情況導致的服務長時間中斷。與傳統的單機或磁盤備份不同,基于Kubernetes的應用備份,主要關注于運行在Kubernetes中的應用及其數據、資源對象、配置及整個命名空間等。
注意事項
ACK Serverless集群Pro版、ACK Edge集群使用備份中心時,與ACK托管集群安裝及權限配置的要求一致,具體操作,請參見ACK托管集群。
ACK Serverless集群基礎版暫不支持使用。
ACK Serverless集群Pro版、ACK Edge集群使用備份中心時,不支持備份存儲卷。
對于ACK Edge集群,migrate-controller備份服務組件默認安裝在云上節點并通過內網訪問OSS。
ACK托管集群
步驟一:安裝migrate-controller備份服務組件
首次使用備份中心功能,需安裝備份服務組件;已安裝可忽略。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在應用備份頁面,單擊開始安裝。
系統會自動檢測備份倉庫,若未創建,請參見創建備份倉庫。
備份服務組件安裝完之后,會生成csdr的命名空間,請勿刪除該命名空間。
若您已安裝該組件,但備份服務組件不是最新版本,請在應用備份頁面單擊開始升級,系統會自動將應用備份服務組件升級至最新版本。
步驟二:配置相關權限
OSS權限
ACK托管集群建議以
cnfs-oss-***
名稱開頭的OSS Bucket作為備份中心的備份倉庫,無需配置OSS權限。使用其他Bucket時需要參見下文ACK專有集群配置相關OSS權限,請參見步驟一:配置相關權限。云盤快照和云備份權限
ACK托管集群無需配置云盤快照和云備份權限。
ACK專有集群
步驟一:配置相關權限
v1.7.7及以上版本的migrate-controller組件支持阿里云云盤類型存儲備份跨地域恢復。如果需要使用該功能,請按如下自定義權限策略模板,為原RAM用戶補充授權ECS云盤快照相關權限策略。
創建RAM用戶。具體操作,請參見創建RAM用戶。
創建如下自定義權限策略。具體操作,請參見通過腳本編輯模式創建自定義權限策略。
以下策略腳本中,
oss:****
為OSS權限策略,ecs:****
為ECS云盤快照相關權限策略,hbr:****
為云備份權限策略。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:PutObject", "oss:GetObject", "oss:DeleteObject", "oss:GetBucket", "oss:ListObjects", "oss:ListBuckets", "oss:GetBucketStat" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecs:CreateSnapshot", "ecs:DeleteSnapshot", "ecs:DescribeSnapshotGroups", "ecs:CreateAutoSnapshotPolicy", "ecs:ApplyAutoSnapshotPolicy", "ecs:CancelAutoSnapshotPolicy", "ecs:DeleteAutoSnapshotPolicy", "ecs:DescribeAutoSnapshotPolicyEX", "ecs:ModifyAutoSnapshotPolicyEx", "ecs:DescribeSnapshots", "ecs:DescribeInstances", "ecs:CopySnapshot", "ecs:CreateSnapshotGroup", "ecs:DeleteSnapshotGroup" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "hbr:CreateVault", "hbr:CreateBackupJob", "hbr:DescribeVaults", "hbr:DescribeBackupJobs2", "hbr:DescribeRestoreJobs", "hbr:SearchHistoricalSnapshots", "hbr:CreateRestoreJob", "hbr:AddContainerCluster", "hbr:DescribeContainerCluster", "hbr:DescribeRestoreJobs2" ], "Resource": "*" } ] }
上述權限策略授予了所有OSS Bucket的權限。如果您需要指定OSS的讀寫權限,請按以下示例修改權限策略,將以下策略腳本中的
mybackups
替換為您的OSS名稱。更多OSS細粒度授權配置信息,請參見通過RAM對OSS進行權限管理。{ "Version": "1", "Statement": [ { "Action": [ "oss:PutObject", "oss:GetObject", "oss:DeleteObject", "oss:GetBucket", "oss:ListObjects", "oss:ListBuckets", "oss:GetBucketStat" ], "Resource": [ "acs:oss:*:*:mybackups", "acs:oss:*:*:mybackups/*" ], "Effect": "Allow" }, { "Effect": "Allow", "Action": [ "ecs:CreateSnapshot", "ecs:DeleteSnapshot", "ecs:DescribeSnapshotGroups", "ecs:CreateAutoSnapshotPolicy", "ecs:ApplyAutoSnapshotPolicy", "ecs:CancelAutoSnapshotPolicy", "ecs:DeleteAutoSnapshotPolicy", "ecs:DescribeAutoSnapshotPolicyEX", "ecs:ModifyAutoSnapshotPolicyEx", "ecs:DescribeSnapshots", "ecs:DescribeInstances", "ecs:CopySnapshot", "ecs:CreateSnapshotGroup", "ecs:DeleteSnapshotGroup" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "hbr:CreateVault", "hbr:CreateBackupJob", "hbr:DescribeVaults", "hbr:DescribeBackupJobs2", "hbr:DescribeRestoreJobs", "hbr:SearchHistoricalSnapshots", "hbr:CreateRestoreJob", "hbr:AddContainerCluster", "hbr:DescribeContainerCluster", "hbr:DescribeRestoreJobs2" ], "Resource": "*" } ] }
為RAM用戶添加上述自定義的權限。具體操作,請參見為RAM用戶授權。
為RAM用戶創建AccessKey。具體操作,請參見獲取AccessKey。
在ACK專有集群中創建Secret。
為了保證您的AccessKey信息只在您的集群內安全使用,您需要先在集群中使用AccessKey信息部署一個名為alibaba-addon-secret的Secret資源,以降低泄露風險。
執行以下命令,創建命名空間csdr。
kubectl create ns csdr
執行以下命令,創建名為alibaba-addon-secret的Secret資源。
kubectl -n csdr create secret generic alibaba-addon-secret --from-literal='access-key-id=<your AccessKey ID>' --from-literal='access-key-secret=<your AccessKey Secret>'
您需要將上述代碼中的
<your AccessKey ID>
和<your AccessKey Secret>
替換為您在上一步獲取的AccessKey信息。說明如果您在安裝migrate-controller備份服務組件后補充創建的Secret,請完成該創建后重啟kube-system下的migrate-controller組件。
步驟二:安裝migrate-controller備份服務組件
安裝migrate-controller備份服務組件。具體操作,請參見步驟一:安裝migrate-controller備份服務組件。
注冊集群
v1.7.7及以上版本的migrate-controller組件支持阿里云云盤存儲備份跨地域恢復。請更新onectl版本至v1.1.0,并執行onectl ram-user revoke --addon migrate-controller
命令,為原RAM用戶補充授權。
通過onectl安裝組件并配置權限(推薦)
在本地安裝配置onectl。具體操作,請參見通過onectl管理注冊集群。
執行以下命令,為migrate-controller組件配置RAM權限。
onectl ram-user grant --addon migrate-controller
預期輸出:
Ram policy ack-one-registered-cluster-policy-migrate-controller granted to ram user ack-one-user-ce313528c3 successfully.
執行以下命令,安裝備份服務組件。
onectl addon install migrate-controller
預期輸出:
Addon migrate-controller, version **** installed.
使用onectl配置的OSS權限范圍為所有的OSS Bucket,如需配置指定的OSS Bucket的權限,請修改onectl生成的OSS權限,或者選擇手動安裝組件并配置權限。
修改OSS權限:修改已創建的自定義權限策略內容為以下內容。如何修改策略,請參見修改自定義權限策略內容和備注。
說明替換以下策略代碼中
mybackups
為您的OSS名稱。更多OSS細粒度的授權配置信息,請參見通過RAM對OSS進行權限管理。{ "Version": "1", "Statement": [ { "Action": [ "oss:PutObject", "oss:GetObject", "oss:DeleteObject", "oss:GetBucket", "oss:ListObjects", "oss:ListBuckets", "oss:GetBucketStat" ], "Resource": [ "acs:oss:*:*:mybackups", "acs:oss:*:*:mybackups/*" ], "Effect": "Allow" }, { "Effect": "Allow", "Action": [ "ecs:CreateSnapshot", "ecs:DeleteSnapshot", "ecs:DescribeSnapshotGroups", "ecs:CreateAutoSnapshotPolicy", "ecs:ApplyAutoSnapshotPolicy", "ecs:CancelAutoSnapshotPolicy", "ecs:DeleteAutoSnapshotPolicy", "ecs:DescribeAutoSnapshotPolicyEX", "ecs:ModifyAutoSnapshotPolicyEx", "ecs:DescribeSnapshots", "ecs:DescribeInstances", "ecs:CopySnapshot", "ecs:CreateSnapshotGroup", "ecs:DeleteSnapshotGroup" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "hbr:CreateVault", "hbr:CreateBackupJob", "hbr:DescribeVaults", "hbr:DescribeBackupJobs2", "hbr:DescribeRestoreJobs", "hbr:SearchHistoricalSnapshots", "hbr:CreateRestoreJob", "hbr:AddContainerCluster", "hbr:DescribeContainerCluster", "hbr:DescribeRestoreJobs2" ], "Resource": "*" } ] }
(可選)配置指向注冊集群與OSS同一地域的OSS內網網段的路由。
已通過CEN、高速通道、專線、VPN等方式與云上VPC互通的注冊集群,為提高備份數據的拉取速度,當注冊集群與OSS處于同一地域時,備份中心會自動選擇以內網方式訪問OSS域名,此時,您需要配置指向該地域OSS內網網段的路由。
關于線下IDC接入云上VPC的相關內容,請參見接入方式介紹。
關于OSS內網域名與VIP網段對照表,請參見OSS內網域名與VIP網段對照表。
通過控制臺安裝組件并配置權限
步驟一:配置相關權限
您需要為注冊集群創建RAM用戶,為RAM用戶添加訪問云資源的權限,然后創建AccessKey。
創建RAM用戶。具體操作,請參見創建RAM用戶。
創建如下自定義權限策略。具體操作,請參見通過腳本編輯模式創建自定義權限策略。
以下策略腳本中,
oss:****
為OSS權限策略,ecs:****
為ECS云盤快照相關權限策略,hbr:****
為云備份權限策略。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:PutObject", "oss:GetObject", "oss:DeleteObject", "oss:GetBucket", "oss:ListObjects", "oss:ListBuckets", "oss:GetBucketStat" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecs:CreateSnapshot", "ecs:DeleteSnapshot", "ecs:DescribeSnapshotGroups", "ecs:CreateAutoSnapshotPolicy", "ecs:ApplyAutoSnapshotPolicy", "ecs:CancelAutoSnapshotPolicy", "ecs:DeleteAutoSnapshotPolicy", "ecs:DescribeAutoSnapshotPolicyEX", "ecs:ModifyAutoSnapshotPolicyEx", "ecs:DescribeSnapshots", "ecs:DescribeInstances", "ecs:CopySnapshot", "ecs:CreateSnapshotGroup", "ecs:DeleteSnapshotGroup" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "hbr:CreateVault", "hbr:CreateBackupJob", "hbr:DescribeVaults", "hbr:DescribeBackupJobs2", "hbr:DescribeRestoreJobs", "hbr:SearchHistoricalSnapshots", "hbr:CreateRestoreJob", "hbr:AddContainerCluster", "hbr:DescribeContainerCluster", "hbr:DescribeRestoreJobs2" ], "Resource": "*" } ] }
上述權限策略授予了所有OSS Bucket的權限。如果您需要指定OSS的讀寫權限,請按以下示例修改權限策略,將以下策略腳本中的
mybackups
替換為您的OSS名稱。更多OSS細粒度授權配置信息,請參見通過RAM對OSS進行權限管理。{ "Version": "1", "Statement": [ { "Action": [ "oss:PutObject", "oss:GetObject", "oss:DeleteObject", "oss:GetBucket", "oss:ListObjects", "oss:ListBuckets", "oss:GetBucketStat" ], "Resource": [ "acs:oss:*:*:mybackups", "acs:oss:*:*:mybackups/*" ], "Effect": "Allow" }, { "Effect": "Allow", "Action": [ "ecs:CreateSnapshot", "ecs:DeleteSnapshot", "ecs:DescribeSnapshotGroups", "ecs:CreateAutoSnapshotPolicy", "ecs:ApplyAutoSnapshotPolicy", "ecs:CancelAutoSnapshotPolicy", "ecs:DeleteAutoSnapshotPolicy", "ecs:DescribeAutoSnapshotPolicyEX", "ecs:ModifyAutoSnapshotPolicyEx", "ecs:DescribeSnapshots", "ecs:DescribeInstances", "ecs:CopySnapshot", "ecs:CreateSnapshotGroup", "ecs:DeleteSnapshotGroup" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "hbr:CreateVault", "hbr:CreateBackupJob", "hbr:DescribeVaults", "hbr:DescribeBackupJobs2", "hbr:DescribeRestoreJobs", "hbr:SearchHistoricalSnapshots", "hbr:CreateRestoreJob", "hbr:AddContainerCluster", "hbr:DescribeContainerCluster", "hbr:DescribeRestoreJobs2" ], "Resource": "*" } ] }
為RAM用戶添加已創建的自定義權限。具體操作,請參見為RAM用戶授權。
為RAM用戶創建AccessKey。具體操作,請參見獲取AccessKey。
在集群中創建Secret。
為了保證您的AccessKey信息只在您的集群內安全使用,您需要先在集群中使用AccessKey信息部署一個名為alibaba-addon-secret的Secret資源,以降低泄露風險。
執行以下命令,創建命名空間csdr。
kubectl create ns csdr
執行以下命令,創建名為alibaba-addon-secret的Secret資源。
kubectl -n csdr create secret generic alibaba-addon-secret --from-literal='access-key-id=<your AccessKey ID>' --from-literal='access-key-secret=<your AccessKey Secret>'
您需要將上述代碼中的
<your AccessKey ID>
和<your AccessKey Secret>
替換為您在上一步獲取的AccessKey信息。
步驟二:安裝migrate-controller備份服務組件
安裝migrate-controller備份服務組件。具體操作,請參見步驟一:安裝migrate-controller備份服務組件。
(可選)步驟三:配置指向注冊集群與OSS同一地域的OSS內網網段的路由
已通過CEN、高速通道、專線、VPN等方式與云上VPC互通的注冊集群,為提高備份數據的拉取速度,當注冊集群與OSS處于同一地域時,備份中心會自動選擇以內網方式訪問OSS域名,此時,您需要配置指向該地域OSS內網網段的路由。
關于線下IDC接入云上VPC的相關內容,請參見接入方式介紹。
關于OSS內網域名與VIP網段對照表,請參見OSS內網域名與VIP網段對照表。