日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過備份中心實現低版本Kubernetes集群應用遷移

通過備份中心,您可以將Flexvolume集群中的應用遷移至CSI集群中,也可以將低版本的Kubernetes集群應用遷移至新版本集群中。備份中心解決了跨存儲插件、跨版本集群間應用遷移的一些問題,例如,需要備份未被應用使用到的Cluster級別資源、API Version自動切換至恢復集群支持的版本等。本文以1.16版本Flexvolume集群的應用遷移至1.28版本的CSI集群為例,介紹如何使用備份中心進行集群應用遷移。

注意事項

  • 備份集群與恢復集群需處于同一地域,且備份集群為1.16或以上版本。考慮到apiVersion兼容問題,不建議您通過備份中心將高版本集群中的應用遷移至低版本的集群中。

  • 備份應用時,正在刪除的資源不會被備份。

  • 如需恢復為容器網絡文件系統管理的NAS類型(即恢復時轉換為存儲類列選擇為alibabacloud-cnfs-nas),您需要先創建StorageClass。具體操作,請參見通過CNFS管理NAS文件系統(推薦)

  • 恢復應用時,資源將優先按照恢復集群版本推薦的apiVersion進行恢復。若某資源在兩個版本中無同時支持的apiVersion版本,恢復時您需要手動部署。例如:

    • 1.16版本集群Deployment支持extensions/v1beta1apps/v1beta1apps/v1beta2以及apps/v1,恢復至1.28集群時將全部恢復至apps/v1

    • 1.16版本集群Ingress支持extensions/v1beta1networking.k8s.io/v1beta1,無法將其直接恢復至1.22及以上版本集群。

    更多集群版本API變更信息,請參見ACK版本發布說明Deprecated API Migration Guide

    重要

    在1.16版本集群中,appsrbac.authorization.k8s.io等groups已支持v1,升級至1.28版本集群時,您需要手動恢復Ingress、CronJob等資源。

適用場景

  • 跨存儲插件應用部署

    新建1.20及以后版本的ACK集群已不再支持Flexvolume存儲插件,您可以通過備份中心將Flexvolume集群中運行的有狀態應用遷移到CSI集群中。

    說明

    使用Flexvolume和CSI存儲插件的集群均支持遷移,新的恢復集群僅支持使用CSI存儲插件。

  • Kubernetes版本跨度較大的集群切換

    某些場景下,您可能需要將低版本(不低于1.16版本)集群中的業務遷移至新集群。例如,網絡插件從Flannel切換至Terway等。備份中心可實現版本跨度較大的集群應用遷移,同時自適應修正Kubernetes版本升級后的應用模板API Version等基本配置。

前提條件

  • 已開通云備份(Cloud Backup)服務。對NAS、OSS、本地盤類型存儲卷進行備份時,以及在混合云場景中,備份中心需要使用云備份進行文件備份。具體操作,請參見云備份

  • 已創建恢復集群,為確保能正常使用ECS快照恢復云盤數據,建議恢復集群為v1.18及以上版本。具體操作,請參見創建ACK托管集群創建ACK專有集群創建注冊集群并接入本地數據中心集群

    重要
    • 恢復集群必須使用CSI存儲插件,使用Flexvolume存儲插件或通過csi-compatible-controller組件同時使用CSI Flexvolume存儲插件的集群不支持恢復。

    • 備份中心關注業務應用的備份和恢復。在恢復任務之前,您需要在恢復集群中預先安裝并配置好所需的系統組件。例如:

      • ACR免密組件:您需要為恢復集群重新授權并配置acr-configuration。

      • ALB Ingress組件:您需要預先配置ALBConfig等。

  • 已安裝備份服務組件并完成對應權限的配置。具體操作,請參見安裝migrate-controller備份服務組件并配置權限

  • 如需使用云盤快照備份數據卷,需要安裝v1.1.0或以上版本的CSI插件。關于如何安裝CSI插件,請參見安裝與升級CSI組件

  • 已通過kubectl工具連接集群

遷移流程

備份集群使用的存儲插件類型不同,遷移流程略有不同,具體流程如下所示。

  • 備份集群無存儲應用

image
  • 備份集群使用Flexvolume存儲插件

image

  • 備份集群使用CSI存儲插件

image

遷移步驟

本文以1.16版本的ACK Flexvolume集群為例,分別以數據換源以及數據不換源方式展示如何將集群中的應用及配置項等資源,以及將存儲卷數據遷移至1.28版本的ACK CSI集群。對于無存儲的應用遷移,或者備份集群使用CSI存儲插件的場景,可以簡化其中可選部分的步驟。

重要

使用數據不換源方式時,需要將備份集群的PV的回收策略改為Retain,避免刪除存儲卷時觸發數據清理。

kubectl patch pv/<pv-name> --type='json' -p '[{"op":"replace","path":"/spec/persistentVolumeReclaimPolicy","value":"Retain"}]'

類別

概念

適用場景

數據換源

在備份集群中備份存儲卷中的數據,同步一份新數據給恢復集群的應用使用,即最終有兩套完全獨立的存儲。數據恢復流程使用動態掛載,可以通過轉換存儲類實現存儲類型的變更,例如,將NAS存儲轉變為云盤存儲。

  • 備份集群與恢復集群的應用需要使用獨立的兩套數據。

  • 恢復時需要轉換存儲類。

數據不換源

不換源方式將根據備份的存儲聲明、存儲卷在恢復流程中使用靜態掛載,因此使用的是原數據源,例如云盤ID、OSS Bucket等。如果您正在進行Flexvolume集群到CSI集群的應用遷移,由于YAML不通用,您需要手動創建靜態存儲聲明、存儲卷。

業務在備份恢復期間無法暫停寫入,并且業務有強數據一致性的需求。

環境準備

類別

備份集群

恢復集群

集群版本

1.16.9-aliyun.1

1.28.3-aliyun.1

運行時版本

Docker 19.03.5

containerd 1.6.20

存儲組件版本

Flexvolume:v1.14.8.109-649dc5a-aliyun

CSI:v1.26.5-56d1e30-aliyun

其他

  • 部署測試應用,該應用的apiVersion為extensions/v1beta1。

  • 應用掛載云盤和NAS。

已安裝csi-plugin和csi-provisioner存儲組件。更多信息,請參見管理組件

步驟一:部署測試應用

  1. 執行以下命令,部署云盤動態存儲卷。

    其中alicloud-disk-topology請替換為您集群中Flexvolume存儲插件默認安裝的云盤存儲類名稱。

    cat << EOF | kubectl apply -f -
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: disk-essd
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: alicloud-disk-topology
      resources:
        requests:
          storage: 20Gi
    EOF
  2. 執行以下命令,部署NAS靜態存儲卷。

    其中server需要替換為賬號下NAS文件系統的掛載點。

    cat << EOF | kubectl apply -f -
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-nas
    spec:
      capacity:
        storage: 5Gi
      storageClassName: nas
      accessModes:
        - ReadWriteMany
      flexVolume:
        driver: "alicloud/nas"
        options:
          server: "1758axxxxx-xxxxx.cn-beijing.nas.aliyuncs.com"
          vers: "3"
          options: "nolock,tcp,noresvport"
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-nas
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: nas
      resources:
        requests:
          storage: 5Gi
    EOF
  3. 執行以下命令,部署應用,該應用同時掛載上述云盤和NAS存儲卷。

    以下代碼中的apiVersion使用了extensions/v1beta1,該apiVersion在1.28集群已被廢棄。

    cat << EOF | kubectl apply -f -
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            ports:
            - containerPort: 80
            volumeMounts:
              - name: nas
                mountPath: /cold
              - name: disk
                mountPath: /hot
          volumes:
            - name: nas
              persistentVolumeClaim:
                claimName: pvc-nas
            - name: disk
              persistentVolumeClaim:
                claimName: disk-essd   
    EOF
  4. 執行以下命令,確認部署的應用已正常啟動。

    kubectl get pod -l app=nginx

    預期輸出:

    NAME                    READY   STATUS    RESTARTS   AGE
    nginx-5ffbc895b-xxxxx   1/1     Running   0          2m28s

步驟二:在備份集群中安裝備份中心

  1. 在備份集群安裝備份服務組件。具體操作,請參見安裝migrate-controller備份服務組件

    說明
    • 1.16版本以上的集群,可以直接在組件中心安裝備份服務組件,且組件為v1.7.6及以上版本。

    • 若您的備份集群為ACK專有版集群或注冊集群,或使用的存儲插件非CSI(例如Flexvolume),則需要額外的權限配置。具體操作,請參見注冊集群

  2. (可選)若您的集群為Flexvolume集群,則執行以下命令,確認已經配置好相關權限。

    kubectl -n csdr get secret alibaba-addon-secret
  3. (可選)若您的集群為Flexvolume集群,則執行以下命令,增加kube-system命名空間下部署migrate-controller的USE_FLEXVOLUME環境變量。

    重要

    在Flexvolume集群中,migrate-controller備份服務組件安裝完成后,migrate-controller的Pod將異常退出,打開集群應用備份頁面將出現404報錯。此時,您需要編輯組件的YAML,增加USE_FLEXVOLUME環境變量。

    kubectl -n kube-system patch deployment migrate-controller --type json -p '[{"op":"add","path":"/spec/template/spec/containers/0/env/-","value":{"name":"USE_FLEXVOLUME","value":"true"}}]'
  4. 執行以下命令,確認備份服務組件已經正常運行。

    kubectl -n kube-system get pod -l app=migrate-controller
    kubectl -n csdr get pod 

    預期輸出:

    NAME                                  READY   STATUS    RESTARTS   AGE
    migrate-controller-6c8b9c6cbf-967x7   1/1     Running   0          3m55s
    NAME                               READY   STATUS    RESTARTS   AGE
    csdr-controller-69787f6dc8-f886h   1/1     Running   0          3m39s
    csdr-velero-58494f6bf4-52mv6       1/1     Running   0          3m37s

步驟三:在備份集群中創建備份

  1. 在與備份集群相同的地域創建以cnfs-oss-*格式命名的OSS Bucket,用于存放備份。具體操作,請參見創建存儲空間

    說明

    ACK托管集群默認擁有cnfs-oss-*開頭的OSS Bucket權限,若您的Bucket命名格式不符合要求,同樣需要額外的權限配置。具體操作,請參見通過控制臺安裝組件并配置權限

  2. 創建備份倉庫。具體操作,請參見創建備份倉庫

  3. 執行以下命令,創建立即備份任務。

    關于通過控制臺設置備份相關配置項,請參見集群內備份和恢復應用。本步驟根據示例場景,提供建議的配置信息,您可以根據實際場景進行相應調整。

    cat << EOF | kubectl apply -f -
    apiVersion: csdr.alibabacloud.com/v1beta1
    kind: ApplicationBackup
    metadata:
      annotations:
        csdr.alibabacloud.com/backuplocations: '{"name":"<備份倉庫名稱>","region":"<regionID如cn-beijing>","bucket":"<備份倉庫關聯的OSSBucket名稱>","provider":"alibabacloud"}'
      labels:
        csdr/schedule-name: fake-name
      name: <備份名稱>
      namespace: csdr
    spec:
      excludedNamespaces:
      - csdr
      - kube-system
      - kube-public
      - kube-node-lease
      excludedResources:
      - storageclasses
      - clusterroles
      - clusterrolebindings
      - events
      - persistentvolumeclaims
      - persistentvolumes
      includeClusterResources: true
      pvBackup:
        defaultPvBackup: true
      storageLocation: <備份倉庫名稱>
      ttl: 720h0m0s
    EOF

    參數

    說明

    excludedNamespaces

    備份過程中排除的命名空間。建議排除以下命名空間:

    • csdr:備份中心的工作命名空間。備份中心有集群間的同步邏輯,無需手動備份csdr命名空間下的備份、恢復等任務。否則可能導致非預期行為。

    • kube-systemkube-publickube-node-lease:ACK集群默認存在的命名空間,因集群參數、配置等不同,無法在集群之間簡單恢復。

    excludedResources

    排除資源。可根據業務需求設置。

    includeClusterResources

    是否備份Cluster級別的資源,例如StorageClass、CRD、Webhook等。

    • true:備份所有Cluster級別資源。

    • false:僅備份被選擇的命名空間中的Namespace級別資源引用的Cluster級別資源。例如,備份Pod時,引用的ServiceAccount授權了某ClusterRole,該ClusterRole將被自動備份;備份CR時,CRD將被自動備份。

    說明

    通過容器服務管理控制臺創建的備份任務,默認IncludeClusterResources字段為false

    defaultPvBackup

    是否備份存儲卷數據。

    • true:備份應用以及Running Pod使用的存儲卷數據。

    • false:僅備份應用。

    重要
    • 對于Kubernetes版本及CSI版本均為1.18及以上版本的集群,默認使用ECS快照備份云盤數據;對于其他存儲類型的數據,或大于等于1.16且小于1.18版本集群的云盤數據,均使用云備份備份。

    • 對于未被Running Pod使用的存儲卷,僅支持通過數據不換源的方式在新的集群中手動創建靜態存儲卷、存儲聲明,并指定原存儲源,如云盤ID、OSS Bucket等。

    • 若業務有數據強一致性需求,請您在備份期間暫停業務的數據寫入。或者您可以選擇數據不換源方式,在備份時僅備份應用。

  4. 執行以下命令,查詢備份任務狀態。

    kubectl -ncsdr describe applicationbackup <備份名稱>

    預期輸出中StatusPhase變為Completed,表明備份任務創建成功。

  5. 執行以下命令,確認此次備份的資源列表Resource List。

    kubectl -ncsdr get pod | grep csdr-velero
    kubectl -ncsdr exec -it <csdr-velero的pod名稱> -- /velero describe backup <備份名稱> --details

    您可以查看列表中未被備份的資源,通過調整備份配置項及時重新備份。

    Resource List:
      apiextensions.k8s.io/v1/CustomResourceDefinition:
        - volumesnapshots.snapshot.storage.k8s.io
      v1/Endpoints:
        - default/kubernetes
      v1/Namespace:
        - default
      v1/PersistentVolume:
        - d-2ze88915lz1il01v1yeq
        - pv-nas
      v1/PersistentVolumeClaim:
        - default/disk-essd
        - default/pvc-nas
      v1/Secret:
        - default/default-token-n7jss
        - default/oss-secret
        - default/osssecret
      v1/Service:
        - default/kubernetes
      v1/ServiceAccount:
        - default/default
      ...

步驟四:在恢復集群中安裝備份中心

  1. 在恢復集群中安裝備份中心。具體操作,請參見步驟二:在備份集群中安裝備份中心

  2. 將上述備份倉庫關聯到恢復集群。

    1. 登錄容器服務管理控制臺

    2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇運維管理 > 應用備份

    3. 應用備份頁面,單擊立即恢復

    4. 選擇備份使用的備份倉庫,單擊初始化倉庫,并等待備份同步至本集群。

(可選)步驟五:手動在恢復集群中創建存儲聲明及存儲卷

多數場景中,您只需要根據以下步驟六直接在恢復集群中創建恢復任務,由備份中心組件根據備份自動生成存儲聲明及存儲卷。

備份中心執行恢復任務時,為保護已有數據,遇到同名的存儲聲明及存儲卷將跳過恢復,即不重建也不覆蓋存儲卷內的數據。因此,遇到以下場景,您可以在恢復任務之前預先創建存儲聲明及存儲卷,以實現更靈活的恢復。

  • 備份時備份了存儲卷,但部分存儲卷中存儲了日志等無需遷移的數據,可以預先創建空的存儲卷。

  • 備份時備份了存儲卷,但備份集群中未被Running Pod使用的存儲卷同樣需要遷移至恢復集群。

  • 備份時未備份存儲卷,且excludedResources里包含persistentvolumeclaims與persistentvolumes,或涉及Flexvolume集群至CSI集群的應用遷移。

具體操作步驟如下:

重要

云盤不支持跨可用區掛載,若您在恢復集群中切換了可用區,可選擇以下任一方式處理。

  1. (可選)若您的備份集群為Flexvolume集群,由于Flexvolume與CSI的存儲卷、存儲聲明的YAML不同,您可以使用命令行工具批量切換YAML。具體操作,請參見使用Flexvolume2CSI命令行工具批量轉換YAML

  2. 執行以下命令,部署通過Flexvolume2CSI獲取的CSI YAML文件。

    其中outputfile.txt為使用命令行工具切換YAML的輸出。

    展開查看輸出outputfile.txt文件

    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      labels:
        alicloud-pvname: d-2ze88915lz1il0**** # 部署時動態創建的云盤。
      name: d-2ze88915lz1il0****
    spec:
      accessModes:
      - ReadWriteOnce
      capacity:
        storage: 20Gi
      csi:
        driver: diskplugin.csi.alibabacloud.com
        fsType: ext4
        volumeHandle: d-2ze88915lz1il0****
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.diskplugin.csi.alibabacloud.com/zone
              operator: In
              values:
              - cn-beijing-i
      persistentVolumeReclaimPolicy: Delete
      storageClassName: alicloud-disk-essd
      volumeMode: Filesystem
    
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: disk-essd
      namespace: default
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi
      selector:
        matchLabels:
          alicloud-pvname: d-2ze88915lz1il0****
      storageClassName: alicloud-disk-essd
      volumeMode: Filesystem
    
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      labels:
        alicloud-pvname: pv-nas
      name: pv-nas
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 5Gi
      csi:
        driver: nasplugin.csi.alibabacloud.com
        volumeAttributes:
          server: 1758axxxxx-xxxxx.cn-beijing.nas.aliyuncs.com
        volumeHandle: pv-nas
      mountOptions:
      - vers=3
      - nolock,tcp,noresvport
      persistentVolumeReclaimPolicy: Retain
      storageClassName: nas
      volumeMode: Filesystem
    
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-nas
      namespace: default
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
      selector:
        matchLabels:
          alicloud-pvname: pv-nas
      storageClassName: nas
      volumeMode: Filesystem
    
    kubectl apply -f outputfile.txt
  3. 執行以下命令,確認存儲聲明在恢復集群中已處于Bound狀態。

    kubectl get pvc 

    預期輸出:

    NAME        STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS         AGE
    disk-essd   Bound    d-2ze88915lz1il0xxxxxx   20Gi       RWO            alicloud-disk-essd   29m
    pvc-nas     Bound    pv-nas                   5Gi        RWX            nas                  29m

步驟六:在恢復集群中創建恢復任務

重要
  • 若恢復集群中已存在同名的資源,則恢復任務將跳過該資源。

  • 備份中心關注業務應用的備份和恢復。在恢復任務之前,您需要在恢復集群中預先安裝并配置好所需的系統組件。例如:

    • ACR免密組件:您需要為恢復集群重新授權并配置acr-configuration。

    • ALB Ingress組件:您需要預先配置ALBConfig等。

說明

Service資源恢復時,根據Service類型的不同將進行如下適配:

  • NodePort類型的Service:跨集群恢復時,默認保留端口號。

  • LoadBalancer類型的Service:ExternalTrafficPolicy為Local時,HealthCheckNodePort默認使用隨機端口號。若您需要保留端口號,請在創建恢復任務時,設置spec.preserveNodePorts: true

    • 在備份集群中由指定已有SLB的Service,恢復時將使用原有的SLB并默認關閉強制監聽,您需要前往SLB控制臺配置監聽。

    • 在備份集群中由CCM管理SLB的Service,恢復時將由CCM創建新的SLB實例,更多信息,請參見Service的負載均衡配置注意事項

若您創建備份時備份了存儲卷,即使用數據換源的方式備份恢復。您可以通過存儲類轉換(convertedarg)實現存儲類型的變更。例如,將NAS存儲變為云盤存儲。您可以根據業務需求,選擇轉換的目標存儲類。

  • 本示例中,由于備份集群是1.16的Flexvolume集群,云盤存儲卷備份使用了云備份,因此可以為存儲聲明disk-essd選擇目標存儲類alicloud-disk(即轉換為CSI云盤類,默認為alicloud-disk-topology-alltype)。若您的備份集群為v1.18及以上的CSI集群,則無需對云盤存儲卷做相關配置。

  • 本示例中,還將Flexvolume NAS存儲卷轉換為CNFS管理的NAS隔離存儲卷,即為存儲聲明pvc-nas選擇目標存儲類alibabacloud-cnfs-nas。若您的集群不存在alibabacloud-cnfs-nas存儲類,請參見通過CNFS管理NAS文件系統(推薦)

具體操作步驟如下:

  1. 執行以下命令,創建恢復任務。

    關于通過控制臺設置恢復任務的相關配置項,請參見恢復應用和數據卷。本步驟根據示例場景提供了建議的配置信息,您可以根據實際場景進行相應調整。

    cat << EOF | kubectl apply -f -
    apiVersion: csdr.alibabacloud.com/v1beta1
    kind: ApplicationRestore
    metadata:
        csdr.alibabacloud.com/backuplocations: >-
           '{"name":"<備份倉庫名稱>","region":"<regionID如cn-beijing>","bucket":"<備份倉庫關聯的OSSbucket名稱>","provider":"alibabacloud"}'
      name: <恢復名稱>
      namespace: csdr
    spec:
      backupName: <備份名稱>
      excludedNamespaces:
      - arms-prom
      excludedResources:
      - secrets
      appRestoreOnly: false
      convertedarg:
      - convertToStorageClassType: alicloud-disk-topology-alltype
        namespace: default
        persistentVolumeClaim: alicloud-disk
      - convertToStorageClassType: alibabacloud-cnfs-nas
        namespace: default
        persistentVolumeClaim: pvc-nas
      namespaceMapping:
        <backupNamespace>: <restoreNamespace>
    EOF

    參數

    說明

    excludedNamespaces

    排除命名空間。對備份資源列表中不需要的命名空間進行排除。

    excludedResources

    排除資源。對備份資源列表中不需要的資源類型進行排除。

    appRestoreOnly

    對于已備份存儲卷的備份,是否恢復存儲卷。

    • true:恢復時創建動態存儲卷、存儲聲明,指向新的數據源。控制臺創建的備份任務默認為true。

    • false:不創建,需要預先手動部署靜態卷。

    說明

    一般情況下,數據換源方式此處需設置為true,數據不換源方式此處需設置為false

    convertedarg

    轉換存儲類列表。備份中的FileSystem數據類型的存儲卷(OSS、NAS、CPFS、本地存儲等)的存儲聲明,在當前集群中恢復為目標存儲類,實現例如NAS存儲至云盤存儲的轉換。

    • convertToStorageClassType:目標存儲類,需要在當前集群已存在。當前版本僅支持選擇云盤或NAS類型的存儲類。

    • namespace:存儲聲明所在的命名空間。

    • persistentVolumeClaim:存儲聲明名稱。

    您可以通過kubectl -ncsdr describe <backup-name>查詢備份的存儲聲明信息,在輸出的status.resourceList.dataResource.pvcBackupInfo列表中dataType字段為數據類型,分為FileSystem與Snapshot,nameSpace與pvcName分別為存儲聲明所在的命名空間與存儲聲明名稱。

  2. 執行以下命令,查詢恢復任務的狀態。

    kubectl -ncsdr describe applicationrestore <備份名稱>

    預期輸出中StatusPhase變為Completed,表明任務恢復成功。

  3. 執行以下命令,確認是否有恢復失敗的資源及失敗的原因。

    kubectl -ncsdr get pod | grep csdr-velero
    kubectl -ncsdr exec -it <csdr-velero的pod名稱> -- /velero describe restore <恢復名稱> --details

    預期輸出:

    Warnings:
      Velero:     <none>
      Cluster:  could not restore, ClusterRoleBinding "kubernetes-proxy" already exists. Warning: the in-cluster version is different than the backed-up version.
      Namespaces:
        demo-ns:  could not restore, ConfigMap "kube-root-ca.crt" already exists. Warning: the in-cluster version is different than the backed-up version.
                   could not restore, Endpoints "kubernetes" already exists. Warning: the in-cluster version is different than the backed-up version.
                   could not restore, Service "kubernetes" already exists. Warning: the in-cluster version is different than the backed-up version.
    
    Errors:
      Velero:     <none>
      Cluster:    <none>
      Namespaces:
        demo-ns:  error restoring endpoints/xxxxxx/kubernetes: Endpoints "kubernetes" is invalid: subsets[0].addresses[0].ip: Invalid value: "169.254.128.9": may not be in the link-local range (169.xxx.0.0/16, fe80::/10)
                   error restoring endpointslices.discovery.k8s.io/demo-ns/kubernetes: EndpointSlice.discovery.k8s.io "kubernetes" is invalid: endpoints[0].addresses[0]: Invalid value: "169.xxx.128.9": may not be in the link-local range (169.xxx.0.0/16, fe80::/10)
                   error restoring services/xxxxxx/kubernetes-extranet: Service "kubernetes-extranet" is invalid: spec.ports[0].nodePort: Invalid value: 31882: provided port is already allocated

    通過以上預期輸出,您可以查看恢復集群中是否有未被恢復的資源,例如,Warnings中有資源已存在的問題,且資源已被跳過。Errors中有NodePort復用的問題,跨集群恢復時會保留原有端口。

  4. 確認恢復的應用是否正常運行。

    1. 確認應用恢復后,是否存在由于業務限制、容器運行異常或其他原因導致資源處于異常狀態,如有,請進行手動修復。

    2. 驗證恢復后,Nginx應用的apiVersion已默認調整至1.28版本的集群推薦使用的apps/v1。