RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Velero備份Kubernetes集群

馬哥Linux運維 ? 來源:博客園人艱不拆_zmc ? 2024-08-05 15:43 ? 次閱讀

Velero 簡介

Velero 是 heptio 團(tuán)隊(被 VMWare 收購)開源的 Kubernetes 集群備份、遷移工具。

Velero 使用對象存儲保存集群資源。默認(rèn)支持的對象存儲有 AWS、Azure、GCP ,兼容 S3 協(xié)議,也可以通過插件來擴展到其他平臺,比如 Aliyun OSS。

目前,Velero 不具備版本管理功能,只能進(jìn)行增量恢復(fù),不會進(jìn)行刪除或覆蓋操作。

2. Velero 工作原理

Velero 首先會在集群中創(chuàng)建各種 CRD 以及相關(guān)的控制器,通過對 CRD 對象的操作完成備份、恢復(fù)行為。Velero 的工作原理圖如下:

Velero 客戶端調(diào)用 Kubernetes API 服務(wù)器創(chuàng)建 Backup 對象。

BackupController 監(jiān)聽 Backup 對象變化,以執(zhí)行備份過程。

備份時,BackupController 通過 API Server 查詢相關(guān)數(shù)據(jù)。

備份后,BackupController 將數(shù)據(jù)上傳到對象存儲。

運維拓?fù)鋱D如下:

70f07374-4b34-11ef-b8af-92fbcf53809c.png

在所有集群上安裝 Velero,運維人員通過 Velero Client 給 Velero Server 發(fā)送備份、恢復(fù)請求。Velero Server 推拉指定的 Kubernetes 對象的數(shù)據(jù)。這些數(shù)據(jù)以 Json 格式壓縮存儲在對象存儲服務(wù)中。

下圖是備份數(shù)據(jù)的目錄結(jié)構(gòu):

710b897a-4b34-11ef-b8af-92fbcf53809c.png

3. 安裝 Velero

3.1 下載文件

二進(jìn)制文件下載地址:Github。

這里以 CentOS 操作系統(tǒng)、Velero 1.6.0 為例:

下載二進(jìn)制文件,然后復(fù)制到/user/local/bin目錄下。

1、下載壓縮包并解壓

wget https://github.com/vmware-tanzu/velero/releases/download/v1.6.0/velero-v1.6.0-linux-amd64.tar.gz
tar-zxvfvelero-v1.6.0-linux-amd64.tar.gz&&cdvelero-v1.6.0-linux-amd64/

2、查看目錄結(jié)構(gòu)

[root@m-master126 velero-v1.6.0-linux-amd64]# tree
.
├── examples
│   ├── minio
│   │   └── 00-minio-deployment.yaml
│   ├── nginx-app
│   │   ├── base.yaml
│   │   ├── README.md
│   │   └── with-pv.yaml
│   └── README.md
├── LICENSE
└── velero
 
3 directories, 7 files

3.2 配置對象存儲服務(wù)

考慮到可能沒有直接可用的對象存儲服務(wù),本文使用 Velero 提供的 minio 搭建一個對象存儲服務(wù)。如果是公有云服務(wù),這里部署 minio 的步驟可以省略,只需要創(chuàng)建 credentials-velero 文件。

1、創(chuàng)建 minio 服務(wù)

設(shè)置為 NodePort 類型

sed -i "/type: /s#ClusterIP#NodePort#" examples/minio/00-minio-deployment.yaml

創(chuàng)建 minio 服務(wù)

kubectl apply -f examples/minio/00-minio-deployment.yaml

查看 service 訪問端口

[root@m-master126 velero-v1.6.0-linux-amd64]# kubectl get svc -n velero
NAME    TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
minio   NodePort   10.233.11.92           9000:32304/TCP   60s

這里的 {minio_service_ip}:32304 服務(wù)將被用于存儲 Velero 的備份數(shù)據(jù)。

訪問的話:直接瀏覽器輸入 http://{NodeIP:32304} 默認(rèn)賬戶信息:minio/minio123

2、創(chuàng)建 minio 的訪問密鑰文件 credentials-velero

cat <<'EOF' > credentials-velero
[default]
aws_access_key_id = minio
aws_secret_access_key = minio123
EOF

ls查看下創(chuàng)建的訪問密鑰文件

[root@m-master126 velero-v1.6.0-linux-amd64]# ls
credentials-velero  examples  LICENSE  velero

3.3 安裝 Velero 客戶端

拷貝可執(zhí)行文件velero

cp velero /usr/local/bin/

3.4 安裝 Velero 服務(wù)端

執(zhí)行安裝命令

velero install 
   --plugins harbor.openserver.cn:443/library/velero/velero-plugin-for-aws:v1.0.0 
   --provider aws 
   --bucket velero 
   --namespace velero 
   --secret-file ./credentials-velero 
   --velero-pod-cpu-request 200m 
   --velero-pod-mem-request 200Mi 
   --velero-pod-cpu-limit 1000m 
   --velero-pod-mem-limit 1000Mi 
   --use-volume-snapshots=false 
   --use-restic 
   --restic-pod-cpu-request 200m 
   --restic-pod-mem-request 200Mi 
   --restic-pod-cpu-limit 1000m 
   --restic-pod-mem-limit 1000Mi 
   --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://{NodeIp}:32304

值得注意的是use-restic開啟了 PV 備份的支持。執(zhí)行安裝命令,會有回顯日志。下面繼續(xù)查看新創(chuàng)建的相關(guān)資源:

[root@m-master126 velero-v1.6.0-linux-amd64]# kubectl get crd|grep velero
backups.velero.io                                     2021-05-31T12:54:19Z
backupstoragelocations.velero.io                      2021-05-31T12:54:19Z
deletebackuprequests.velero.io                        2021-05-31T12:54:19Z
downloadrequests.velero.io                            2021-05-31T12:54:19Z
podvolumebackups.velero.io                            2021-05-31T12:54:19Z
podvolumerestores.velero.io                           2021-05-31T12:54:19Z
resticrepositories.velero.io                          2021-05-31T12:54:19Z
restores.velero.io                                    2021-05-31T12:54:19Z
schedules.velero.io                                   2021-05-31T12:54:19Z
serverstatusrequests.velero.io                        2021-05-31T12:54:19Z
volumesnapshotlocations.velero.io                     2021-05-31T12:54:19Z

[root@m-master126 velero-v1.6.0-linux-amd64]# kubectl get all -n velero
NAME                         READY   STATUS      RESTARTS   AGE
pod/minio-7b4ff54f67-kx259   1/1     Running     0          14h
pod/minio-setup-mx8d5        0/1     Completed   0          14h
pod/restic-c6hkt             1/1     Running     0          14h
pod/restic-gfkwq             1/1     Running     0          14h
pod/restic-j5bjr             1/1     Running     0          14h
pod/restic-zrkzn             1/1     Running     0          14h
pod/velero-df6dcd97-6qjj4    1/1     Running     0          14h
 
NAME            TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
service/minio   NodePort   10.233.11.92           9000:32304/TCP   14h
 
NAME                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
daemonset.apps/restic   4         4         4       4            4                     14h
 
NAME                     READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/minio    1/1     1            1           14h
deployment.apps/velero   1/1     1            1           14h
 
NAME                               DESIRED   CURRENT   READY   AGE
replicaset.apps/minio-7b4ff54f67   1         1         1       14h
replicaset.apps/velero-df6dcd97    1         1         1       14h
 
NAME                    COMPLETIONS   DURATION   AGE
job.batch/minio-setup   1/1           3s         14h

可以看到相關(guān)服務(wù)已經(jīng)正常運行,Job 任務(wù)正常完成退出,大量 CRD 被創(chuàng)建。

3.5 卸載 Velero 服務(wù)端

kubectldeletenamespace/veleroclusterrolebinding/velero
kubectl delete crds -l component=velero

鏈接:https://www.cnblogs.com/zhangmingcheng/p/14836274.html

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9123

    瀏覽量

    85322
  • 集群
    +關(guān)注

    關(guān)注

    0

    文章

    86

    瀏覽量

    17173
  • kubernetes
    +關(guān)注

    關(guān)注

    0

    文章

    224

    瀏覽量

    8709

原文標(biāo)題:掌握Velero:輕松備份和恢復(fù)你的Kubernetes集群

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    阿里云上Kubernetes集群聯(lián)邦

    摘要: kubernetes集群讓您能夠方便的部署管理運維容器化的應(yīng)用。但是實際情況中經(jīng)常遇到的一些問題,就是單個集群通常無法跨單個云廠商的多個Region,更不用說支持跨跨域不同的云廠商。這樣會給
    發(fā)表于 03-12 17:10

    redis集群的兩種備份方式

    redis集群 主從同步 備份
    發(fā)表于 04-17 13:30

    kubernetes集群配置

    基于v1104版本手動搭建高可用kubernetes 集群
    發(fā)表于 08-19 08:07

    Kubernetes 從懵圈到熟練:集群服務(wù)的三個要點和一種實現(xiàn)

    以我的經(jīng)驗來講,理解 Kubernetes 集群服務(wù)的概念,是比較不容易的一件事情。尤其是當(dāng)我們基于似是而非的理解,去排查服務(wù)相關(guān)問題的時候,會非常不順利。這體現(xiàn)在,對于新手來說,ping 不通服務(wù)
    發(fā)表于 09-24 15:35

    kubernetes v112二進(jìn)制方式集群部署

    kubernetes v112 二進(jìn)制方式集群部署
    發(fā)表于 05-05 16:30

    請問鴻蒙系統(tǒng)上可以部署kubernetes集群嗎?

    鴻蒙系統(tǒng)上可以部署kubernetes集群
    發(fā)表于 06-08 11:16

    如何部署基于Mesos的Kubernetes集群

    的內(nèi)核。把Kubernetes運行在Mesos集群之上,可以和其他的框架共享集群資源,提高集群資源的利用率。 本文是Kubernetes和M
    發(fā)表于 10-09 18:04 ?0次下載
    如何部署基于Mesos的<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>

    淺談Kubernetes集群的高可用方案

    Kubernetes作為容器應(yīng)用的管理中心,通過對Pod的數(shù)量進(jìn)行監(jiān)控,并且根據(jù)主機或容器失效的狀態(tài)將新的Pod調(diào)度到其他Node上,實現(xiàn)了應(yīng)用層的高可用性。針對Kubernetes集群,高可用性
    發(fā)表于 10-11 10:04 ?1次下載
    淺談<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>的高可用方案

    Kubernetes集群發(fā)生網(wǎng)絡(luò)異常時如何排查

    本文將引入一個思路:“在 Kubernetes 集群發(fā)生網(wǎng)絡(luò)異常時如何排查”。文章將引入 Kubernetes 集群中網(wǎng)絡(luò)排查的思路,包含網(wǎng)絡(luò)異常模型,常用工具,并且提出一些案例以供學(xué)
    的頭像 發(fā)表于 09-02 09:45 ?4781次閱讀

    Kubernetes 集群的功能

    Telepresence 是一個開源工具,可讓您在本地運行單個服務(wù),同時將該服務(wù)連接到遠(yuǎn)程 Kubernetes 集群。
    的頭像 發(fā)表于 09-05 10:58 ?1083次閱讀

    Kubernetes集群內(nèi)服務(wù)通信機制介紹

    現(xiàn)在在 Kubernetes 集群中,我們擁有構(gòu)成集群管理組件和一組工作機器(稱為節(jié)點)的控制平面。這些節(jié)點托管 Pod,這些 Pod 將后端微服務(wù)作為容器化服務(wù)運行。
    發(fā)表于 10-04 10:13 ?548次閱讀

    Kubernetes集群的關(guān)閉與重啟

    在日常對 Kubernetes 集群運行維護(hù)的過程中,您可能需要臨時的關(guān)閉或者是重啟 Kubernetes 集群集群進(jìn)行維護(hù),本文將介紹如
    的頭像 發(fā)表于 11-07 09:50 ?9920次閱讀

    在樹莓派上搭建Kubernetes智能邊緣集群

    電子發(fā)燒友網(wǎng)站提供《在樹莓派上搭建Kubernetes智能邊緣集群.zip》資料免費下載
    發(fā)表于 12-09 09:20 ?2次下載
    在樹莓派上搭建<b class='flag-5'>Kubernetes</b>智能邊緣<b class='flag-5'>集群</b>

    Kubernetes集群部署

    Kubeadm是一種Kubernetes集群部署工具,通過kubeadm init命令創(chuàng)建master節(jié)點,通過 kubeadm join命令把node節(jié)點加入到集群
    的頭像 發(fā)表于 02-15 10:35 ?1721次閱讀

    Kubernetes集群中如何選擇工作節(jié)點

    簡要概述: 本文討論了在Kubernetes集群中選擇較少數(shù)量的較大節(jié)點和選擇較多數(shù)量的較小節(jié)點之間的利弊。
    的頭像 發(fā)表于 08-28 15:46 ?620次閱讀
    <b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>中如何選擇工作節(jié)點
    RM新时代网站-首页