首页 > 其他分享 >k8s集群备份与迁移

k8s集群备份与迁移

时间:2024-09-16 23:21:19浏览次数:12  
标签:velero minio -- 备份 集群 k8s backup create

什么是 Velero?

Velero 是一个用Go语言开发的开源工具,用于 Kubernetes 集群的备份、恢复、灾难恢复和迁移。

Velero备份工作流程

当用户发起velero backup create时,会执行如下四个动作:

  1. velero客户端调用Kubernetes API创建自定义资源并存储到etcd;

  2. Backup Controller通过Kubernetes API监听到新创建的backup对象,并验证;

  3. Backup Controller开始执行备份,通过Kubernetes API查询查询和收集需要备份的资源;

  4. Backup Controller调用Minio的S3接口上传备份数据。

图片

安装步骤 

velero在卸载的时候会把所在命名空间的资源清空,所以需要独立部署,在实战中,我们会把minio和velero隔离命名空间进行部署。

下载地址

# velero
wget https://github.com/vmware-tanzu/velero/releases/download/v1.14.1/velero-v1.14.1-linux-amd64.tar.gz
# minio
git clone https://github.com/yilingyi/minio.git

minio安装

  • 修改minio中的values.yaml,有两处storageClass需要根据实际名称进行替换

图片

  • 然后执行helm指令进行部署

helm install minio ./ -f values.yaml -n minio --create-namespace
  • 完成部署后,登录console(默认账号密码是minioadmin)创建bucket,命名为velero

图片

velero安装

  • 在bucket创建后,紧接着解压velero,并在目录下创建S3存储桶凭证credentials-velero,示例如下

[default]
aws_access_key_id=minioadmin
aws_secret_access_key=minioadmin
  • 然后执行如下指令进行安装,需要注意的是,在首次备份期间需要关注集群的IO负载情况,如果负载较高,可以适当调低node agent的cpu和内存资源:

cd velero-v1.14.1-linux-amd64

cp velero /usr/bin/

velero install \
    # 指定存储提供商,minio用的是s3,所以这里是aws
    --provider aws \
    # 指定aws插件
    --plugins registry.cn-hangzhou.aliyuncs.com/yilingyi/velero-plugin-for-aws:v1.10.1 \
    # 指定velero镜像
    --image registry.cn-hangzhou.aliyuncs.com/yilingyi/velero:v1.14.1 \
    # 限制agent CPU和内存资源
    --node-agent-pod-cpu-limit 2 \
    --node-agent-pod-mem-limit 2048Mi \
    # 指定命名空间
    --namespace velero \
    # 指定bucket名称
    --bucket velero \
    # 默认以文件形式备份持久化卷
    --default-volumes-to-fs-backup \
    # 启用node agent 进行备份和恢复操作,--use-restic已启用,从v1.10开始默认使用kopia备份
    --use-node-agent \
    # 指定S3存储桶凭证
    --secret-file ./credentials-velero \
    # 禁用卷快照功能,只使用文件系统级别的备份
    --use-volume-snapshots=false \
    # 配置备份存储位置的详细信息,其中<minio-api-url>填写minio的api地址,如172.33.0.2:9000
    --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://<minio-api-url>

常用指令

备份

  • 备份所有资源

velero backup create <BACKUP_NAME>

示例

velero backup create my-buckup
  • 常用参数

--include-namespaces 备份指定的命名空间
--include-resources  备份指定的资源,常用的有deployment,pods,services,secrets,configmaps
--exclude-namespace  排除命名空间
--exclude-resources  排除资源
--ttl                备份过期时间,默认为720h,即30天
  • 如果想要排除更细粒度的资源,可以给资源打上标签velero.io/exclude-from-backup=true排除备份,如

kubectl label pv my-pv velero.io/exclude-from-backup=true
  • 查看备份列表

velero get backups
  • 查看备份任务详情/进度

velero backup describe <BACKUP_NAME> --detail

还原

  • 还原所有资源

velero restore create --from-backup <BACKUP_NAME>
  • 常用参数

--include-namespaces 备份指定的命名空间
--include-resources  备份指定的资源,常用的有deployment,pods,services,secrets,configmaps
--exclude-namespace  排除命名空间
--exclude-resources  排除资源
  • 查看还原列表

velero get restores
  • 查看还原详情/进度

velero restore describe <RESTORE_NAME> --detail

定时任务

  • 可以设置定时备份任务

velero schedule create <SCHEDULE_NAME> --schedule="0 1 * * *" --include-namespaces <NAMESPACES> --ttl 240

示例

velero schedule create daily-backup --schedule="0 1 * * *" --include-namespaces argocd,blackbox,chaosblade --ttl 240
  • 查看定时任务

velero get schedules

其他指令

  • velero卸载

velero uninstall

k8s集群迁移 

在目标集群安装velero,安装参数的s3url(“s3Url=http://<minio-api-url>”)指向源集群的minio,在完成部署后,方可进行备份浏览和还原,但需要注意以下两个细节:

  1. 还原到目标集群的备份数据中不要包含kube-system命名空间的资源,避免冲突

  2. 如果storageClass的名称发生变更,需要进行映射

将下面文件保存为velero-sc.yaml,将<target-sc>修改为目标集群的storageClass名称,并通过kubectl apply -f velero-sc.yaml执行映射,然后再进行数据还原。

apiVersion: v1
kind: ConfigMap
metadata:
  name: change-storage-class-config
  namespace: velero
  labels:
    velero.io/plugin-config: ""
    velero.io/change-storage-class: RestoreItemAction
data:
  cfs-v4: <target-sc>

结语

velero使kubernetes的备份、还原和迁移更加灵活和简单,本次分享就到这里,谢谢!

参考链接

https://min.io/docs/minio/linux/index.html

https://cloudcasa.io/blog/getting-to-know-velero-backup-and-important-velero-resources-that-you-can-utilise/

欢迎订阅我的公众号「SRE运维手记」

标签:velero,minio,--,备份,集群,k8s,backup,create
From: https://blog.csdn.net/weixin_41350845/article/details/142306038

相关文章

  • mongo集群同步数据异常,手动同步节点副本数据
    转载请注明出处:数据同步方案当副本集节点的复制进程落后太多,以至于主节点覆盖了该节点尚未复制的oplog条目时,副本集节点就会变为“陈旧”。节点跟不上,就会变得“陈旧”。出现这种情况时,必须删除副本集节点的数据,然后执行初始同步,从而完全重新同步该节点。MongoDB提供了......
  • k8s的RC和RS的区别
    动一下小手点一下赞。谢谢!你的赞就是我更新的动力。在深入了解Kubernetes(K8S)中的ReplicationController(RC)和ReplicaSet(RS)之前,首先我们需要了解它们的概念和作用。RC是Kubernetes早期版本的概念,用于确保在任何时间都能保持指定数量的Pod副本。RS是RC的新版本,提供了更强大的选择器支......
  • 帝国CMS搬家以及帝国cms备份数据库方法
    帝国CMS(EmpireCMS,简称ECMS)搬家以及备份数据库的方法主要包括几个步骤:备份数据库、备份网站文件、在新服务器上恢复数据、测试新站点等。下面将详细说明这些步骤:1.备份数据库使用帝国CMS后台备份登录后台:登录帝国CMS的管理后台。进入备份与恢复数据页面:在后台导航中......
  • 帝国网站如何备份数据库
    帝国CMS(EmpireCMS,简称ECMS)提供了多种方法来备份数据库,包括使用内置的备份工具、通过数据库管理工具(如phpMyAdmin)或使用命令行工具(如mysqldump)。下面是几种常见的备份方法:1.使用帝国CMS后台备份步骤:登录帝国CMS后台:使用管理员账号登录帝国CMS的管理后台。进入备份与恢......
  • 帝国CMS备份还原数据库
    帝国CMS(EmpireCMS,简称ECMS)提供了内置的备份与恢复工具,允许用户轻松地备份和恢复数据库。以下是使用帝国CMS后台工具进行数据库备份和恢复的步骤,以及一些额外的方法。使用帝国CMS后台工具备份和恢复数据库备份数据库登录帝国CMS后台:使用管理员账号登录帝国CMS的管理后台。......
  • 帝国cms备份和恢复 帝国cms恢复数据
    帝国CMS(EmpireCMS,简称ECMS)提供了内置的备份与恢复工具,使得用户能够方便地备份和恢复数据库。下面是使用帝国CMS后台工具进行数据库备份和恢复的具体步骤。备份数据库登录帝国CMS后台:使用管理员账号登录帝国CMS的管理后台。进入备份与恢复数据页面:在后台管理界面中,进入......
  • 帝国cms备份的数据库文件夹-帝国CMS备份中心
    帝国CMS提供了内置的备份工具,称为“帝国备份王”,用于备份和恢复数据库。备份的数据库文件通常会被保存在一个特定的文件夹中。以下是关于帝国CMS备份的一些基本信息和备份文件夹的位置:备份文件夹位置帝国CMS备份的文件通常保存在网站根目录下的/data/backup/文件夹中。在这个文......
  • dedecms备份数据库文件在哪里
    DEDECMS备份数据库文件通常保存在一个特定的目录中。以下是DEDECMS数据库备份文件的一般位置:备份目录:备份文件通常保存在/data/backupdata目录中。如何找到备份文件通过FTP客户端访问:使用FTP客户端(如FileZilla、WinSCP等)连接到你的服务器或虚拟主机。寻找DEDECMS的安装......
  • 在k8s中,客户端访问服务的链路流程,ingress--->service--->deployment--->pod--->container
                                                                图片来源:自己画的ingress是一个API资源。客户端访问ingress的不同urlingress给客户端返回不同的服务。就和nginx反向代理服务器一样。根据......
  • k8s官网下载模板yaml方法
    动一下小手点一下赞。谢谢!你的赞就是我更新的动力。Kubernetes官网下载模板yaml方法指南概述Kubernetes(简称K8s)是一个开源的容器编排平台,可以实现容器化应用的部署、扩展和管理。Kubernetes官网提供了丰富的资源和文档,其中包括各种示例的模板yaml文件,用于快速部署应用和配置资源。......