0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用Velero备份Kubernetes集群

马哥Linux运维 来源:博客园人艰不拆_zmc 2024-08-05 15:43 次阅读

Velero 简介

Velero 是 heptio 团队(被 VMWare 收购)开源的 Kubernetes 集群备份、迁移工具。

Velero 使用对象存储保存集群资源。默认支持的对象存储有 AWS、Azure、GCP ,兼容 S3 协议,也可以通过插件来扩展到其他平台,比如 Aliyun OSS。

目前,Velero 不具备版本管理功能,只能进行增量恢复,不会进行删除或覆盖操作。

2. Velero 工作原理

Velero 首先会在集群中创建各种 CRD 以及相关的控制器,通过对 CRD 对象的操作完成备份、恢复行为。Velero 的工作原理图如下:

Velero 客户端调用 Kubernetes API 服务器创建 Backup 对象。

BackupController 监听 Backup 对象变化,以执行备份过程。

备份时,BackupController 通过 API Server 查询相关数据。

备份后,BackupController 将数据上传到对象存储。

运维拓扑图如下:

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

在所有集群上安装 Velero,运维人员通过 Velero Client 给 Velero Server 发送备份、恢复请求。Velero Server 推拉指定的 Kubernetes 对象的数据。这些数据以 Json 格式压缩存储在对象存储服务中。

下图是备份数据的目录结构:

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

3. 安装 Velero

3.1 下载文件

二进制文件下载地址:Github。

这里以 CentOS 操作系统、Velero 1.6.0 为例:

下载二进制文件,然后复制到/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、查看目录结构

[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 配置对象存储服务

考虑到可能没有直接可用的对象存储服务,本文使用 Velero 提供的 minio 搭建一个对象存储服务。如果是公有云服务,这里部署 minio 的步骤可以省略,只需要创建 credentials-velero 文件。

1、创建 minio 服务

设置为 NodePort 类型

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

创建 minio 服务

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 服务将被用于存储 Velero 的备份数据。

访问的话:直接浏览器输入 http://{NodeIP:32304} 默认账户信息:minio/minio123

2、创建 minio 的访问密钥文件 credentials-velero

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

ls查看下创建的访问密钥文件

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

3.3 安装 Velero 客户端

拷贝可执行文件velero

cp velero /usr/local/bin/

3.4 安装 Velero 服务端

执行安装命令

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 备份的支持。执行安装命令,会有回显日志。下面继续查看新创建的相关资源:

[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

可以看到相关服务已经正常运行,Job 任务正常完成退出,大量 CRD 被创建。

3.5 卸载 Velero 服务端

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    9148

    浏览量

    85393
  • 集群
    +关注

    关注

    0

    文章

    86

    浏览量

    17175
  • kubernetes
    +关注

    关注

    0

    文章

    224

    浏览量

    8714

原文标题:掌握Velero:轻松备份和恢复你的Kubernetes集群

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    阿里云上Kubernetes集群联邦

    摘要: kubernetes集群让您能够方便的部署管理运维容器化的应用。但是实际情况中经常遇到的一些问题,就是单个集群通常无法跨单个云厂商的多个Region,更不用说支持跨跨域不同的云厂商。这样会给
    发表于 03-12 17:10

    redis集群的两种备份方式

    redis集群 主从同步 备份
    发表于 04-17 13:30

    kubernetes集群配置

    基于v1104版本手动搭建高可用kubernetes 集群
    发表于 08-19 08:07

    Kubernetes 从懵圈到熟练:集群服务的三个要点和一种实现

    以我的经验来讲,理解 Kubernetes 集群服务的概念,是比较不容易的一件事情。尤其是当我们基于似是而非的理解,去排查服务相关问题的时候,会非常不顺利。这体现在,对于新手来说,ping 不通服务
    发表于 09-24 15:35

    kubernetes v112二进制方式集群部署

    kubernetes v112 二进制方式集群部署
    发表于 05-05 16:30

    请问鸿蒙系统上可以部署kubernetes集群吗?

    鸿蒙系统上可以部署kubernetes集群
    发表于 06-08 11:16

    如何部署基于Mesos的Kubernetes集群

    的内核。把Kubernetes运行在Mesos集群之上,可以和其他的框架共享集群资源,提高集群资源的利用率。 本文是Kubernetes和M
    发表于 10-09 18:04 0次下载
    如何部署基于Mesos的<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>

    浅谈Kubernetes集群的高可用方案

    Kubernetes作为容器应用的管理中心,通过对Pod的数量进行监控,并且根据主机或容器失效的状态将新的Pod调度到其他Node上,实现了应用层的高可用性。针对Kubernetes集群,高可用性
    发表于 10-11 10:04 1次下载
    浅谈<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>的高可用方案

    Kubernetes集群发生网络异常时如何排查

    本文将引入一个思路:“在 Kubernetes 集群发生网络异常时如何排查”。文章将引入 Kubernetes 集群中网络排查的思路,包含网络异常模型,常用工具,并且提出一些案例以供学
    的头像 发表于 09-02 09:45 4788次阅读

    Kubernetes 集群的功能

    Telepresence 是一个开源工具,可让您在本地运行单个服务,同时将该服务连接到远程 Kubernetes 集群
    的头像 发表于 09-05 10:58 1092次阅读

    Kubernetes集群内服务通信机制介绍

    现在在 Kubernetes 集群中,我们拥有构成集群管理组件和一组工作机器(称为节点)的控制平面。这些节点托管 Pod,这些 Pod 将后端微服务作为容器化服务运行。
    发表于 10-04 10:13 549次阅读

    Kubernetes集群的关闭与重启

    在日常对 Kubernetes 集群运行维护的过程中,您可能需要临时的关闭或者是重启 Kubernetes 集群集群进行维护,本文将介绍如
    的头像 发表于 11-07 09:50 9928次阅读

    在树莓派上搭建Kubernetes智能边缘集群

    电子发烧友网站提供《在树莓派上搭建Kubernetes智能边缘集群.zip》资料免费下载
    发表于 12-09 09:20 2次下载
    在树莓派上搭建<b class='flag-5'>Kubernetes</b>智能边缘<b class='flag-5'>集群</b>

    Kubernetes集群部署

    Kubeadm是一种Kubernetes集群部署工具,通过kubeadm init命令创建master节点,通过 kubeadm join命令把node节点加入到集群
    的头像 发表于 02-15 10:35 1724次阅读

    Kubernetes集群中如何选择工作节点

    简要概述: 本文讨论了在Kubernetes集群中选择较少数量的较大节点和选择较多数量的较小节点之间的利弊。
    的头像 发表于 08-28 15:46 627次阅读
    <b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>中如何选择工作节点