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

通過kubectl實現集群應用的備份和恢復

當您無法通過容器服務控制臺操作備份中心或容災備份需要自動化實現時,您可以通過kubectl命令行在備份集群和恢復集群中部署備份倉庫、應用備份、應用恢復的CR資源,以實現不同集群間應用的遷移。

前提條件

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

使用場景

  • 因權限問題,無法通過容器服務控制臺操作備份中心。

  • 容災備份流程需要自動化實現。

注意事項

  • 備份及恢復任務不能通過kubectl的delete命令簡單刪除。具體操作,請參見下文步驟四:刪除集群備份中心的相關資源

  • 關注備份中心組件migrate-controller版本發布情況,并及時升級。具體操作,請參見管理組件

  • 請勿刪除下文示例代碼中出現的配置參數,以免備份恢復失敗。

步驟一:創建備份倉庫

  1. 使用以下內容,在備份集群和恢復集群中創建backuplocation.yaml文件。

    apiVersion: csdr.alibabacloud.com/v1beta1
    kind: BackupLocation
    metadata:
      name: <yourBackuplocationName>
      namespace: csdr
    spec:
      backupSyncPeriod: 0s
      config:
        network: internal
        region: cn-beijing
      objectStorage:
        bucket: <cnfs-oss-yourBucketName>
        prefix: <subDir>
      provider: alibabacloud

    其余參數無需設置,保持默認配置即可。

    參數

    是否必選

    說明

    name

    備份倉庫的名稱,須符合K8s命名規則。

    network

    OSS Bucket的網絡訪問方式。取值:

    • internal:內網訪問模式,所有關聯集群與OSS Bucket需處于同一地域。

    • public:公網訪問模式,無地域限制。

    region

    OSS Bucket所在地域。

    bucket

    OSS Bucket名稱,需提前創建,且名稱需符合以cnfs-oss-****開頭的命名規則。

    prefix

    OSS Bucket子目錄。設定該參數后,實際備份內容存儲在此子目錄下。

  2. 分別在備份集群和恢復集群中執行以下命令,部署backuplocation對象。

    kubectl apply -f backuplocation.yaml
  3. 分別在備份集群和恢復集群中執行以下命令,查看backuplocation的狀態。

    kubectl describe backuplocation <yourBackuplocationName> -n csdr

    預期輸出:

    ...
    Status:
      Last Validation Time:  2022-12-08T04:00:22Z
      Message:               success by csdr-controller
      Phase:                 Available

    由預期輸出可看到,已創建的備份倉庫狀態為Available,說明當前集群具有訪問OSS的權限可以直接訪問。

步驟二:創建備份任務

創建立即備份任務

  1. 使用以下內容,在備份集群中創建applicationbackup.yaml文件。

    apiVersion: csdr.alibabacloud.com/v1beta1
    kind: ApplicationBackup
    metadata:
      annotations:
        csdr.alibabacloud.com/backuplocations: >-
          {"name":"<yourBackuplocationName>","region":"cn-beijing","bucket":"<cnfs-oss-yourBucketName>","prefix":"<subDir>","provider":"alibabacloud"}}
      name: <yourApplicationBackupName>
      namespace: csdr
    spec:
      includedNamespaces:
        - default
      includedResources:
        - statefulset
      excludedResources:
        - deployment
      labelSelector:
        matchLabels:
          app: mysql-sts
      includeClusterResources: false 
      pvBackup:
        defaultPvBackup: false
      storageLocation: <yourBackuplocationName>
      ttl: 720h0m0s

    其余參數無需設置,保持默認配置即可。

    參數

    是否必選

    說明

    csdr.alibabacloud.com/backuplocations

    備份所在的備份倉庫信息,需與備份倉庫的配置一致。

    name

    立即備份任務的名稱。

    includedNamespaces

    指定命名空間名稱。

    includedResources

    指定集群資源類型。

    重要

    為避免非預期備份結果,includedResourcesexcludedResources您只需配置一項。當兩者均為空時,表示備份所有資源類型。

    excludedResources

    排除集群資源類型。

    重要

    為避免非預期備份結果,includedResourcesexcludedResources您只需配置一項。當兩者均為空時,表示備份所有資源類型。

    matchLabels

    指定標簽,只備份符合的資源。

    includeClusterResources

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

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

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

    說明

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

    defaultPvBackup

    是否備份存儲卷,開啟數據備份。取值:

    • true:備份應用和存儲卷。

    • false:只備份應用。

    storageLocation

    備份倉庫名稱。

    說明

    若您的集群已使用Velero,請加入釘釘用戶群(釘釘群號:35532895)咨詢。

    ttl

    備份有效期,即備份任務的數據存儲有效期,過期之后數據將無法恢復。格式如720h0m0s,取值范圍:24h0m0s~1572864h0m0s。

  2. 在備份集群中執行以下命令,部署applicationbackup對象。

    kubectl apply -f applicationbackup.yaml
  3. 在備份集群中執行以下命令,查看立即備份任務的狀態。

    kubectl describe applicationbackup <yourApplicationBackupName> -n csdr

    預期輸出:

    ...
    Status:
      Completion Timestamp:  2022-12-05T15:02:35Z
      Expiration:            2023-01-04T15:02:25Z
      Message:               success
      Phase:                 Completed

    當立即備份任務由Inprogress轉為Completed狀態,說明立即備份任務創建成功。

創建定時備份計劃

  1. 使用以下內容,在備份集群中創建backupschedule.yaml文件。

    apiVersion: csdr.alibabacloud.com/v1beta1
    kind: BackupSchedule
    metadata:
      annotations:
        csdr.alibabacloud.com/backuplocations: >-
          {"name":"<yourBackuplocationName>","region":"cn-beijing","bucket":"<cnfs-oss-yourBucketName>","prefix":"<subDir>","provider":"alibabacloud"}
      name: <yourBackupScheduleName>
      namespace: csdr
    spec:
      schedule: 1 4 * * *
      template:
        includedNamespaces:
          - default
        includedResources:
          - statefulset
        excludedResources:
          - deployment
        labelSelector:
          matchLabels:
            app: mysql-sts
        includeClusterResources: false 
        pvBackup:
          defaultPvBackup: true
        storageLocation: <yourBackuplocationName>
        ttl: 720h0m0s

    其余參數無需設置,保持默認配置即可。

    參數

    是否必選

    說明

    csdr.alibabacloud.com/backuplocations

    備份所在的備份倉庫信息,需與備份倉庫的配置一致。

    name

    定時備份計劃的名稱。

    schedule

    備份周期,請使用Cron表達式。

    includedNamespaces

    指定命名空間名稱。

    includedResources

    指定集群資源類型。

    重要

    為避免非預期備份結果,includedResourcesexcludedResources您只需配置一項。當兩者均為空時,表示備份所有資源類型。

    excludedResources

    排除集群資源類型。

    重要

    為避免非預期備份結果,includedResourcesexcludedResources您只需配置一項。當兩者均為空時,表示備份所有資源類型。

    matchLabels

    指定標簽,只備份符合條件的資源。

    includeClusterResources

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

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

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

    說明

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

    defaultPvBackup

    是否備份存儲卷,開啟數據備份。取值:

    • true:備份應用和存儲卷。

    • false:只備份應用。

    storageLocation

    備份倉庫名稱。

    說明

    若您的集群已使用Velero,請加入釘釘用戶群(釘釘群號:35532895)咨詢。

    ttl

    備份有效期,即備份任務的數據存儲有效期,過期之后數據將無法恢復。格式如720h0m0s,取值范圍:24h0m0s~1572864h0m0s。

  2. 在備份集群中執行以下命令,部署backupschedule對象。

    kubectl apply -f backupschedule.yaml
  3. 在備份集群中執行以下命令,查看定時備份計劃的狀態。

    kubectl describe backupschedule <yourBackupScheduleName> -n csdr

    預期輸出:

    ...
    Status:
      Last Backup:          2022-12-07T20:01:11Z
      Last Processed Time:  2022-12-08T13:05:37Z
      Phase:                Enabled

    當定時備份計劃狀態為Enabled,表明定時備份計劃創建成功。

  4. 在備份集群中執行以下命令,查看定期創建的備份。

    kubectl get applicationbackup -n csdr | grep <yourBackupScheduleName>

    預期輸出:

    <yourBackupScheduleName>-20221205225845   2d22h
    <yourBackupScheduleName>-20221206040104   2d17h
    <yourBackupScheduleName>-20221207040137   41h
    <yourBackupScheduleName>-20221208040111   17h

步驟三:創建恢復任務

  1. 使用以下內容,在恢復集群中創建applicationrestore.yaml文件。

    apiVersion: csdr.alibabacloud.com/v1beta1
    kind: ApplicationRestore
    metadata:
      annotations:    
        csdr.alibabacloud.com/backuplocations: >-
          {"name":"<yourBackuplocationName>","region":"cn-beijing","bucket":"<cnfs-oss-yourBucketName>","prefix":"<subDir>","provider":"alibabacloud"}
      name: <yourApplicationRestoreName>
      namespace: csdr
    spec:
      appRestoreOnly: false
      preserveNodePorts: true
      includedNamespaces:
        - default
      includedResources:
        - statefulset
      excludedResources:
        - secret
      convertedarg:
      - convertToStorageClassType: alicloud-disk-topology-alltype
        namespace: nas
        persistentVolumeClaim: pvc-nas
      - convertToStorageClassType: alicloud-disk-topology-alltype
        namespace: oss
        persistentVolumeClaim: pvc-oss
      backupName: <yourApplicationBackupName>
      namespaceMapping:
        <backupNamespace>: <restoreNamespace>

    其余參數無需設置,保持默認配置即可。

    參數

    是否必選

    說明

    csdr.alibabacloud.com/backuplocations

    備份所在的備份倉庫信息,需與備份倉庫的配置一致。

    name

    恢復任務的名稱。

    appRestoreOnly

    對于備份了存儲卷的備份,是否僅恢復應用,不恢復存儲聲明、存儲卷及其對應的數據,取值:

    • true:僅恢復應用。如果您需要更改備份應用的數據源,可以先手動創建存儲聲明、存儲卷,然后再創建恢復任務并將該參數設置為true。

    • false:恢復應用以及相關的存儲數據,默認為false。

    preserveNodePorts

    是否保持應用的NodePort端口。當備份集群與恢復集群相同時,默認為false,將隨機修改端口值,避免與已有的同類應用沖突。否則設置為true。

    includedNamespaces

    指定恢復的命名空間名稱。設置為空時,表示恢復所有已備份的命名空間。

    includedResources

    指定待恢復的集群資源類型。

    重要

    為避免非預期備份結果,includedResourcesexcludedResources您只需配置一項。均為空時,表示恢復所有已備份的資源類型。

    excludedResources

    排除待恢復的集群資源類型。

    重要

    為避免非預期備份結果,includedResourcesexcludedResources您只需配置一項。均為空時,表示恢復所有已備份的資源類型。

    backupName

    待恢復的備份名稱。使用定期備份功能時,需要指定為某個時間點創建的備份名稱,例如<yourBackupScheduleName>-20221205225845

    namespaceMapping

    重定義命名空間。取值:

    • <backupNamespace>:創建備份任務時指定的備份集群命名空間。

    • <restoreNamespace>:根據備份創建的資源在恢復集群的所在命名空間。若不設置,則默認在同名命名空間中恢復。

    說明

    若<restoreNamespace>不存在,將創建新的命名空間。

    convertedarg

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

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

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

    • persistentVolumeClaim:存儲聲明名稱。

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

    重要

    對于ReadWriteMany類型的存儲卷,暫不支持恢復為云盤類型;對于ReadOnlyMany類型的存儲卷,恢復為云盤類型時,需由業務保證不會被多個節點上的副本同時掛載,造成強制拔盤。

  2. 在恢復集群中執行以下命令,部署applicationrestore對象。

    kubectl apply -f applicationrestore.yaml
  3. 在恢復集群中執行以下命令,查看恢復任務的狀態。

    kubectl describe applicationrestore <yourApplicationRestoreName> -n csdr

    預期輸出:

    ...
    Status:
      Completion Timestamp:  2022-12-05T15:52:19Z
      Phase:                 Completed
      Start Timestamp:       2022-12-05T15:52:09Z

    當恢復任務由Inprogress轉為Completed狀態,說明恢復任務創建成功。

步驟四:刪除集群備份中心的相關資源

重要

由于您已創建的備份倉庫可能正在被其他集群使用,所以備份中心不支持備份倉庫BackupLocation資源的刪除。

刪除定時備份計劃

執行以下命令,刪除定時備份計劃BackupSchedule資源,停止定時備份。

kubectl delete backupschedule <yourBackupSchedule> - ncsdr

刪除備份任務或恢復任務

  1. 使用以下內容,在待刪除任務的集群中創建deleterequest.yaml文件。

    apiVersion: csdr.alibabacloud.com/v1beta1
    kind: DeleteRequest
    metadata:
      name: <objectName-dbr>
      namespace: csdr
    spec:
      deleteObjectName: <objectName>
      deleteObjectType: "Backup"

    其余參數無需設置,保持默認配置即可。

    參數

    是否必選

    說明

    name

    刪除請求的名稱。

    • 刪除備份任務時:待刪除的備份任務ApplicationBackup的名稱+“-dbr”。

    • 刪除恢復任務時:待刪除的恢復任務ApplicationRestore的名稱+“-dbr”。

    deleteObjectName

    待刪除的資源名稱。

    deleteObjectType

    待刪除的資源類型。取值:

    • "Backup":刪除備份任務ApplicationBackup及配套資源。

    • "Restore":刪除恢復任務ApplicationRestore及配套資源。

    說明
    • 刪除備份任務不會影響已同步到集群中的副本。

    • 刪除恢復任務不會影響已恢復的內容。

  2. 在待刪除任務的集群中執行以下命令,部署deleterequest刪除請求。

    kubectl apply -f deleterequest.yaml
  3. 使用以下命令,查看資源狀態。

    • 查看刪除的備份任務

      • 執行以下命令,查看刪除備份任務的狀態。

        kubectl get applicationbackup <yourApplicationBackupName> -n csdr

        預期輸出:

        Error from server (NotFound): applicationbackups.csdr.alibabacloud.com "yourApplicationBackupName" not found

        由預期輸出可看到,備份任務資源已被刪除。

      • 執行以下命令,查看刪除請求資源的狀態。

        kubectl get deleterequest <yourApplicationBackupName-dbr> -n csdr

        預期輸出:

        Error from server (NotFound): deleterequests.csdr.alibabacloud.com "yourApplicationBackupName-dbr" not found

        由預期輸出可看到,除備份任務資源被刪除外,刪除請求的相關資源也自動被刪除。

    • 查看刪除的恢復任務

      • 執行以下命令,查看刪除備份任務的狀態。

        kubectl get applicationrestore <yourApplicationRestoreName> -n csdr

        預期輸出:

        Error from server (NotFound): applicationrestores.csdr.alibabacloud.com "yourApplicationRestoreName" not found

        由預期輸出可看到,恢復任務資源已被刪除。

      • 執行以下命令,查看刪除請求資源的狀態。

        kubectl get deleterequest <yourApplicationRestoreName-dbr> -n csdr

        預期輸出:

        Error from server (NotFound): deleterequests.csdr.alibabacloud.com "yourApplicationRestoreName-dbr" not found

        由預期輸出可看到,除恢復任務資源被刪除外,刪除請求的相關資源也自動被刪除。

相關文檔