当前位置: 首页 > news >正文

KubeVirt备份与还原方案【翻译】

KubeVirt备份与还原方案【翻译】

ref:https://github.com/kubevirt/kubevirt/blob/main/docs/backup-restore-integration.md

备份

  1. 为所有必需的k8s资源构建依赖关系图
  2. 冻结应用程序
  3. pvc数据快照
  4. 解冻应用程序
  5. 将所有必需的k8s资源定义拷贝到一个共享的存储位置
  6. (可选)将PVC数据快照导出到一个共享存储位置

步骤3、5、6不在本文档讨论范围之内

恢复

  1. 使用快照数据填充PVC
  2. 清理并应用所有相关的k8s资源定义

步骤1超出本文档讨论范围

现有的Kubevirt备份解决方案

velero 插件

Velero是用来备份/迁移k8s集群的。kubevirt团队积极维护了一个用于velero的插件。这个插件实现了不少本文档所描述的逻辑。

VirtualMachineSnapshot + VirtualMachineExport API

vm快照和vm导出api

vm snapshot api为kubevirt用户提供了一种快捷的方式来在集群中备份vm。它本身不适合异地备份或灾难恢复。但是跟vm export api一起使用,vm的存储卷就可以被用来拷贝数据到远程位置。

建立kubevirt对象图

!backup-graph.png

(主要就是vm-vmi-pod,以及datavolume-pvc)

对象图中的节点格式:APIGroup-Kind-namespace-name

VM 对象图

apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:name: vm1namespace: ns1
...
  • (“kubevirt.io”, “VirtualMachine”, “ns1”, “vm1”)

(apigroup 是 kubevirt.io,kind是VM,在ns1命名空间下,名字叫做vm1)

spec

(spec是kubevirt的crd中自定义内容较多的一个部分)

spec.instancetype

...
spec:instancetype:kind: VirtualMachineInstancetypename: small
...
  • (“instancetype.kubevirt.io”, “VirtualMachineInstancetype”, “ns1”, “small”)

spe.preference

...
spec:preference:kind: VirtualMachinePreferencename: windows
...
  • (“instancetype.kubevirt.io”, “VirtualMachinePreference”, “ns1”, “windows”)

spec.template

见vmi的对象图

VMI 对象图

apiVersion: kubevirt.io/v1
kind: VirtualMachineInstance
metadata:name: vmi1namespace: ns1
...
  • (“kubevirt.io”, “VirtualMachineInstance”, “ns1”, “vmi1”)
  • (“”, “Pod”, “ns1”, “virt-launcher-vmi1-XXXXX”) *

*每个VMI有一个关联的唯一命名的pod,备份过程可以通过使用 kubevirt.io/created-by=<vmi uid>来寻找这个pod的名称

spec.volumes[*].persistentVolumeClaim

...
spec:volumes:- name: v1persistentVolumeClaim:claimName: pvc1
...
  • (“”, “PersistentVolumeClaim”, “ns1”, “pvc1”)
  • (“cdi.kubevirt.io”, “DataVolume”, “ns1”, “pvc1”)

spec.volumes[*].dataVolume

...
spec:volumes:- name: v1dataVolume:name: dv1
...
  • (“”, “PersistentVolumeClaim”, “ns1”, “dv1”)
  • (“cdi.kubevirt.io”, “DataVolume”, “ns1”, “dv1”)

spec.volumes[*].configMap

...
spec:volumes:- name: v1configMap:name: cm1
...
  • (“”, “ConfigMap”, “ns1”, “cm1”)****

(剩下的就不一一复制粘贴了)

  • (“”, “Secret”, “ns1”, “s1”)
  • (“”, “ServiceAccount”, “ns1”, “sa1”)
  • (“”, “PersistentVolumeClaim”, “ns1”, “pvc1”)
  • • (“”, “Secret”, “ns1”, “my-pub-key”)
  • • (“”, “Secret”, “ns1”, “my-user-password”)

VMI ReplicaSet

  • (“kubevirt.io”, “VirtualMachineInstanceReplicaSet”, “ns1”, “vmirs1”)
  • (“kubevirt.io”, “VirtualMachineInstance”, “ns1”, “vmirs1XXXX1”) *
  • (“kubevirt.io”, “VirtualMachineInstance”, “ns1”, “vmirs1XXXX2”) *

*一般都有多个VMI关联在一个VMIReplicaSet中,备份过程可以搜寻kubevirt.io/vmReplicaSet= 作为标签选择器。

备份动作

用户文件系统冻结/解冻hook

还原动作

VM还原

如果还原到不同的集群,并且明确设置了mac地址或bios序列号,需要确保不会发生冲突,在这里设置:

/spec/template/spec/domain/devices/interfaces/<index>/macAddress
/spec/template/spec/domain/firmware/serial

VMI还原

如果一个VMI归属于一个VM,则这个VMI不应该被还原。kubevirt controller会根据VM定义重建VMI。否则,VMI定义有可能以VM相同预配置的Mac/bios进行恢复(可能导致重复)。

virt-launcher pod 还原

属于一个VMI,带有”virt-launcher-”前缀的pod不应该被还原。

DataVolume还原

在succeeded阶段的datavolumes需要在还原期间设置以下annotation。否则关联的pvc可能有损坏。除了Succeeded之外任何阶段的datavolumes都不需要注释。

cdi.kubevirt.io/storage.prePopulated: <datavolume name>

PVC还原

归属于DataVolumes的PVC必须在备份/还原时加annotation

cdi.kubevirt.io/storage.populatedFor: <datavolume name>

相关文章:

KubeVirt备份与还原方案【翻译】

KubeVirt备份与还原方案【翻译】 ref:https://github.com/kubevirt/kubevirt/blob/main/docs/backup-restore-integration.md 备份 为所有必需的k8s资源构建依赖关系图冻结应用程序pvc数据快照解冻应用程序将所有必需的k8s资源定义拷贝到一个共享的存储位置&#xff08;可选…...

使用PyQt5设计一款简单的计算器

目录 一、环境配置&#xff1a; 二、代码实现 三、主程序 四、总结 本文使用PyQt5设计一款简单的计算器&#xff0c;可以通过界面交互实现加减乘除的功能&#xff0c;希望能够给初学者一些帮助。主要涉及的知识点有类的定义与初始化、类的成员函数、pyqt5的信号与槽函数等。…...

Htop使用说明

目录 引言 什么是htop htop安装 htop界面介绍 htop功能介绍 引言 我们使用服务器的时候常常需要关注下自己的程序资源占用情况&#xff0c;htop就是一种互动式的进程查查看器&#xff0c;整齐用下来感觉比top的逼格高&#xff0c;造作可视化都更方便些&#xff0c;我觉得还…...

PostgreSQL Linux安装

安装依赖&#xff1a; sudo yum -y install readline-devel zlib-devel 安装Postgres&#xff1a; ssh hadoophadoop001 #下载Postgres wget https://ftp.postgresql.org/pub/source/v14.2/postgresql-14.2.tar.gz tar -zxvf postgresql-14.2.tar.gz -C /data #编译前准备 /dat…...

亚商投资顾问 早餐FM/0509车辆电动化

01/亚商投资顾问 早间导读 1.上交所拟于5月11日举办“发现央企投资价值&#xff0c;促进央企估值回归”交流会 2.监管部门十方面举措加强房地产经纪行业管理 3.广东&#xff1a;推动城市公共服务及货运配送车辆电动化替代 4.昆山两楼盘因大幅降价被暂停网签&#xff1a;降幅…...

AI绘画天花板——Midjourney注册使用保姆级教程(5月5日验证有效)

大家好&#xff0c;我是可夫小子&#xff0c;关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加我&#xff0c;备注&#xff1a;aigc&#xff0c;拉你进群。 现在市面上AI绘图大概有三大阵营&#xff1a;Midjourney、Stable Diffusion&#xff0c;还有一个就是OpenAI实…...

学习笔记(2)项目结构描述 - manifest.json和pages.json

目录 1&#xff0c;manifest.json2&#xff0c;pages.json2.1&#xff0c;pages2.2&#xff0c;globalStyle2.3&#xff0c;tabBar 1&#xff0c;manifest.json 官方详情 uni-app 的 appid 由 DCloud 云端分配&#xff0c;主要用于 DCloud 相关的云服务&#xff0c;请勿自行修…...

vector、deque、list相关知识点

vector erase返回迭代器指向删除元素后的元素insert返回迭代器指插入的元素reserve只给容器底层开指定大小内存空间&#xff0c;并不添加新元素 deque 底层数据结构 动态开辟的二维数组&#xff0c;一维数组从2开始&#xff0c;以2倍方式扩容&#xff0c;每次扩容和&#x…...

多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比

多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比 目录 多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比预测效果基本介绍程序设计学习总结参考资料 预测效果 基本介绍 多维时序 …...

设计模式——适配器模式(类适配器、对象适配器)

是什么&#xff1f; 我们平时的有线耳机接口分为USB的和Type-C的接口&#xff0c;但是手机的耳机插口却只有一个&#xff0c;像华为的耳机插口现在基本都是Type-c的&#xff0c;那如果我们现在只有USB接口的耳机怎么办呢&#xff0c;这个时候就需要使用到一个转换器&#xff0c…...

iOS开发多target

场景 背景:设想一下有一个场景,一个业务分为多种身份,他们大部分功能是相同的,但是也有自己的差异性。这种情况,想要构建出不同身份的APP。你会怎么做??? 当然,你可以拷贝一份代码出来,给项目重新命名。这样做的好处是,他们互相不会冲突,不用去关心是否有逻辑的冲…...

100种思维模型之每日评估思维模型-58

曾子曰&#xff1a;吾日三省吾省&#xff0c;为人谋而不忠乎&#xff1f;与朋友交不信乎&#xff1f;传不习乎&#xff1f; 曾国藩&#xff0c;坚持每日写复盘日记&#xff0c;最后他用自己的实践经历向我们证明&#xff1a;一个智商很平庸、出身很普通且有着各种毛病的人&…...

libreoffice api

libreOffice API是用于访问libreOffice的编程接口。可以使用libreOffice API创建、打开、修改和打印libreOffice文档。 LibreOffice API支持Basic、Java、C/C、Javascript、Python语言。 这是通过一种称为通用网络对象 (Universal Network Objects, UNO) 的技术实现的&#xff…...

全网最火,Web自动化测试驱动模型详全,一语点通超实用...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 自动化测试模型&a…...

如何写软件测试简历项目经验,靠这个面试都要赶场

一、前言&#xff1a;浅谈面试 面试是我们进入一个公司的门槛&#xff0c;通过了面试才能进入公司&#xff0c;你的面试结果和你的薪资是息息相关的。那如何才能顺利的通过面试&#xff0c;得到公司的认可呢?面试软件测试要注意哪些问题呢?下面和笔者一起来看看吧。这里分享一…...

【Linux】Linux下安装Mysql(图文解说详细版)

文章目录 前言第一步&#xff0c;进到opt文件夹下面&#xff0c;为什么&#xff1f;因为opt文件夹相当于Windows下的D://software第二步&#xff0c;用yum安装第三步&#xff0c;设置mysql的相关配置第四步&#xff0c;设置远程连接。第五步&#xff0c;更改mysql的语言第六步&…...

Cookie和Session的API、登录页面

目录 一、Cookie 和 Session 1、HttpServletRequest 类中的相关方法 2、HttpServletResponse 类中的相关方法 3、HttpSession 类中的相关方法 4、Cookie 类中的相关方法 二、网页登录 1、约定前后端交互接口 2、编写一个简单的登录页面 3、编写一个Servlet 来处理这个…...

C++数据结构:手撕红黑树

目录 一. 红黑树的概念及结构 二. 红黑树节点的定义 三. 红黑树节点的插入 3.1 初步查找插入节点的位置并插入节点 3.2 红黑树结构的调整 3.3 红黑树节点插入完整版代码 四. 红黑树的结构检查 4.1 检查是否为搜索树 4.2 检查节点颜色是否满足要求 附录&#xff1a;红黑…...

Spring IoC 深度学习

Io回顾 IoC 是 Inversion of Control 的简写&#xff0c;译为“控制反转”&#xff0c;它不是一门技术&#xff0c;而是一种设计思想&#xff0c;是一个重要的面向对象编程法则&#xff0c;能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容器来管理所有 Jav…...

C语言从入门到精通第17天(指针和数组联用)

指针和数组联用 不同类型指针变量之间的区别数组的指针指针数组 不同类型指针变量之间的区别 在了解数组和指针联用之前&#xff0c;我们先对指针变量进行补充。我们对比一下int *p1和char *p2的区别&#xff1f; 相同点&#xff1a; 都是指针变量都是用来保存一个内存地址编…...

Android9.0 原生系统SystemUI下拉状态栏和通知栏视图之锁屏通知布局

1.前言 在9.0的系统rom定制化开发中,对于系统原生systemui的锁屏界面的功能也是非常重要的,所以在锁屏页面布局中,也是有通知栏布局的,所以接下来对于息屏亮屏 通知栏布局的相关流程分析,看下亮屏后锁屏页面做了哪些功能 2.原生系统SystemUI下拉状态栏和通知栏视图之锁…...

音视频八股文(10)-- mp4结构

介绍 mp4⽂件格式⼜被称为MPEG-4 Part 14&#xff0c;出⾃MPEG-4标准第14部分 。它是⼀种多媒体格式容器&#xff0c;⼴泛⽤于包装视频和⾳频数据流、海报、字幕和元数据等。&#xff08;顺便⼀提&#xff0c;⽬前流⾏的视频编码格式AVC/H264 定义在MPEG-4 Part 10&#xff09…...

python算法中的深度学习算法之深度信念网络(详解)

目录 学习目标: 学习内容: 深度信念网络 Ⅰ. 预训练 Ⅱ. 微调 学习目标: 一分钟掌握 python算法中的深度学习算法之深度信念网络 入门知识...

SPSS如何绘制常用统计图之案例实训?

文章目录 0.引言1.绘制简单条形图2.绘制分类条形图3.绘制分段条形图4.绘制简单线图5.绘制多重线图6.绘制垂直线图7.绘制简单面积图8.绘制堆积面积图9.绘制饼图10.绘制直方图11.绘制简单散点图12.绘制重叠散点图13.绘制矩阵散点图14.绘制三维散点图15.绘制简单箱图16.绘制分类箱…...

打动人心的故事 | 如何利用文案在Facebook上塑造品牌形象

在当今的数字营销时代&#xff0c;文案已经成为各大平台上不可或缺的元素之一。在Facebook上&#xff0c;一个好的文案能够为品牌带来巨大的曝光率和用户黏性&#xff0c;甚至可以改变用户对品牌的看法。那么&#xff0c;如何利用文案在Facebook上打动人心&#xff0c;塑造品牌…...

什么是模糊控制?

模糊控制设计原理 1、传统控制系统和模糊控制系统 传统控制系统结构&#xff1a; 控制目的&#xff1a;通过控制器调节控制信号u&#xff0c;使输出信号y达到要求 模糊控制系统结构&#xff1a; 与传统控制系统的差异&#xff1a;用模糊控制器FC&#xff08;Fuzzy Controller&…...

仿抖音开发需要注意的问题

一、版权问题 仿抖音开发需要注意版权问题&#xff0c;包括内容的版权和软件的版权。在开发的过程中&#xff0c;不要直接抄袭他人的作品&#xff0c;应该注重保护知识产权。 二、安全性问题 仿抖音开发需要重视应用的安全性问题&#xff0c;避免应用在使用过程中发生安全漏…...

如何根据期刊缩写查找期刊?

英文论文写作中&#xff0c;经常会插入参考文献。参考文献中的期刊名称&#xff0c;时常需要使用缩写。或者是手头有期刊缩写后的名称&#xff0c;但是有时候&#xff0c;查了半天也查不到期刊期刊全称&#xff0c;费时费力让人崩溃。今天就给各位学者老师总结一些查询期刊缩写…...

数据发送流程

在发送模式下&#xff0c;UART 的串行数据发送电路主要包括一个发送移位寄存器(TSR)&#xff0c;TSR 功能是将数据 逐个移位送出。待发数据必须先写到发送缓冲区中。 TXIFx 是发送中断标志位&#xff0c;可配置为发送缓冲区空或TSR 空。 数据的发送支持7bit 、8bit 或9bit 数据…...

堆及其应用

堆是一种基于树结构的数据结构&#xff0c;通常用于实现优先队列。堆分为最大堆和最小堆两种类型&#xff0c;最大堆的每个节点的值都大于等于其子节点的值&#xff0c;最小堆则相反&#xff0c;每个节点的值都小于等于其子节点的值。 基础算法操作包括&#xff1a; 1. 插入元…...

网站优化公司哪家便宜/个人博客网站设计毕业论文

转自&#xff1a;http://blog.csdn.net/luo3532869/article/details/7605414 printk的日志级别有八个分别为KERN_EMERG、 KERN_ALERT、 KERN_CRIT、 KERN_ERR 、 KERN_WARNNING、 KERN_NOTICE、 KERN_INFO 、KERN_DEBUG printk默认的级别是DEFAULT_MESSAGE_LOGLEVEL&#xff0c…...

wordpress 开启多用户/重庆网络seo公司

转载:https://blog.csdn.net/guyuebingchuan/article/details/19620487 1.在同一个网络内&#xff0c;连接电视的命令行&#xff1a; su stop adbd setprop service.adb.tcp.port 5555 start adbd adb connect 10.120.158.21 2.在一根网线时连接电视的命令行&#xff1a; 1.首…...

郑州网站制作汉狮网络/宁波seo推广优化哪家强

var 、let 、const的区别 何为闭包 Promise 继承call、apply 实现深拷贝 数据类型 字符串截取正则 原形和原形链 面试30秒链接 转载于:https://juejin.im/post/5cc6d43b6fb9a031ed20c584...

rttheme 18 wordpress/各城市首轮感染高峰期预测

1.问题描述 n个强盗&#xff08;编号1,2,3,…,n&#xff09;分赃m个金币。先由强盗1提出分配方案&#xff0c;所有的强盗投票&#xff0c;超过半数支持则方案通过&#xff0c;否则将强盗1杀死、由强盗2继续提方案&#xff0c;以此类推。假设所有的强盗都足够聪明&#xff0c;并…...

网页制作与网站建设实战大全/上海网络推广营销策划方案

施工图纸是建造房屋的依据&#xff0c;是“工程的语言”&#xff0c;它明确规定了要建造一幢什么样的建筑&#xff0c;并且具体规定了形状、尺寸、做法和技术要求。除了较多地接触本工种的图纸外&#xff0c;有时还要结合整个工程图纸看图&#xff0c;才能交圈配合&#xff0c;…...

wordpress seo 设置/中文域名交易网站

项目介绍 一款 PHP 语言基于 Laravel5.8、Layui、MySQL等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架&#xff0c;可用于快速搭建前后端分离后台管理系统&#xff0c;本着简化开发、提升开发效率的初衷&#xff0c;框架自研了一套个性化的组件&…...