首页 > 其他分享 >使用Velero备份K8S资源,看这篇干货就够了

使用Velero备份K8S资源,看这篇干货就够了

时间:2024-07-31 13:38:59浏览次数:20  
标签:Velero minio velero -- 备份 就够 集群 K8S

一、Velero简介

图片

 

Velero提供备份和恢复 Kubernetes 集群资源和持久卷的工具。

Velero功能:

对群集进行备份,并在丢失时进行还原。

将集群资源迁移到其他集群。

Velero 包括:

在群集上运行的服务器

在本地运行的命令行客户端

开源地址:https://github.com/vmware-tanzu/velero

官方文档:Velero

velero备份流程

velero客户端调用kubernetes API Server创建backup任务

Backup控制器基于watch机制通过Api Server获取到备份任务

Backup控制器开始执行备份动作,会通过请求Api Server获取到需要备份的数据

Backup 控制器将获取到的数据备份到指定的对象存储server端




图片图片

二、准备后端存储

图片

 

Velero支持很多种存储插件,可查看:Velero Docs - Providers获取插件信息,我们这里使用minio作为S3兼容的对象存储提供程序。也可以在任意地方部署Minio对象存储,只需要保证K8S集群可以访问到即可。

这里使用一台独立机器docker部署minio

1、下载minio的docker镜像

图片    

2、准备数据目录

# mkdir -pv /data/minio

3、docker部署minio

图片

两个变量定义minio的用户、密码

MINIO_ROOT_USER

MINIO_ROOT_PASSWORD

一个管理端口9999,一个数据端口9000

容器正常启动后,通过浏览器访问http://IP:9999 输入上面定义的用户、密码即可登录

图片

登录之后,创建一个Bucket,命名为velerodata

图片

参考文章 Docker 搭建 Minio 容器 (完整详细版)_docker minio

minio也可部署到 k8s集群里             

 



图片图片

三、安装velero

图片

 

velero包含velero客户端和服务端,服务端需要部署在可以使用kubectl命令操作k8s集群的机器上,这里就安装在k8s的master上

从GitHub上搜索下载即可:Releases · vmware-tanzu/velero · GitHub

下载最新的release linux_amd64版本

图片

将velero执行程序cp至/usr/local/bin/目录下即可,部署Server之前Server的版本是获取不到的

图片

部署Server

先创建认证文件,把minio的用户名、密码写到这个文件

图片

使用velero命令部署velero server

 

velero install \  --provider aws \      --image velero/velero:latest \  --plugins velero/velero-plugin-for-aws:v1.8.2 \  --bucket velerodata \  --secret-file /root/credentials-velero \  --use-node-agent \  --use-volume-snapshots=false \  --namespace velero \  --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://100.149.133.147:9000 \  --wait

 

# 执行install命令后会创建一系列清单,包括CustomResourceDefinition、Namespace、Deployment等。

这里遇到一个坑

图片

有些节点上的node-agent pod总是起不来,查看日志报没有velero命令(这个是node-agent pod里容器的默认命令),后面通过检查发现报错的节点上的velero image不是最新的,但tag确实是latest,确实是个坑    

图片

图片

旧版本镜像是45.5MB,新版本镜像是59.7MB,使用crictl重新下载正常的镜像,然后使用nerdctl工具把新版本镜像的tag改成docker.io/velero/velero:latest(与daemonset里的一致),之后pods成功启动

图片

卸载velero    

kubectl delete namespace/velero clusterrolebinding/velero

kubectl delete crds -l component=velero          

图片图片

四、备份、恢复k8s上的资源

图片

 

使用官方案例创建测试应用

图片

创建备份

图片

到minio上查看备份数据

图片

测试恢复

先删除nginx-example名称空间里的所有资源    

图片

创建恢复,再检查nginx-example名称空间里的资源,可以看到名称空间里的资源恢复回来了

图片

备份命令参数

图片

图片

恢复命令参数

图片

批量备份名称空间脚本,这个脚本定时执行即可达到定时备份所有名称空间的目的

图片

 

图片图片

五、资源迁移

图片

 

这个架构里有个巧妙的地方是,如果两个k8s集群上都有velero,并且velero的后端存储指向同一个Bucket,这样这个Bucket可以当做共享存储来用,即从集群A备份出来的数据,可以轻松恢复到集群B上,这样也相当于一个迁移动作。    

如上个步骤备份的nginx-backup1220可以在另一个集群上恢复,如下是在集群B上恢复了nginx-backup1220,从svc的cluster-ip可以看到这是另一个集群

从这个过程得知,如果多个集群上的velero的后端存储指向相同的Bucket,velero的备份可以在多个集群上共享使用。

图片

更多自定义的备份恢复,后面再补充。。。

参考文章 https://www.cnblogs.com/wubolive/p/17345716.html

标签:Velero,minio,velero,--,备份,就够,集群,K8S
From: https://www.cnblogs.com/cheyunhua/p/18334448

相关文章

  • 学完网络安全出去能做什么工作?(非常详细)零基础入门到精通,收藏这一篇就够了
    想要了解学完网络安全工程师就业班后,出去能做什么工作,这个时候会分甲方或是乙方,看个人更偏向哪个岗位。甲方指的是政府、海关、税务机构、高校及其他国有银行、商业银行,以及移动运营商(如中国移动、中国联通、中国电信)和一些大型央企国企,如电力、石油化工、烟草、轨道交通等......
  • K8s大模型算力调度策略的深度解析
    随着大数据和人工智能技术的飞速发展,Kubernetes(简称K8s)作为容器编排的领军者,在支撑大规模模型训练和推理方面扮演着越来越重要的角色。在大模型算力的调度过程中,如何高效、合理地分配和管理资源成为了一个亟待解决的问题。本文将深入探讨K8s在大模型算力调度中的策略与实践。......
  • 二进制部署k8s集群之cni网络插件flannel和calico工作原理(中)
    目录1.k8s的三种网络模式2.flannel网络插件3.部署CNI网络组件4.Calico介绍1.k8s的三种网络模式k8s集群中pod网络通信分类1、pod内容器之间的通信在同一个Pod内的容器(Pod内的容器是不会跨宿主机的)共享同一个网络命令空间,相当于它们在同一台机器上一样,可以用loc......
  • opencloudosV8.6和openEuler 24安装 k8s
    在三台机器上部署Kubernetes集群1.环境准备2.在所有节点上进行以下步骤1.更新系统和安装必要的软件包2.禁用交换分区3.禁用防火墙和SElinux4.系统主机名5.设置主机名与IP地址解析6.配置内核转发及网桥过滤7.配置DockerCgroup驱动8.添加Kubernetes仓库并安装......
  • 在K8S中,Pod有几种探针?
    在Kubernetes(K8s)中,Pod的容器可以通过探针(Probes)来检测容器的健康状况和就绪状态。探针主要用于确保容器能够正确启动并在运行过程中保持健康状态。Kubernetes支持三种类型的探针:livenessProbe(存活探针)readinessProbe(就绪探针)startupProbe(启动探针)每种探针都......
  • 在K8S中,删除一个Pod会发生什么事情?
    在Kubernetes(K8S)中,删除一个Pod会触发一系列操作,包括向容器发送终止信号、清理资源以及可能的重新调度。以下将详细阐述具体过程:用户发出删除命令命令提交:用户通过kubectl命令行工具或者API接口发出删除Pod的请求,例如执行kubectldeletepod<pod-name>[3]。APIServer响应:Kub......
  • SRC漏洞挖掘上分技巧(非常详细)零基础入门到精通,收藏这一篇就够了
    0x00简介今天就分享一下公益SRC漏洞的批量挖掘的技巧和所要用到的一些相关的工具和脚本出来和各位师傅交流一下,不足之处还希望师傅们多多指教。0x01国内的一些公益src漏洞平台漏洞盒子:https://www.vulbox.com``补天漏洞响应平台:https://www.butian.net``CNNVD信......
  • k8s工作负载控制器--Deployment
    目录一、引入背景二、主要功能三、资源清单四、实例1、流程2、创建Deployment资源清单3、创建Deployment4、检查Deployment是否创建成功(正在创建)5、查看Deployment的上线状态6、再次查看Deployment状态(创建完成)7、查看Deployment创建的ReplicaSet(rs)8、查看被创建的Pod的标签9、......
  • k8s命令行工具扩展
    工具kubectxwhat?切换context、namespace$kubectxminikubeSwitchedtocontext"minikube".$kubenskube-systemContext"test"set.Activenamespaceis"kube-system".fzfwhat?fzf:fuzzyfinder,一个通用的命令行模糊搜索工具主要用来列举env、cont......
  • 在K8S中,pause容器作用是什么?
    在Kubernetes(K8S)中,pause容器是一个特殊的、由系统提供的最小容器,它被用作Pod网络命名空间中的一个占位符。每个Pod都有一个pause容器,即使用户没有显式地定义它。pause容器的主要作用是确保Pod中的所有其他容器可以共享网络栈。以下是pause容器的一些关键作用:......