KubeVirt备份与还原方案【翻译】
KubeVirt备份与还原方案【翻译】
ref:https://github.com/kubevirt/kubevirt/blob/main/docs/backup-restore-integration.md
备份
- 为所有必需的k8s资源构建依赖关系图
- 冻结应用程序
- pvc数据快照
- 解冻应用程序
- 将所有必需的k8s资源定义拷贝到一个共享的存储位置
- (可选)将PVC数据快照导出到一个共享存储位置
步骤3、5、6不在本文档讨论范围之内
恢复
- 使用快照数据填充PVC
- 清理并应用所有相关的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资源定义拷贝到一个共享的存储位置(可选…...

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

Htop使用说明
目录 引言 什么是htop htop安装 htop界面介绍 htop功能介绍 引言 我们使用服务器的时候常常需要关注下自己的程序资源占用情况,htop就是一种互动式的进程查查看器,整齐用下来感觉比top的逼格高,造作可视化都更方便些,我觉得还…...
PostgreSQL Linux安装
安装依赖: sudo yum -y install readline-devel zlib-devel 安装Postgres: 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日举办“发现央企投资价值,促进央企估值回归”交流会 2.监管部门十方面举措加强房地产经纪行业管理 3.广东:推动城市公共服务及货运配送车辆电动化替代 4.昆山两楼盘因大幅降价被暂停网签:降幅…...

AI绘画天花板——Midjourney注册使用保姆级教程(5月5日验证有效)
大家好,我是可夫小子,关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加我,备注:aigc,拉你进群。 现在市面上AI绘图大概有三大阵营:Midjourney、Stable Diffusion,还有一个就是OpenAI实…...
学习笔记(2)项目结构描述 - manifest.json和pages.json
目录 1,manifest.json2,pages.json2.1,pages2.2,globalStyle2.3,tabBar 1,manifest.json 官方详情 uni-app 的 appid 由 DCloud 云端分配,主要用于 DCloud 相关的云服务,请勿自行修…...

vector、deque、list相关知识点
vector erase返回迭代器指向删除元素后的元素insert返回迭代器指插入的元素reserve只给容器底层开指定大小内存空间,并不添加新元素 deque 底层数据结构 动态开辟的二维数组,一维数组从2开始,以2倍方式扩容,每次扩容和&#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的多变量时间序列预测对比预测效果基本介绍程序设计学习总结参考资料 预测效果 基本介绍 多维时序 …...

设计模式——适配器模式(类适配器、对象适配器)
是什么? 我们平时的有线耳机接口分为USB的和Type-C的接口,但是手机的耳机插口却只有一个,像华为的耳机插口现在基本都是Type-c的,那如果我们现在只有USB接口的耳机怎么办呢,这个时候就需要使用到一个转换器,…...

iOS开发多target
场景 背景:设想一下有一个场景,一个业务分为多种身份,他们大部分功能是相同的,但是也有自己的差异性。这种情况,想要构建出不同身份的APP。你会怎么做??? 当然,你可以拷贝一份代码出来,给项目重新命名。这样做的好处是,他们互相不会冲突,不用去关心是否有逻辑的冲…...
100种思维模型之每日评估思维模型-58
曾子曰:吾日三省吾省,为人谋而不忠乎?与朋友交不信乎?传不习乎? 曾国藩,坚持每日写复盘日记,最后他用自己的实践经历向我们证明:一个智商很平庸、出身很普通且有着各种毛病的人&…...
libreoffice api
libreOffice API是用于访问libreOffice的编程接口。可以使用libreOffice API创建、打开、修改和打印libreOffice文档。 LibreOffice API支持Basic、Java、C/C、Javascript、Python语言。 这是通过一种称为通用网络对象 (Universal Network Objects, UNO) 的技术实现的ÿ…...

全网最火,Web自动化测试驱动模型详全,一语点通超实用...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 自动化测试模型&a…...

如何写软件测试简历项目经验,靠这个面试都要赶场
一、前言:浅谈面试 面试是我们进入一个公司的门槛,通过了面试才能进入公司,你的面试结果和你的薪资是息息相关的。那如何才能顺利的通过面试,得到公司的认可呢?面试软件测试要注意哪些问题呢?下面和笔者一起来看看吧。这里分享一…...

【Linux】Linux下安装Mysql(图文解说详细版)
文章目录 前言第一步,进到opt文件夹下面,为什么?因为opt文件夹相当于Windows下的D://software第二步,用yum安装第三步,设置mysql的相关配置第四步,设置远程连接。第五步,更改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 检查节点颜色是否满足要求 附录:红黑…...

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

C语言从入门到精通第17天(指针和数组联用)
指针和数组联用 不同类型指针变量之间的区别数组的指针指针数组 不同类型指针变量之间的区别 在了解数组和指针联用之前,我们先对指针变量进行补充。我们对比一下int *p1和char *p2的区别? 相同点: 都是指针变量都是用来保存一个内存地址编…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...