精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用 Velero 備份還原 Kubernetes 集群

云計算
每個 Velero 的操作(比如按需備份、計劃備份、還原)都是 CRD 自定義資源,Velero 可以備份或還原集群中的所有對象,也可以按類型、namespace 或標簽過濾對象。

[[425938]]

Velero(https://velero.io)(可以提供備份和還原 Kubernetes 集群資源和持久卷的能力,你可以在公有云或本地搭建的私有云環境安裝 Velero,可以為你提供以下能力:

  • 備份集群數據,并在集群故障的情況下進行還原
  • 將集群資源遷移到其他集群
  • 將生產集群復制到開發和測試集群

Velero 包含一個在集群上運行的服務器端和在本地運行的命令行客戶端。

原理

每個 Velero 的操作(比如按需備份、計劃備份、還原)都是 CRD 自定義資源,Velero 可以備份或還原集群中的所有對象,也可以按類型、namespace 或標簽過濾對象。Velero 是 Kubernetes 用來災難恢復的理想選擇,也可以在集群上執行系統操作(比如升級)之前對應用程序狀態進行快照的理想選擇。

按需備份

按需備份操作可以將復制的 Kubernetes 對象的壓縮文件上傳到云對象存儲中,也可以調用云環境提供的 API 來創建持久化卷的磁盤快照。我們可以選擇指定在備份期間執行的備份 hook,比如你可能需要在拍攝快照之前告訴數據庫將其內存中的緩沖區刷新到磁盤。

需要注意的是集群備份并不是嚴格的原子備份,如果在備份時創建或編輯 Kubernetes 對象,則它們可能不會被包含在備份中,是可能出現這種狀況的。

定時備份

通過定時操作,我們可以定期備份數據,第一次創建日程表時將執行第一次備份,隨后的備份將按日程表指定的間隔進行備份,這些間隔由 Cron 表達式指定。

定時備份保存的名稱為 <SCHEDULE NAME>-<TIMESTAMP>,其中 <TIMESTAMP> 格式為 YYYYMMDDhhmmss。

備份還原

通過還原操作,我們可以從以前創建的備份中還原所有對象和持久卷,此外我們還可以僅還原對象和持久卷的子集,Velero 支持多個命名空間重新映射。例如在一次還原操作中,可以在命名空間 def 下重新創建命名空間 abc 中的對象,或在 456 之下重新創建名稱空間 123 中的對象。

還原的默認名稱為<BACKUP NAME>-<TIMESTAMP>,<TIMESTAMP> 格式為 YYYYMMDDhhmmss,還可以指定自定義名稱,恢復的對象還包括帶有鍵 velero.io/restore-name 和值的標簽 <RESTORE NAME>。

默認情況下,備份存儲位置以讀寫模式創建,但是,在還原期間,可以將備份存儲位置配置為只讀模式,這將禁用該存儲位置的備份創建和刪除,這對于確保在還原方案期間不會無意間創建或刪除任何備份非常有用。此外我們還可以選擇指定在還原期間或還原資源后執行的還原 hook,例如可能需要在數據庫應用程序容器啟動之前執行自定義數據庫還原操作。

備份流程

執行命令 velero backup create test-backup 的時候,會執行下面的操作:

  • Velero 客戶端調用 Kubernetes APIServer 創建 Backup 這個 CRD 對象
  • Backup 控制器 watch 到新的 Backup 對象被創建并執行驗證
  • Backup 控制器開始執行備份,通過查詢 APIServer 來獲取資源收集數據進行備份
  • Backup 控制器調用對象存儲服務,比如 S3 上傳備份文件

默認情況下 velero backup create 支持任何持久卷的磁盤快照,可以通過指定其他參數來調整快照,可以使用 --snapshot-volumes=false 選項禁用快照。

設置備份過期時間

創建備份時,可以通過添加標志 --ttl 來指定 TTL,如果未指定,則將默認的 TTL 值為30天,如果 Velero 檢測到有備份資源已過期,它將刪除以下相應備份數據:

  • 備份資源
  • 來自云對象存儲的備份文件
  • 所有 PersistentVolume 快照
  • 所有關聯的還原

同步對象存儲

Velero 將對象存儲視為資源的來源,它不斷檢查以確保始終存在正確的備份資源,如果存儲桶中有格式正確的備份文件,但 Kubernetes APIServer 中沒有相應的備份資源,則 Velero 會將信息從對象存儲同步到 Kubernetes,這使還原功能可以在集群遷移方案中工作,在該方案中,新集群中不存在原始的備份對象。同樣,如果備份對象存在于 Kubernetes 中,但不存在于對象存儲中,則由于備份壓縮包不再存在,它將從 Kubernetes 中刪除。

備份存儲位置和卷快照位置

Velero 有兩個自定義資源 BackupStorageLocation 和 VolumeSnapshotLocation,用于配置 Velero 備份及其關聯的持久卷快照的存儲位置。

  • BackupStorageLocation:定義為存儲區,存儲所有 Velero 數據的存儲區中的前綴以及一組其他特定于提供程序的字段,后面部分會詳細介紹該部分所包含的字段。
  • VolumeSnapshotLocation:完全由提供程序提供的特定的字段(例如AWS區域,Azure資源組,Portworx快照類型等)定義。

用戶可以預先配置一個或多個可能的 BackupStorageLocations 對象,也可以預先配置一個或多個 VolumeSnapshotLocations 對象,并且可以在創建備份時選擇應該存儲備份和相關快照的位置。

此配置設計支持許多不同的用法,包括:

  • 在單個 Velero 備份中創建不止一種持久卷的快照。例如,在同時具有 EBS 卷和 Portworx 卷的集群中
  • 在不同地區將數據備份到不同的存儲中
  • 對于支持它的卷提供程序(例如Portworx),可以將一些快照存儲在本地集群中,而將其他快照存儲在云中

安裝

在 Github Release 頁面(https://github.com/vmware-tanzu/velero/releases)下載指定的 velero 二進制客戶端安裝包,比如這里我們下載最新穩定版本 v1.6.3,

  1. ➜  ~ wget https://github.com/vmware-tanzu/velero/releases/download/v1.6.3/velero-v1.6.3-darwin-amd64.tar.gz 
  2. # 如果有限制,也可以替換成下面的 URL 加速下載 
  3. # wget https://download.fastgit.org/vmware-tanzu/velero/releases/download/v1.6.3/velero-v1.6.3-darwin-amd64.tar.gz 
  4. ➜  ~ tar -zxvf velero-v1.6.3-darwin-amd64.tar.gz && cd velero-v1.6.3-darwin-amd64 
  5. ➜  ~ tree . 
  6. ├── LICENSE 
  7. ├── examples 
  8. │   ├── README.md 
  9. │   ├── minio 
  10. │   │   └── 00-minio-deployment.yaml 
  11. │   └── nginx-app 
  12. │       ├── README.md 
  13. │       ├── base.yaml 
  14. │       └── with-pv.yaml 
  15. └── velero 
  16.  
  17. 3 directories, 7 files 

將根目錄下面的 velero 二進制文件拷貝到 PATH 路徑下面:

  1. ➜  ~ cp velero /usr/local/bin && chmod +x /usr/local/bin/velero 
  2. ➜  ~ velero version 
  3. Client: 
  4.         Version: v1.6.3 
  5.         Git commit: 5fe3a50bfddc2becb4c0bd5e2d3d4053a23e95d2 
  6. <error getting server version: no matches for kind "ServerStatusRequest" in version "velero.io/v1"

安裝 MINIO

這里我們可以使用 minio 來代替云環境的對象存儲,在上面解壓的壓縮包中包含一個 examples/minio/00-minio-deployment.yaml 的資源清單文件,為了測試方便可以將其中的 Service 更改為 NodePort 類型,我們可以配置一個 console-address 來提供一個 console 頁面的訪問入口,完整的資源清單文件如下所示:

  1. apiVersion: v1 
  2. kind: Namespace 
  3. metadata: 
  4.   name: velero 
  5. --- 
  6. apiVersion: apps/v1 
  7. kind: Deployment 
  8. metadata: 
  9.   namespace: velero 
  10.   name: minio 
  11.   labels: 
  12.     component: minio 
  13. spec: 
  14.   strategy: 
  15.     type: Recreate 
  16.   selector: 
  17.     matchLabels: 
  18.       component: minio 
  19.   template: 
  20.     metadata: 
  21.       labels: 
  22.         component: minio 
  23.     spec: 
  24.       volumes: 
  25.       - name: storage 
  26.         emptyDir: {} 
  27.       - name: config 
  28.         emptyDir: {} 
  29.       containers: 
  30.       - name: minio 
  31.         image: minio/minio:latest 
  32.         imagePullPolicy: IfNotPresent 
  33.         args: 
  34.         - server 
  35.         - /storage 
  36.         - --config-dir=/config 
  37.         - --console-address=:9001 
  38.         env: 
  39.         - name: MINIO_ACCESS_KEY 
  40.           value: "minio" 
  41.         - name: MINIO_SECRET_KEY 
  42.           value: "minio123" 
  43.         ports: 
  44.         - containerPort: 9000 
  45.         - containerPort: 9001 
  46.         volumeMounts: 
  47.         - name: storage 
  48.           mountPath: "/storage" 
  49.         - name: config 
  50.           mountPath: "/config" 
  51. --- 
  52. apiVersion: v1 
  53. kind: Service 
  54. metadata: 
  55.   namespace: velero 
  56.   name: minio 
  57.   labels: 
  58.     component: minio 
  59. spec: 
  60.   type: NodePort 
  61.   ports: 
  62.     - name: api 
  63.       port: 9000 
  64.       targetPort: 9000 
  65.     - name: console 
  66.       port: 9001 
  67.       targetPort: 9001 
  68.   selector: 
  69.     component: minio 
  70. --- 
  71. apiVersion: batch/v1 
  72. kind: Job 
  73. metadata: 
  74.   namespace: velero 
  75.   name: minio-setup 
  76.   labels: 
  77.     component: minio 
  78. spec: 
  79.   template: 
  80.     metadata: 
  81.       name: minio-setup 
  82.     spec: 
  83.       restartPolicy: OnFailure 
  84.       volumes: 
  85.       - name: config 
  86.         emptyDir: {} 
  87.       containers: 
  88.       - name: mc 
  89.         image: minio/mc:latest 
  90.         imagePullPolicy: IfNotPresent 
  91.         command: 
  92.         - /bin/sh 
  93.         - -c 
  94.         - "mc --config-dir=/config config host add velero http://minio:9000 minio minio123 && mc --config-dir=/config mb -p velero/velero" 
  95.         volumeMounts: 
  96.         - name: config 
  97.           mountPath: "/config" 

然后直接部署在 Kubernetes 集群中即可:

  1. ➜  ~ kubectl apply -f examples/minio/00-minio-deployment.yaml 
  2. namespace/velero created 
  3. deployment.apps/minio created 
  4. service/minio created 
  5. job.batch/minio-setup created 
  6. ➜  ~ kubectl get pods -n velero 
  7. NAME                     READY   STATUS      RESTARTS   AGE 
  8. minio-5b96ffddf8-x8s7p   1/1     Running     0          2m48s 
  9. minio-setup-rhc4d        0/1     Completed   1          2m48s 
  10. ➜  ~ kubectl get svc -n velero 
  11. NAME    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                         AGE 
  12. minio   NodePort   10.103.132.34   <none>        9000:32036/TCP,9001:31925/TCP   3m56s 

然后我們可以通過 http://:31925 訪問 minio 的 console 頁面,使用 minio 與 minio 進行登錄即可:

當然如果需要在不同 Kubernetes 和存儲池集群備份與恢復數據,需要將 minio 服務端安裝在 Kubernetes 集群外,保證在集群發生災難性故障時,不會對備份數據產生影響,可以通過二進制的方式進行安裝。

在待安裝 minio 的服務器上下載二進制包

  1. ➜  ~ wget https://dl.minio.io/server/minio/release/linux-amd64/minio 
  2. ➜  ~ chmod +x minio 
  3. ➜  ~ sudo mv minio /usr/local/bin/ 
  4. ➜  ~ minio --version 

準備對象存儲的磁盤,這里我們跳過該步驟,可以使用 systemd 來方便管理 minio 服務,對于使用 systemd init 系統運行系統的人,請創建用于運行 minio 服務的用戶和組:

  1. ➜  ~ sudo groupadd --system minio 
  2. ➜  ~ sudo useradd -s /sbin/nologin --system -g minio minio 

為 /data(上述步驟準備好的磁盤掛載位置)目錄提供 minio 用戶所有權:

  1. ➜  ~ sudo chown -R minio:minio /data/ 

為 minio 創建 systemd 服務單元文件:

  1. ➜  ~ vi /etc/systemd/system/minio.service 
  2. [Unit] 
  3. Description=Minio 
  4. Documentation=https://docs.minio.io 
  5. Wants=network-online.target 
  6. After=network-online.target 
  7. AssertFileIsExecutable=/usr/local/bin/minio 
  8.  
  9. [Service] 
  10. WorkingDirectory=/data 
  11. User=minio 
  12. Group=minio 
  13. EnvironmentFile=-/etc/default/minio 
  14. ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi" 
  15. ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES 
  16. # Let systemd restart this service always 
  17. Restart=always 
  18. # Specifies the maximum file descriptor number that can be opened by this process 
  19. LimitNOFILE=65536 
  20. # Disable timeout logic and wait until process is stopped 
  21. TimeoutStopSec=infinity 
  22. SendSIGKILL=no 
  23.  
  24. [Install] 
  25. WantedBy=multi-user.target 

創建 minio 環境文件 /etc/default/minio:

  1. # Volume to be used for Minio server. 
  2. MINIO_VOLUMES="/data" 
  3.  
  4. # Use if you want to run Minio on a custom port. 
  5. MINIO_OPTS="--address :9000" 
  6.  
  7. # Access Key of the server. 
  8. MINIO_ACCESS_KEY=minio 
  9.  
  10. # Secret key of the server. 
  11. MINIO_SECRET_KEY=minio123 

其中 MINIO_ACCESS_KEY 為長度至少為3個字符的訪問密鑰,MINIO_SECRET_KEY 為最少8個字符的密鑰。重新加載 systemd 并啟動 minio 服務:

  1. ➜  ~ sudo systemctl daemon-reload 
  2. ➜  ~ sudo systemctl start minio 

關于 minio 的更多使用方法可以參考官方文檔 https://docs.min.io/ 了解更多。

安裝 velero 服務端

我們可以使用 velero 客戶端來安裝服務端,也可以使用 Helm Chart 來進行安裝,比如這里我們用客戶端來安裝,velero 命令默認讀取 kubectl 配置的集群上下文,所以前提是 velero 客戶端所在的節點有可訪問集群的 kubeconfig 配置。

首先準備密鑰文件,在當前目錄建立一個空白文本文件,內容如下所示:

  1. [default
  2. aws_access_key_id=<access key id> 
  3. aws_secret_access_key=<secret access key

替換為之前步驟中 minio 的對應 access key id 和 secret access key如果 minio 安裝在 kubernetes 集群內時按照如下命令安裝 velero 服務端:

  1. ➜  ~ velero install    \ 
  2.      --provider aws   \ 
  3.      --bucket velero   \ 
  4.      --image velero/velero:v1.6.3  \ 
  5.   --plugins velero/velero-plugin-for-aws:v1.2.1  \ 
  6.   --namespace velero  \ 
  7.   --secret-file ./credentials-velero  \ 
  8.   --use-volume-snapshots=false \ 
  9.      --use-restic \ 
  10.   --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio.velero.svc:9000 
  11. ...... 
  12. DaemonSet/restic: created 
  13. Velero is installed! ⛵ Use 'kubectl logs deployment/velero -n velero' to view the status. 
  14. ➜  ~ kubectl get pods -n velero 
  15. NAME                      READY   STATUS      RESTARTS   AGE 
  16. minio-5b96ffddf8-x8s7p    1/1     Running     0          4m1s 
  17. minio-setup-rhc4d         0/1     Completed   1          4m1s 
  18. restic-2qn94              1/1     Running     0          22s 
  19. velero-664598d6cc-dpvxn   1/1     Running     0          22s 

由于我們這里準備使用 minio 來作為對象存儲,minio 是兼容 S3 的,所以這里我們配置的 provider(聲明使用的 Velero 插件類型)是 aws,--secret-file 用來提供訪問 minio 的密鑰,--use-restic 表示使用開源免費備份工具 restic 備份和還原持久卷數據,啟用該參數后會部署一個名為 restic 的 DaemonSet 對象,--plugins 使用的 velero 插件,我們使用 AWS S3 兼容插件。

安裝完成后 velero 的服務端就部署成功了。

測試

比如現在我們部署一個 mysql 應用,資源清單文件如下所示:

  1. # mysql-deployment.yaml 
  2. apiVersion: v1 
  3. kind: PersistentVolumeClaim 
  4. metadata: 
  5.   name: mysql-pv-claim 
  6.   labels: 
  7.     app: mysql 
  8. spec: 
  9.   accessModes: 
  10.     - ReadWriteOnce 
  11.   resources: 
  12.     requests: 
  13.       storage: 20Gi 
  14. --- 
  15. apiVersion: apps/v1 
  16. kind: Deployment 
  17. metadata: 
  18.   name: mysql 
  19.   labels: 
  20.     app: mysql 
  21. spec: 
  22.   selector: 
  23.     matchLabels: 
  24.       app: mysql 
  25.   template: 
  26.     metadata: 
  27.       labels: 
  28.         app: mysql 
  29.     spec: 
  30.       containers: 
  31.       - image: mysql:5.6 
  32.         name: mysql 
  33.         env: 
  34.         - name: MYSQL_ROOT_PASSWORD 
  35.           valueFrom: 
  36.             secretKeyRef: 
  37.               name: mysql-pass 
  38.               keypassword 
  39.         livenessProbe: 
  40.           tcpSocket: 
  41.             port: 3306 
  42.         ports: 
  43.         - containerPort: 3306 
  44.           name: mysql 
  45.         volumeMounts: 
  46.         - name: mysql-persistent-storage 
  47.           mountPath: /var/lib/mysql 
  48.       volumes: 
  49.       - name: mysql-persistent-storage 
  50.         persistentVolumeClaim: 
  51.           claimName: mysql-pv-claim 

直接部署上面的應用:

  1. ➜  ~ kubectl create namespace kube-demo 
  2. ➜  ~ kubectl create secret generic mysql-pass --from-literal=password=password321 -n kube-demo 
  3. ➜  ~ kubectl apply -f mysql-deployment.yaml -n kube-demo 
  4. ➜  ~ kubectl get pods -n kube-demo 
  5. NAME                    READY   STATUS    RESTARTS   AGE 
  6. mysql-c57f676dd-gw5pf   1/1     Running   0          51s 

比如現在我們創建一個新的數據庫 velero:

  1. ➜  ~ kubectl exec -it -n kube-demo mysql-c57f676dd-gw5pf -- /bin/bash 
  2. mysql-c57f676dd-gw5pf:/# mysql -uroot -p 
  3. Enter password
  4. Welcome to the MySQL monitor.  Commands end with ; or \g. 
  5. Your MySQL connection id is 7 
  6. Server version: 5.6.51 MySQL Community Server (GPL) 
  7.  
  8. Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved. 
  9.  
  10. Oracle is a registered trademark of Oracle Corporation and/or its 
  11. affiliates. Other names may be trademarks of their respective 
  12. owners. 
  13.  
  14. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
  15.  
  16. mysql> show databases; 
  17. +--------------------+ 
  18. Database           | 
  19. +--------------------+ 
  20. | information_schema | 
  21. | mysql              | 
  22. | performance_schema | 
  23. +--------------------+ 
  24. rows in set (0.00 sec) 
  25.  
  26. mysql> create database velero; 
  27. Query OK, 1 row affected (0.00 sec) 
  28.  
  29. mysql> show databases; 
  30. +--------------------+ 
  31. Database           | 
  32. +--------------------+ 
  33. | information_schema | 
  34. | mysql              | 
  35. | performance_schema | 
  36. | velero             | 
  37. +--------------------+ 
  38. rows in set (0.00 sec) 
  39.  
  40. mysql> 

現在我們來執行一個備份:

  1. ➜  ~ velero backup create mysql-backup --include-namespaces kube-demo --default-volumes-to-restic 
  2. Backup request "mysql-backup" submitted successfully. 
  3. Run `velero backup describe mysql-backup` or `velero backup logs mysql-backup` for more details. 

其中我們指定的 --default-volumes-to-restic 參數表示使用 restic 備份持久卷到 minio,--include-namespaces 用來備份該命名空間下的所有資源,不包括集群資源,此外還可以使用 --include-resources 指定要備份的資源類型 ,--include-cluster-resources 指定是否備份集群資源。

該命令請求創建一個對項目(命名空間)的備份,備份請求發送之后可以用命令查看備份狀態,等到 STATUS 列變為 Completed 表示備份完成。

  1. ➜  ~ velero backup get 
  2. NAME           STATUS      ERRORS   WARNINGS   CREATED                         EXPIRES   STORAGE LOCATION   SELECTOR 
  3. mysql-backup   Completed   0        0          2021-09-16 16:58:51 +0800 CST   29d       default            <none> 
  4. ➜  ~ velero backup describe mysql-backup 
  5. Name:         mysql-backup 
  6. Namespace:    velero 
  7. Labels:       velero.io/storage-location=default 
  8. Annotations:  velero.io/source-cluster-k8s-gitversion=v1.18.4-tke.6 
  9.               velero.io/source-cluster-k8s-major-version=1 
  10.               velero.io/source-cluster-k8s-minor-version=18+ 
  11.  
  12. Phase:  Completed 
  13.  
  14. Errors:    0 
  15. Warnings:  0 
  16.  
  17. Namespaces: 
  18.   Included:  kube-demo 
  19.   Excluded:  <none> 
  20.  
  21. Resources: 
  22.   Included:        * 
  23.   Excluded:        <none> 
  24.   Cluster-scoped:  auto 
  25.  
  26. Label selector:  <none> 
  27.  
  28. Storage Location:  default 
  29.  
  30. Velero-Native Snapshot PVs:  auto 
  31.  
  32. TTL:  720h0m0s 
  33.  
  34. Hooks:  <none> 
  35.  
  36. Backup Format Version:  1.1.0 
  37.  
  38. Started:    2021-09-16 16:58:51 +0800 CST 
  39. Completed:  2021-09-16 16:59:08 +0800 CST 
  40.  
  41. Expiration:  2021-10-16 16:58:51 +0800 CST 
  42.  
  43. Total items to be backed up:  30 
  44. Items backed up:              30 
  45.  
  46. Velero-Native Snapshots: <none included> 
  47.  
  48. Restic Backups (specify --details for more information): 
  49.   Completed:  1 

備份完成后可以去 minio 的 bucket 上查看是否有對應的備份數據:

現在我們刪除應用所在的命名空間來模擬生產環境發生災難或運維錯誤導致應用失敗的場景:

  1. ➜  ~ kubectl delete namespace kube-demo 

這個時候我們肯定訪問不了我們的 MySQL 數據庫了,這時候我們可以用一條命令,使用 velero 從 minio 中來恢復應用和數據:

  1. ➜  ~ velero restore create --from-backup mysql-backup 
  2. Restore request "mysql-backup-20210916172100" submitted successfully. 
  3. Run `velero restore describe mysql-backup-20210916172100` or `velero restore logs mysql-backup-20210916172100` for more details. 

同樣我們可以使用 velero restore get 來查看還原的進度,等到 STATUS 列變為 Completed 表示還原完成:

  1. ➜  ~ velero restore get 
  2. NAME                          BACKUP         STATUS      STARTED                         COMPLETED                       ERRORS   WARNINGS   CREATED                         SELECTOR 
  3. mysql-backup-20210916172100   mysql-backup   Completed   2021-09-16 17:21:00 +0800 CST   2021-09-16 17:21:22 +0800 CST   0        0          2021-09-16 17:21:00 +0800 CST   <none> 
  4. ➜  ~ velero restore describe mysql-backup-20210916172100 
  5. Name:         mysql-backup-20210916172100 
  6. Namespace:    velero 
  7. Labels:       <none> 
  8. Annotations:  <none> 
  9.  
  10. Phase:                       Completed 
  11. Total items to be restored:  10 
  12. Items restored:              10 
  13.  
  14. Started:    2021-09-16 17:21:00 +0800 CST 
  15. Completed:  2021-09-16 17:21:22 +0800 CST 
  16.  
  17. Backup:  mysql-backup 
  18.  
  19. Namespaces: 
  20.   Included:  all namespaces found in the backup 
  21.   Excluded:  <none> 
  22.  
  23. Resources: 
  24.   Included:        * 
  25.   Excluded:        nodes, events, events.events.k8s.io, backups.velero.io, restores.velero.io, resticrepositories.velero.io 
  26.   Cluster-scoped:  auto 
  27.  
  28. Namespace mappings:  <none> 
  29.  
  30. Label selector:  <none> 
  31.  
  32. Restore PVs:  auto 
  33.  
  34. Restic Restores (specify --details for more information): 
  35.   Completed:  1 
  36.  
  37. Preserve Service NodePorts:  auto 

還原完成后我們再去查看之前我們的 kube-demo 命名空間下面的應用數據是否正確:

  1. ➜  ~ kubectl get ns kube-demo 
  2. NAME        STATUS   AGE 
  3. kube-demo   Active   3m29s 
  4. ➜  ~ kubectl get pods -n kube-demo 
  5. NAME                    READY   STATUS    RESTARTS   AGE 
  6. mysql-c57f676dd-gw5pf   1/1     Running   0          6m28s 
  7. ➜  ~ kubectl exec -it -n kube-demo mysql-c57f676dd-gw5pf -- /bin/bash 
  8. root@mysql-c57f676dd-gw5pf:/# mysql -uroot -p 
  9. Enter password
  10. Welcome to the MySQL monitor.  Commands end with ; or \g. 
  11. Your MySQL connection id is 42 
  12. Server version: 5.6.51 MySQL Community Server (GPL) 
  13.  
  14. Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved. 
  15.  
  16. Oracle is a registered trademark of Oracle Corporation and/or its 
  17. affiliates. Other names may be trademarks of their respective 
  18. owners. 
  19.  
  20. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
  21.  
  22. mysql> show databases; 
  23. +---------------------+ 
  24. Database            | 
  25. +---------------------+ 
  26. | information_schema  | 
  27. | #mysql50#lost+found | 
  28. | mysql               | 
  29. | performance_schema  | 
  30. | velero              | 
  31. +---------------------+ 
  32. rows in set (0.00 sec) 
  33.  
  34. mysql> 

可以看到我們的創建的 velero 數據庫依然存在,證明已經完全恢復了。

只要我們將每個 velero 實例指向相同的對象存儲,velero 就能將資源從一個群集遷移到另一個群集。此外還支持定時備份,觸發備份 Hooks 等操作,更多資料請查閱官方文檔:https://velero.io/docs/

 

責任編輯:姜華 來源: k8s技術圈
相關推薦

2021-12-03 11:06:01

VeleroKubernetesLinux

2022-09-23 17:26:04

VeleroKubernetes

2023-03-30 09:17:42

KubesprayKubernetesLinux

2020-07-08 08:03:37

KubernetesLens集群

2019-11-28 10:15:35

TimeShiftUbuntuLinux

2022-08-05 08:48:33

KubernetesEtcd數據

2010-12-31 14:42:51

ExchangeSer

2010-07-06 09:08:07

SQL server差

2011-09-19 16:40:40

2015-08-21 10:40:10

SQL Server備份還原

2021-07-01 11:29:45

KubernetesGrafana監控

2024-05-23 13:49:00

Kuberneteetcd集群

2022-09-20 08:00:32

VMWARE云原生

2017-07-10 16:00:47

Mysql數據備份數據還原

2011-09-15 09:49:57

HBase

2023-10-27 08:03:29

Kubernetes開源工具

2022-07-05 08:10:25

Kubernetes云原生

2011-12-15 09:31:02

Ubuntu 11.1備份還原

2010-09-14 13:44:01

SQL Server備

2012-05-09 10:48:24

Ubuntu終端備份
點贊
收藏

51CTO技術棧公眾號

亚洲热线99精品视频| 亚洲永久免费视频| 国产精品电影观看| 99国产精品无码| 亚洲码欧美码一区二区三区| 精品日本美女福利在线观看| 久久成年人免费电影| 男人操女人下面视频| 午夜影院一区| 亚洲三级在线观看| 明星裸体视频一区二区| 97精品人妻一区二区三区香蕉| 欧美视频亚洲视频| 中文字幕欧美日韩在线| 亚洲啪av永久无码精品放毛片| www成人在线视频| 亚洲综合在线免费观看| 亚洲成人一区二区三区| 人妻丰满熟妇av无码区hd| 日本欧美一区二区| 91av中文字幕| 97成人资源站| 欧美色图在线播放| 精品中文视频在线| 国产精品欧美性爱| 日韩欧美激情| 欧美性大战久久久久久久蜜臀| 国产精品久久久久7777| 国产原创在线观看| 国产精品色眯眯| 欧美男人的天堂| 丁香六月天婷婷| 国产乱子伦一区二区三区国色天香| 国产成人精品一区二区三区| 久久精品视频9| 亚洲综合自拍| 久久精品国产99国产精品澳门 | 亚洲精品在线看| av不卡中文字幕| 一级毛片精品毛片| 91精品国产免费久久综合| 在线看的黄色网址| 黄色成人小视频| 欧美性videosxxxxx| 乱子伦视频在线看| 综合日韩av| 日韩欧美在线播放| 成人小视频在线看| japanese23hdxxxx日韩| 欧美性猛交xxxx富婆弯腰| 国产欧美日韩网站| av在线资源| 午夜视频久久久久久| 欧美一区二区激情| heyzo中文字幕在线| 亚洲小说欧美激情另类| 国产爆乳无码一区二区麻豆| 深夜国产在线播放| 亚洲午夜精品一区二区三区他趣| 日韩免费在线观看av| av中文字幕在线看| 欧美性猛交xxxx富婆| 欧美两根一起进3p做受视频| 精品无人乱码一区二区三区 | 国内精品久久影院| 波多野结衣国产| 男女精品网站| 国产精品久久久久久久午夜| 一起草av在线| 国产高清精品久久久久| 国产区一区二区三区| 天天av天天翘| 欧美激情一区二区三区全黄 | 成人h动漫精品一区| 美女久久99| 在线观看欧美视频| 91高清免费看| 亚洲精品裸体| 国产精品久久久久91| 91久久久久国产一区二区| 国产精品一级在线| 久久涩涩网站| 日本最新在线视频| 亚洲成人av电影在线| 不卡影院一区二区| 91精品亚洲一区在线观看| 亚洲成av人片在线观看香蕉| 永久免费看mv网站入口78| 日韩欧美一区免费| 91精品国产99| 怡春院在线视频| 丰满少妇久久久久久久| 欧美伦理一区二区| 色老头在线观看| 狠狠久久亚洲欧美专区| 不用播放器的免费av| 91嫩草精品| 最近2019免费中文字幕视频三| 免费中文字幕在线| 日本不卡在线视频| 国产精品二区在线| jizz在线观看中文| 无吗不卡中文字幕| 亚洲精品视频三区| 综合干狼人综合首页| 久久成人精品电影| 欧美brazzers| 成年人午夜久久久| 色中文字幕在线观看| 欧美人与性动交xxⅹxx| 日韩欧美激情一区| 免费成人深夜蜜桃视频| 在线综合视频| 99久久久精品免费观看国产| 香蕉视频在线看| 欧美天堂在线观看| 免费黄色av网址| 五月激情综合| 国产精品视频xxxx| 经典三级在线| 精品日韩视频在线观看| 成人啪啪18免费游戏链接| 手机在线电影一区| 国产精品h在线观看| 日韩一级片免费| 曰韩精品一区二区| 激情文学亚洲色图| 久久美女视频| 国产精品日韩在线| 免费av在线电影| 午夜不卡av免费| 日韩精品视频一区二区| 欧美 日韩 国产精品免费观看| 国产精品美女免费视频| 蜜桃视频在线观看网站| 都市激情亚洲色图| 欧美肉大捧一进一出免费视频 | 精品综合久久久久久97| 亚洲视频在线观看免费视频| 国产日韩视频一区二区三区| 成人av一级片| 色天下一区二区三区| 国模私拍视频一区| 人妻无码中文字幕免费视频蜜桃| 亚洲综合无码一区二区| 人妻精油按摩bd高清中文字幕| 欧美h版在线| 91精品久久久久久久久中文字幕| 91亚洲欧美| 欧美日韩国产另类一区| 天堂а√在线中文在线鲁大师| 日韩va欧美va亚洲va久久| 日本视频一区在线观看| 国产一区二区三区朝在线观看| 亚洲丝袜在线视频| 亚洲视频在线免费播放| 中文字幕一区二区三区精华液 | 成人动漫精品一区二区| 国产一区二区视频播放| 日韩极品在线| 日本不卡免费高清视频| 国产黄在线看| 欧美日韩国产综合草草| 三级黄色在线观看| 国产成人精品免费在线| 缅甸午夜性猛交xxxx| 日韩一级电影| 国产精品久久久久久中文字| 日本中文字幕在线播放| 欧美成人精品高清在线播放| 日本特黄一级片| 国产亚洲综合色| 特级丰满少妇一级| 午夜久久一区| 麻豆91av| 91成人短视频在线观看| 国外成人在线播放| www.在线视频.com| 日韩精品中文字幕在线不卡尤物| 日韩欧美大片在线观看| 欧美国产1区2区| 无套内谢丰满少妇中文字幕| 亚洲九九精品| 一区二区免费电影| 国产精品成人自拍| 国产精品美腿一区在线看| caoporn免费在线| 日韩av在线看| 国产伦理一区二区| 色综合久久久久久久久久久| 日韩高清dvd碟片| 91免费视频大全| 91视频福利网| 日韩电影在线一区二区| 99视频精品全部免费看| 蜜桃视频欧美| 亚洲综合第一页| 成人做爰视频www网站小优视频| 欧美插天视频在线播放| 日本韩国一区| 日韩一区二区三区在线视频| 台湾佬中文在线| 亚洲黄色av一区| 中文字幕91视频| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美不卡在线视频| 伊人网站在线观看| 欧美午夜激情视频| 国产一级免费av| 国产精品盗摄一区二区三区| 亚洲天堂2024| 国产乱码精品一品二品| 一本久道中文无码字幕av| 国内激情久久| 欧美日韩一级在线| 欧美日韩播放| 九色91视频| 成人三级毛片| 999在线免费观看视频| 日韩黄色碟片| 国产精品福利网站| 成人午夜视屏| 68精品久久久久久欧美 | 欧美日韩国产免费观看视频| 国产日韩一区欧美| 99亚洲乱人伦aⅴ精品| 91久久久久久久一区二区| 欧美色网在线| 国产成人啪精品视频免费网| 少妇视频在线观看| 97久久精品在线| av中文字幕在线观看第一页| 久久99久久亚洲国产| caoporn免费在线视频| 日韩在线观看免费高清完整版| 福利片在线看| 一区二区成人精品| 国产视频三级在线观看播放| 亚洲精品之草原avav久久| 亚洲欧洲国产综合| 亚洲国产欧美在线成人app| 乱色精品无码一区二区国产盗| 日韩一区二区电影在线| 国产熟女一区二区丰满| 91精品国产综合久久精品app| 国产一区二区在线视频观看| 欧美日韩国产经典色站一区二区三区| 免费看污视频的网站| 91精品福利视频| 在线观看国产精品视频| 在线看日韩精品电影| 这里只有久久精品视频| 欧美性色黄大片| 中文字幕日韩国产| 91精品国产综合久久国产大片| 国产99对白在线播放| 日韩免费福利电影在线观看| 亚洲av无码一区二区乱子伦| 精品福利一区二区三区| 色综合久久网女同蕾丝边| 亚洲免费伊人电影在线观看av| 天天在线女人的天堂视频| 亚洲欧美在线看| 午夜免费视频在线国产| 毛片精品免费在线观看| 波多野结衣精品| 欧美在线一级视频| 九九九精品视频| 999在线免费观看视频| 六月丁香久久丫| 奇米精品在线| 伊人色**天天综合婷婷| 国产二区视频在线| 视频一区视频二区中文| 国产免费中文字幕| 成人av电影在线网| 97在线观看免费视频| 亚洲私人影院在线观看| 国产在线观看免费av| 色综合久久天天| 国产原创中文av| 亚洲国产小视频| av在线免费播放网站| 色综合91久久精品中文字幕| 精品国产第一福利网站| 91精品视频播放| 天海翼精品一区二区三区| 日韩三级电影免费观看| 欧美日本不卡高清| 国产精品久久久久9999小说| 国内精品在线播放| 中文字幕日韩三级片| 国产精品国产馆在线真实露脸| 久久精品女人毛片国产| 欧美三级电影在线观看| 亚洲欧美激情国产综合久久久| 亚洲人成在线电影| 久草免费在线色站| 国产精品专区一| 欧美三级电影在线| 成人免费看片视频在线观看| 久久久久久黄| 天天躁日日躁狠狠躁av| 中文字幕在线免费不卡| 在线天堂中文字幕| 欧美成人精品高清在线播放| 1024免费在线视频| 97超碰蝌蚪网人人做人人爽| 国产一区二区三区精品在线观看 | 日本中文字幕一区二区有码在线 | 精品久久在线| 精品视频高清无人区区二区三区| 天天射天天综合网| 看欧美ab黄色大片视频免费| va亚洲va日韩不卡在线观看| 人妻人人澡人人添人人爽| 在线观看欧美精品| 亚洲三级黄色片| 久久久久久国产精品| 国产一区二区三区国产精品| 亚洲欧美日韩精品综合在线观看| 性欧美videos另类喷潮| 污污污www精品国产网站| 亚洲欧美aⅴ...| 国产精品久久久午夜夜伦鲁鲁| 一区二区三区亚洲| 免费成人动漫| 鲁片一区二区三区| 国产亚洲精品自拍| 朝桐光av一区二区三区| 亚洲国产精品欧美一二99 | 亚洲欧美综合另类中字| 九色porny视频在线观看| 成人看片视频| 欧美日韩影院| 最新中文字幕日本| 一区二区三区欧美视频| 国产99视频在线| 欧美另类精品xxxx孕妇| 日本一区二区三区播放| 超薄肉色丝袜足j调教99| 国产真实乱子伦精品视频| 91香蕉视频网| 在线成人av影院| www在线视频| 粉嫩av四季av绯色av第一区| 欧美午夜免费影院| aaa黄色大片| 性久久久久久久久久久久| 人妻视频一区二区三区| 97视频国产在线| 九热爱视频精品视频| 那种视频在线观看| 国产亲近乱来精品视频| 亚洲一区二区天堂| 色综合视频一区中文字幕| 第四色在线一区二区| 欧美网站免费观看| 国产亚洲精久久久久久| 这里只有精品免费视频| 久久精品在线视频| 日韩精品免费视频一区二区三区| 免费拍拍拍网站| 久久一区二区三区国产精品| 一级久久久久久| 精品国产一区久久久| 日韩中文字幕一区二区高清99| 蜜臀av色欲a片无码精品一区 | 另类调教123区 | 日韩欧美在线字幕| www.亚洲视频| 999日本视频| 久久九九免费| 免费在线观看a级片| 精品国产免费一区二区三区四区| 色资源二区在线视频| 亚洲精品成人a8198a| 国产成人在线电影| 你懂的国产在线| 久久精品免费播放| 欧美中文一区| 久热精品在线观看视频| 一区二区三区不卡视频在线观看| 外国精品视频在线观看| 国产美女直播视频一区| 亚洲激情成人| 国产aaaaaaaaa| 亚洲电影免费观看高清| 国产精品亚洲d| 男女激情免费视频| 中文字幕av一区二区三区| 亚洲国产剧情在线观看| 国产精品黄色av| 99av国产精品欲麻豆| 久久福利免费视频| 亚洲精品一区av在线播放| 韩国三级大全久久网站| 色诱视频在线观看| 一片黄亚洲嫩模| 色网站在线看|