velero 集群备份实战

news2024/12/29 19:10:14

文章目录

  • velero 集群备份实战
    • velero 架构
    • velero 安装
    • 备份mysql集群
      • 备份命令
      • 查看备份列表
    • 如何恢复?
    • 如何卸载?
    • 报错处理

velero 集群备份实战

velero 架构

vmware 的产品。velero 是一个CS架构,服务端是一堆CRD, 监听客户端发来的请求。

优势:

  • 份集群数据,并在集群故障的情况下进行还原
  • 将集群资源迁移到其他集群
  • 将生产集群复制到开发和测试集群
  • 支持restic

在这里插入图片描述

velero 安装

  • Helm Chart 来进行安装
  • velero client安装

这里使用velero client安装,下载地址


使用 minio 来作为对象存储,minio 是兼容 S3 的,所以这里我们配置的 provider(声明使用的 Velero 插件类型)是 aws--secret-file 用来提供访问 minio 的密钥,--use-restic 表示使用开源免费备份工具 restic 备份和还原持久卷数据,启用该参数后会部署一个名为 restic 的 DaemonSet 对象,--plugins 使用的 velero 插件,这里使用 AWS S3 兼容插件。

velero install    \
     --provider aws   \
     --bucket velero   \
     --image 10.50.10.185/velero/velero:v1.9.7  \
     --plugins 10.50.10.185/velero/velero-plugin-for-aws:v1.5.5  \
     --namespace velero  \
     --secret-file ./credentials-velero  \
     --use-volume-snapshots=false \
     --use-restic \
     --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://chot-minio-api.prod.com:32111

注意点

  • credentials-velero 的内容
# minio 的秘钥信息
[default]
aws_access_key_id=<access key id> 
aws_secret_access_key=<secret access key>
  • minio 的api 地址进行本地host解析( 请思考为何写svc不可以?)

安装完成后 velero 的服务端就部署成功了。

  • 执行完之后在minio console 确认bucket是否创建成功

在这里插入图片描述

  • 确认安装log
kubectl logs deployment/velero -n velero

备份mysql集群

mysql 一共两个节点

k get po -n mysql-velero
NAME      READY   STATUS    RESTARTS        AGE
mysql-0   2/2     Running   0               5m32s
mysql-1   2/2     Running   1 (4m45s ago)   5m20s

在mysql中创建一个数据库

mysql> create database velero_test;
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> show databases;
+------------------------+
| Database               |
+------------------------+
| velero_test            |
+------------------------+

这个ns等会备份完之后直接干掉。

备份命令

$ velero backup  create mysql-velero-backup --include-namespaces mysql-velero --default-volumes-to-restic
Backup request "mysql-velero-backup" submitted successfully.
Run `velero backup describe mysql-velero-backup` or `velero backup logs mysql-velero-backup` for more details.

查看备份列表

elero backup get

$ velero backup get
NAME                       STATUS       ERRORS   WARNINGS   CREATED                         EXPIRES   STORAGE LOCATION   SELECTOR
mysql-velero-backup        InProgress   0        0          2023-06-28 15:49:08 +0800 CST   29d       default            <none>

稍等片刻就备份好了,因为没啥数据。

此时minio 应该就有备份数据了。

在这里插入图片描述

如何恢复?

直接删除 mysql-velero 这个ns。然后恢复。

如何卸载?

首次安装的时候minio 的秘钥写错了,需要重新部署,卸载后重新部署

velero uninstall --force -n velero
Waiting for velero namespace "velero" to be deleted
.....................................................................
Velero namespace "velero" deleted
Velero uninstalled ⛵

报错处理

  1. minio 的svc地址报错

s3Url=http://chot-minio.minio.svc.cluster.local:9000 minio使用这个地址,备份报错

velero backup logs mysql-backup
An error occurred: Get "http://chot-minio.minio.svc.cluster.local:9000/velero/backups/mysql-backup/mysql-backup-logs.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=wPZ0tVrD0Kdm1K4U%2F20230627%2Fminio%2Fs3%2Faws4_request&X-Amz-Date=20230627T084946Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=40edf68d0f72dbfafae2be6321c19d08259e07b53f8249efc9c868f4a3fb83f7": 
dial tcp: lookup chot-minio.minio.svc.cluster.local on 10.0.2.3:53: no such host

minio 的svc如下,使用 chot-minio.minio.svc:9000

# 9000是minio 的api端口, 9001是web console 端口
k get svc -n minio
NAME                  TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                         AGE
chot-minio            NodePort    10.96.96.43   <none>        9000:32111/TCP,9001:30559/TCP   109d

服务端的安装使用的是celero客户段命令,这个velero命令是在宿主机,域名也是先走宿主机,宿主机当然不认识和这个集群内的域名了,所以这里应该使用nodeport + 本地hosts解析 访问minio api.

改成这个s3Url=http://chot-minio-api.prod.com:32111即可。宿主机本地需要解析这个域名。

  1. 备份报错

还是用ip地址吧,这个域名解析好像又跑到k8s内部去了。 10.96.2.53 这个IP 是coreDNS 的svc ip。

caused by: Head
    "http://chot-minio-api.prod.com:32111/velero/backups/mysql-backup-new20230628/velero-backup.json":
    dial tcp: lookup chot-minio-api.prod.com on 10.96.0.2:53: no such host

换成ip 就没有问题了。

  1. 恢复报错

恢复的时候需要和这个helper镜像。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1171203.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【多线程】龟兔赛跑

package org.example;public class Race implements Runnable {//胜利者private static String winner;Overridepublic void run() {for(int i0;i<100;i){boolean flag gameOver(i);//如果flag>100,结束比赛if(flag){break;}System.out.println(Thread.currentThread().g…

批量剪辑:高效处理视频文件的图文解析,AI智剪方法

随着视频文件的数量和种类不断增加&#xff0c;传统的视频剪辑方法往往效率低下且费时费力。为了解决这个问题&#xff0c;批量剪辑和AI智剪技术应运而生。在剪辑过程中&#xff0c;AI智剪可自动调整画面质量、音效、色彩等参数&#xff0c;以保证视频质量。它们可以帮助我们高…

uniapp原生插件之安卓文件操作原生插件

插件介绍 安卓文件操作原生插件&#xff0c;读写文件&#xff0c;文件下载等&#xff0c;支持读取移动设备路径等外部存储设备路径&#xff0c;如U盘路径 插件地址 安卓文件操作原生插件 - DCloud 插件市场 超级福利 uniapp 插件购买超级福利 详细使用文档 uniapp 安卓文…

WPF中依赖属性及附加属性的概念及用法

完全来源于十月的寒流&#xff0c;感谢大佬讲解 依赖属性 由依赖属性提供的属性功能 与字段支持的属性不同&#xff0c;依赖属性扩展了属性的功能。 通常&#xff0c;添加的功能表示或支持以下功能之一&#xff1a; 资源数据绑定样式动画元数据重写属性值继承WPF 设计器集成 …

前端找工作好难啊,准备转行了

前言 23年本科应届生&#xff0c;培训机构出来找了2个月&#xff0c;全国海投&#xff0c;3k白干都没人要。 所以经过朋友的推荐&#xff0c;我开始学习网络安全&#xff0c;一共学了大概 5 个多月的时间&#xff0c;今年的 3 月 6 号在长沙找到了一份安全研发的工作&#xff…

虚拟机创建与连接的详细步骤

文章目录 什么是虚拟机&#xff1f;步骤1: 选择虚拟化软件1.1 VirtualBox1.2 VMware Workstation1.3 VMware Player1.4 Hyper-V 步骤2: 创建虚拟机2.1 打开虚拟化软件2.2 创建新虚拟机2.3 配置虚拟机2.4 安装操作系统2.5 启动虚拟机 步骤3: 连接虚拟机3.1 图形用户界面 (GUI)3.…

SWAT-MODFLOW地表水与地下水耦合模型的建模及应用

目录 第一讲 模型原理与层次结构 第二讲 QGIS软件 第三讲 基于QSWATMOD的SWAT-MODFLOW模拟 第四讲 QSWAT模型介绍与建模 第五讲 基于QGIS的数据制备 第六讲 基于CUP的SWAT参数率定 第七讲 MODFLOW模型讲解 第八讲 结果分析 更多应用 耦合模型被应用到很多科学和工程领…

手把手创建第一个 Android 项目

目录 1. 如何创建 Android 项目 2. 编写代码 3. 运行 Android 应用程序 4. Android 项目结构 Android的开发环境搭建好之后,我们就可以开发并运行Android程序了。Android程序是运行在手机等移动设备上的&#xff0c;但是开发 Android 程序却一般不会放在移动设备上完成…

C++:set和map的使用

set和map的使用 1.关联式容器2.key模型和key_value模型3.set3.1一些注意点3.2set的使用3.3习题 4.multiset5.map5.1一些注意点5.2map的使用5.3习题 6.multimap 1.关联式容器 序列式容器&#xff1a;比如我们之前讲的vector、string、list等均为序列式容器&#xff0c;特点是按…

回归预测 | Matlab实现MPA-BP海洋捕食者算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现MPA-BP海洋捕食者算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现MPA-BP海洋捕食者算法优化BP神经网络多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现MPA-BP海洋捕食者算法优化BP神经网络多变量回归预测&…

重新思考边缘负载均衡

本文介绍了Netflix在基于轮询的负载均衡的基础上&#xff0c;集成了包括服务器使用率在内的多因素指标&#xff0c;并对冷启动服务器进行了特殊处理&#xff0c;从而优化了负载均衡逻辑&#xff0c;提升了整体业务性能。原文: Rethinking Netflix’s Edge Load Balancing[1] 我…

全功能测试框架 - Carina

Carina是一个基于Java的测试自动化框架&#xff0c;它将所有测试层结合在一起&#xff1a;移动应用程序&#xff08;web、本机、混合&#xff09;、web应用程序、REST服务和数据库。 github&#xff1a;GitHub - zebrunner/carina: Carina automation framework (TestNG): Web…

MySQL(7):单行函数

不同DBMS函数的差异 内置函数&#xff1a; 系统内置的通用函数。 自定义函数&#xff1a; 根据自己的需要编写的函数。 大多数 DBMS 使用&#xff08;||&#xff09;或者&#xff08;&#xff09;来做拼接符&#xff0c;而在 MySQL 中的字符串拼接函数为concat()。 大部分 D…

【rust/esp32】初识slint ui框架并在st7789 lcd上显示

文章目录 说在前面关于slint关于no-std关于dma准备工作相关依赖代码结果参考 说在前面 esp32版本&#xff1a;s3运行环境&#xff1a;no-std开发环境&#xff1a;wsl2LCD模块&#xff1a;ST7789V2 240*280 LCDSlint版本&#xff1a;master分支github地址&#xff1a;这里 关于s…

asp.net docker-compose添加dapr配置

docker-compose.yml添加配置 webapplication1-dapr:image: "daprio/daprd:1.9.6"network_mode: "service:webapplication1"depends_on:- webapplication1 docker-compose.override.yml中添加 dapr-placement:command: ["./placement", "-po…

Nacos 注册中心如何做到每秒百万级别的服务注册?

1. Nacos 注册中心如何做到每秒百万级别的服务注册 &#xff1f; 在 nacos.io 官方文档里边有这样一个性能测试报告&#xff1a; PS&#xff1a;TPS 是指每秒能够处理的事物数 / 任务数 从图中可以看出当有 4 台机器&#xff0c;并发数为 100 的时候&#xff0c;注册实例的测…

SpringSecurity全家桶 (一) —— 简介

1. 概述 Spring Security 是一个框架&#xff0c;提供针对常见攻击的身份验证、授权和保护。 它为保护命令式和响应式应用程序提供了一流的支持&#xff0c;是保护基于 Spring 的应用程序的事实标准。 2. 了解 shiro&#xff1a; 在之前SSM框架盛行的时代&#xff0c;项目的…

在maven官网中如何下载低版本的maven

链接&#xff1a;https://archive.apache.org/dist/maven/maven-3/

万宾科技管网水位监测助力智慧城市的排水系统

以往如果要了解城市地下排水管网的水位变化&#xff0c;需要依靠人工巡检或者排查的方式&#xff0c;这不仅加大了人员的工作量&#xff0c;而且也为市政府带来了更多的工作难题。比如人员监管监测不到位或无法远程监控等情况&#xff0c;都会降低市政府对排水管网的管理能力&a…

汇编语言(举个栗子)

汇编语言&#xff08;Assembly Language&#xff09;是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言&#xff0c;亦称为符号语言。在汇编语言中&#xff0c;用助记符代替机器指令的操作码&#xff0c;用地址符号或标号代替指令或操作数的地址。在不同…