若本地或三方云集群,無法通過公網/內網方式納管到天翼云分布式容器云平臺CCE One時,將不能使用三方單集群控制臺相關運維能力,也即無法通過前端操作指引方式對集群應用進行必要的備份和恢復。此時,可考慮通過登錄用戶集群離線備份恢復方式進行操作。
適用場景
本地或三方云集群未納管至分布式容器云,需在集群內實現備份遷移一體化操作,應用快捷上云。
操作指引
步驟一:集群評估與納管
在這個階段,您將根據源集群的現狀來評估適合遷移的目標集群類型。可以基于必要的開源工具自動或手工收集源集群的信息,包括Kubernetes版本、規模、工作負載、存儲等數據,并根據收集到的數據考慮合適的目標集群信息。
為方便后續的數據備份與恢復,或者基于聯邦的細粒度應用遷移,您需要將源集群注冊到天翼云CCE One注冊集群;
步驟二:數據遷移
在這個階段,您將把鏡像和相關依賴服務的數據遷移到云端。可基于天翼云上提供的專業云遷移、云備份等遷移工具,或基于云產品提供的專門遷移指引進行遷移。例如:
自建鏡像倉庫遷移請參考:遷移自建Harbor至容器鏡像服務企業版
自建數據庫如mysql遷移請參考:本地MySql遷移到RDS For MySQL
自建PostgreSQL遷移請參考:本地PostgreSQL遷移到RDS For PostgreSQL
自建Redis遷移請參考:自建Redis遷移到DCS
其他類型存儲遷移,請參考天翼云上對應云產品提供的遷移指引;
步驟三:云上集群創建與納管
在這個階段,您將評估目標集群所需規格信息并創建對應的天翼云CCE集群;然后將該目標集群關聯到分布式容器云平臺CCE One注冊集群。
云容器引擎允許用戶對集群資源進行個性化選取,以精準匹配其多樣化的業務訴求。如下所示的表中,列舉了集群的指標參數,并提供了參考規劃選擇;用戶應依據自身業務的確切需求,對相關設置做出合理調配,其間,我們建議盡可能保持與原集群性能配置的一致性水平。
| 主要指標參數 | 指標參數說明 | 本示例規劃 |
|---|---|---|
| kubernetes版本 |
| 1.29.3 |
| 網絡插件 |
| cubecni |
| apiserver訪問 | API Server的訪問需要依賴ELB實例,您可根據需要選擇合適的ELB規格,系統將根據該規格創建一個私網ELB實例。規格選擇請見:了解ELB實例規格 | 標準型I |
| 控制節點數 |
| 3 |
| 節點規格 | 分為控制節點規格和工作節點規格,如何選擇可以參考:集群規格推薦規劃 | 通用型4C8G |
| 工作節點操作系統 |
| ctyunos23.01 |
在目標CCE集群創建好后,需要進入天翼云分布式容器云平臺CCE One控制臺,將目標CCE集群關聯到CCE One的注冊集群以便支持后期的納管與聯邦調度能力;
步驟四:應用遷移
注意
由于遷移的源/目標集群任意之一無法被納管到天翼云CCE One注冊集群,如下備份/恢復操作均為離線操作。理論上可獨立于天翼云環境。
如下將僅以天翼云提供的ccse-backup插件為例進行介紹;當然,您也可以選擇基于三方或開源工具來進行集群備份和恢復,例如也可選擇,此時操作步驟請參考其官方指引。
1. 創建ccseone-managed命名空間和對應的sa
在遷移源和目標集群均需進行如下YAML創建:
apiVersion: v1
kind: Namespace
metadata:
name: ccseone-managed
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: ccseone-backup
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
component: ccseone-backup
name: ccseone-backup
namespace: ccseone-managed
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
component: ccseone-backup
name: ccseone-backup
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: ccseone-backup
subjects:
- kind: ServiceAccount
name: ccseone-backup
namespace: ccseone-managed2. 安裝helm,然后使用helm安裝ccse-backup-1.0.4.tgz
在遷移源和目標集群均需進行該步驟操作。
通過helm創建以及標準創建情況下,依賴從天翼云CRS拉取相關helm配置及鏡像地址,需要打通與云上服務的公網或內網訪問通道。
3. 源集群應用備份
提前創建oss桶,然后登錄到待備份集群,編寫備份job,job的編寫可參考backupexport.yaml,將存儲桶的相關配置填寫至pod的環境變量當中,注意配置待備份的命名空間以及對象。
apiVersion: batch/v1
kind: Job
metadata:
name: ccseone-backup-01
namespace: ccseone-managed
spec: # 如果job在900s內沒有完成,將被系統終止
activeDeadlineSeconds: 900
# 自動重試次數設為0,意味著如果Job失敗,不會自動重試
backoffLimit: 0
# 不用索引模式來處理完成狀態
completionMode: NonIndexed # Job完成所需的成功次數設為1
completions: 1
# job的并行執行個數設為1,表示同一時間只有一個Pod實例在運行
parallelism: 1
# Job是否可被暫停,false為不可暫停
suspend: false
template:
spec:
containers:
- command:
- ./backup
- export
- --exportName=ccseone-backup-01
- --clusterId=localcluster
- --jobName=ccseone-backup-01 # 命名空間,按需更改
- --includeNs=default # k8s資源,要求pv和pvc,按需更改
- --includeRs=pod,PersistentVolume,PersistentVolumeClaim,configmap # 需聲明需要備份pv
- --backupPv=true
env:
- name: OSS_PROVIDER
value: s3
- name: OSS_ACCESS_KEY_ID
value: a123456
- name: OSS_ACCESS_KEY_SECRET
value: a123456
- name: OSS_BUCKET
value: a123456
- name: OSS_ENDPOINT
value: 127.0.0.1:1234 # 鏡像來源:按需更改
image: ***.daliqc.cn/library/backup:1.3.1
imagePullPolicy: IfNotPresent
name: ccseone-backup-01
dnsPolicy: ClusterFirst
restartPolicy: Never
schedulerName: default-scheduler
securityContext: {}
serviceAccount: ccseone-backup
serviceAccountName: ccseone-backup
terminationGracePeriodSeconds: 30執行kubectl apply -f ,將job部署在待備份集群
4. 在目標集群中進行應用恢復
登錄到待恢復集群,編寫恢復job,job的編寫可參考backupimport.yaml,將存儲桶的相關配置填寫至pod的環境變量當中,注意配置待備份的命名空間以及對象。
apiVersion: batch/v1
kind: Job
metadata:
name: ccseone-backup-01
namespace: ccseone-managed
spec: # 如果job在900s內沒有完成,將被系統終止
activeDeadlineSeconds: 900
# 自動重試次數設為0,意味著如果Job失敗,不會自動重試
backoffLimit: 0
# 不用索引模式來處理完成狀態
completionMode: NonIndexed # Job完成所需的成功次數設為1
completions: 1
# job的并行執行個數設為1,表示同一時間只有一個Pod實例在運行
parallelism: 1
# Job是否可被暫停,false為不可暫停
suspend: false
template:
spec:
containers:
- command:
- ./backup
- export
- --exportName=ccseone-backup-01
- --clusterId=localcluster
- --jobName=ccseone-backup-01 # 命名空間,按需更改
- --includeNs=default # k8s資源,要求pv和pvc,按需更改
- --includeRs=pod,PersistentVolume,PersistentVolumeClaim,configmap # 需聲明需要備份pv
- --backupPv=true
env:
- name: OSS_PROVIDER
value: s3
- name: OSS_ACCESS_KEY_ID
value: a123456
- name: OSS_ACCESS_KEY_SECRET
value: a123456
- name: OSS_BUCKET
value: a123456
- name: OSS_ENDPOINT
value: 127.0.0.1:1234 # 鏡像來源:按需更改
image: ***.daliqc.cn/library/backup:1.3.1
imagePullPolicy: IfNotPresent
name: ccseone-backup-01
dnsPolicy: ClusterFirst
restartPolicy: Never
schedulerName: default-scheduler
securityContext: {}
serviceAccount: ccseone-backup
serviceAccountName: ccseone-backup
terminationGracePeriodSeconds: 30執行kubectl apply -f ,將job部署在待恢復集群。
5、驗證應用
根據業務規則驗證已恢復應用的正確性。