k8clone二进制工具迁移k8s中的无状态应用
1 概述
k8clone是一个简便的Kubernetes元数据克隆工具,它可以将Kubernetes元数据(对象)保存为本地压缩包,在恢复时可将这些元数据恢复到目标集群中(已存在的资源不会被覆盖)。它不依赖远程存储,使用起来更加简单和方便,它不迁移PV底层的数据,因此它适合用于迁移无状态的应用。
2 环境
-
kubernetes集群A使用镜像仓库1(swr.cn-south-1.myhuaweicloud.com/lj),工作负载放在demo名字空间下。


-
kubernetes集群B使用镜像仓库2(swr.cn-east-3.myhuaweicloud.com/lj-new)。

3 部署
在集群A的跳板机A和集群B的跳板机B上,执行如下命令安装k8clone工具。
wget https://ucs-migration.obs.cn-north-4.myhuaweicloud.com/toolkits/k8clone-linux-amd64
mv k8clone-linux-amd64 k8clone
chmod +x k8clone
mv k8clone /usr/bin/
4 在跳板机A备份应用
-n参数,表示会在哪些namespace下执行备份,用逗号分隔。
--exclude-kind参数,表示不备份哪些k8s对象类型,例如statefulset,service等。
-d参数,表示输出的压缩包文件。
执行如下命令备份k8s对象:
k8clone backup -n demo --exclude-kind statefulset,event,pod -d /tmp/demo-app

最终输出文件是/tmp/demo-app.zip。
5 在跳板机B恢复应用
5.1 传输压缩文件
将跳板机A的/tmp/demo-app.zip文件复制到集群B的跳板机B的/tmp目录。
5.2 新建一个恢复配置文件restore.json
新建一个配置文件,用于描述镜像信息的替换,因为两个集群使用了不同的镜像仓库。
cat > /tmp/restore.json << EOF
{"ImageRepo": {"swr.cn-south-1.myhuaweicloud.com/lj": "swr.cn-east-3.myhuaweicloud.com/lj-new"}
}
EOF
5.3 执行应用恢复
5.3.1 创建目标namespace
在这里的namespace是demo:
kubectl create ns demo
5.3.2 创建image pull secret
在应用的namespace(也就是demo)下,基于新容器镜像仓库的信息创建image pull secret,secret的名称和源端集群保持一样,在这里名称叫my-image-pull-secret。
export repo=swr.cn-east-3.myhuaweicloud.com
export username=*****your_username*****
export password=*****your_password*****kubectl create secret docker-registry \
my-image-pull-secret \
-n demo \
--docker-server=$repo \
--docker-username=$username \
--docker-password=$password
5.3.3 恢复应用
恢复时,需要指定压缩文件和恢复配置文件,命令如下:
k8clone restore -d /tmp/demo-app.zip -f /tmp/restore.json


deployment应用在目标集群恢复了:

6 小结
k8clone作为一个k8s元数据的备份和恢复的工具,它不像velero那样需要一个远程存储以及能够备份PV的数据,使用起来更加简单,很适合来迁移无状态应用。
相关文章:
k8clone二进制工具迁移k8s中的无状态应用
1 概述 k8clone是一个简便的Kubernetes元数据克隆工具,它可以将Kubernetes元数据(对象)保存为本地压缩包,在恢复时可将这些元数据恢复到目标集群中(已存在的资源不会被覆盖)。它不依赖远程存储,…...
VPI photonics的一些使用经验(测相位 快速搜索)持续更新
1.使用FuncSinEl模块的注意事项: 2.在VPI player(示波器)测电信号相位时候,可以使用正则表达式,快速搜索。 比如我要搜索以30开头的数据,输入: ^30 其他的正则表达式不适用,比如以…...
DBeaver 连接 OceanBase Oracle 租户
DBeaver 是一款通用的数据库工具软件,支持任何具有JDBC驱动程序的数据库。DBeaver 需要 Java 运行环境的支持。截稿时 DBeaver 24.0.0 版本默认提供的 OceanBase 驱动是连接 MySQL 的,想连接 Oracle 租户需要新建一个驱动器使用。 下载数据库驱动包 1、…...
QT_CONFIG宏使用
时常在Qt代码中看到QT_CONFIG宏,之前以为和#define、DEFINES 差不多,看了定义才发现不是那么回事,定义如下: 看注释就知道了QT_CONFIG宏,其实是:实现了一个在编译时期安全检查,检查指定的Qt特性…...
力扣(leetcode)题目总结——辅助栈篇
leetcode 经典题分类 链表数组字符串哈希表二分法双指针滑动窗口递归/回溯动态规划二叉树辅助栈 本系列专栏:点击进入 leetcode题目分类 关注走一波 前言:本系列文章初衷是为了按类别整理出力扣(leetcode)最经典题目,…...
如何处理 iOS 客户端内 Webview H5 中后台播放的音视频问题
目录 问题描述Page Visibility API 的应用什么是 Page Visibility API?使用 Page Visibility API 暂停音视频完整解决方案1. 监听媒体的播放和暂停事件2. 防止自动播放3. 结合 Intersection Observer 进行媒体控制4. 手动处理应用生命周期中的事件 问题描述 在 iOS…...
C++的一些模版
1、不限制次数的输入数据 vector<int> nums;int num;while (cin >> num) {nums.push_back(num);if (cin.get() \n) break;}2、取模模版 template<int kcz> struct ModInt { #define T (*this)int x;ModInt() : x(0) {}ModInt(int y) : x(y > 0 ? y : y…...
spring boot整合https协议
整体目录 1. 生成SSL证书 首先,使用keytool生成一个自签名证书。打开命令行工具并运行以下命令: keytool -genkeypair -alias myserver -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 365 这将创建一个名为keystore.jks的文件…...
服务器开机即占用大量内存,解决
1.服务器开机两分钟不到,内存使用飙升 [rootlocalhost ~]# top #查看是否有了明显的内存占用程序 2.上述未果,查看是否有违规的开机自启项 [rootlocalhost ~]# chkconfig --list 3.上述无果,查看开启启动加载项内容 上网搜后ÿ…...
Keil uvision的edition
0 Preface/Foreword 0.1 参考网址 https://zhuanlan.zhihu.com/p/456069876 1 Keil版本介绍 版本介绍: Keil Lite(免费版):最多32KB代码,无法使用中间件Keil Essential(基础版):没…...
[每周一更]-(第123期):模拟面试|消息队列面试思路解析
文章目录 22|消息队列:消息队列可以用来解决什么问题?1. 你用过消息队列吗?主要用来解决什么问题?异步、削峰和解耦你能各举一个例子吗?2. 你用的是哪个消息队列?为什么使用它而不用别的消息队列?3. 为什么你一定要用消息队列?不用行不行?不用有什么缺点?4. 在对接多…...
游戏引擎学习第12天
视频参考:https://www.bilibili.com/video/BV1yom9YnEWY 这节没讲什么东西,主要是改了一下音频的代码 后面有介绍一些alloc 和malloc,VirtualAlloc 的东西 _alloca 函数(或 alloca)分配的是栈内存,它的特点是: 生命周…...
深入理解Flutter生命周期函数之StatefulWidget(一)
目录 前言 1.为什么需要生命周期函数 2.开发过程中常用的生命周期函数 1.initState() 2.didChangeDependencies() 3.build() 4.didUpdateWidget() 5.setState() 6.deactivate() 7.dispose() 3.Flutter生命周期总结 1.调用顺序 2.函数调用时机以及主要作用 4.生…...
413: Quick Sort
解法: #include <bits/stdc.h> using namespace std; const int N1e55; int a[N]; int n;int main(int argc, char** argv) {cin>>n;for (int i0;i<n;i) cin>>a[i];sort(a,an);for (int i0;i<n;i) cout<<a[i]<<" "…...
vue之axios根据某个接口创建实例,并设置headers和超时时间,捕捉异常
import axiosNew from axios;//给axios起个别名//创建常量实例 const instanceNew axiosNew.create({//axios中请求配置有baseURL选项,表示请求URL的公共部分,url baseUrl requestUrlbaseURL: baseURL,//设置超时时间为20秒timeout: 20000,headers: {…...
Pandas数据透视表:交叉分析与聚合计算
大家好,在数据分析中,数据透视表(Pivot Table)是一种强大的工具,用于交叉分析和聚合计算。Pandas库中的数据透视表功能,使我们能够在多维数据中快速生成汇总表、统计特定维度的聚合数据,帮助揭示…...
软件设计师考试大纲
文章目录 一 、考 试 说 明1. 考试目标2. 考试要求3. 考试科目设置 二、考 试 范 围考试科目1:计算机与软件工程知识1. 计算机系统基础知识1.1计算机内数据的表示及运算1.2 其他数学基础知识1.3 计算机硬件基础知识1.3.1 计算机系统的组成、体系结构分类及特性1.3.2 存储系统1.…...
一文说清C++类型转换操作符(cast operator)
一 前言 大家在编程时,一定会遇到要做类型转换的应用场景。 但是,C风格的类型转换太强大,太危险,它允许将一个给定类型转换成我们想要的任何其他类型。 所以在C中,提供了一些更安全和更明确的类型转换操作符ÿ…...
MOSFET电路栅源极GS之间并联电容后,MOS炸管原因分析
1、前言 在介绍,在进行MOSFET相关的电路设计时,可能会遇到MOSFET误导通的问题,为了解决此问题,我们提出了两种方法,一种是增大MOSFET栅极串联电阻的阻值,另外一种是在MOSFET栅-源极之间并联一个电容&#…...
gitHub常用操作
gitHub常用操作 1、把项目拉下来2、添加上游仓库3、进入分支4、从上游仓库拉取更新 1、把项目拉下来 在对应项目的右上角点击fork,fork下来:将远程仓库复制到个人仓库 在创建好的分支文件夹下使用 git clone自己远程仓库下的http地址(fork…...
【微信取证篇】从微信收藏文件看微信存储加密逻辑(附解密工具思路)
1. 微信收藏文件的存储结构解析 第一次打开微信收藏夹时,你可能不会想到那些随手保存的图片、视频和文档,在手机存储里竟会以三种完全不同的形态存在。作为一名长期研究移动应用数据存储的开发者,我发现微信对收藏文件的处理方式堪称"精…...
GJB 128B-2021标准变更深度解析:VDMOS产品试验方法的影响与应对
1. GJB 128B-2021标准变更的核心要点 对于从事VDMOS产品研发和质量控制的工程师来说,2022年3月正式实施的GJB 128B-2021标准带来了不少值得关注的调整。相比旧版标准,这次修订在试验条件、热平衡判定、静电防护等多个关键环节都做出了具体规定。我仔细研…...
AIGC 检测‘信息密度‘到底是什么?嘎嘎降 AI 帮你 AI 率从 65% 降到 8%
AIGC 检测"信息密度"到底是什么?嘎嘎降 AI 帮你 AI 率从 65% 降到 8% AIGC 检测算法 4.0 版本看的 5 项底层指标里——信息密度权重排第二(约 25%)。理解了这一项你才知道为什么"工整学术风"也会被判 AI。这篇文章把&quo…...
芯片与封装热协同设计:当“先进制程”遇上“散热墙”
🎓作者简介:科技自媒体优质创作者 🌐个人主页:莱歌数字-CSDN博客 211、985硕士,从业16年 从事结构设计、热设计、售前、产品设计、项目管理等工作,涉足消费电子、新能源、医疗设备、制药信息化、核工业等…...
Cadence Virtuoso新手避坑指南:手把手教你画反相器原理图(附3.3V工艺库设置)
Cadence Virtuoso新手避坑指南:3.3V工艺库反相器设计全流程解析 第一次打开Cadence Virtuoso时,那个充满专业术语的界面就像面对一架航天飞机的控制台——每个按钮都暗藏玄机,每次点击都可能引发未知错误。作为模拟IC设计的行业标准工具&…...
Perplexity法律文献搜索实战指南:7步构建精准检索式,避开90%的无效结果
更多请点击: https://codechina.net 第一章:Perplexity法律文献搜索实战指南:7步构建精准检索式,避开90%的无效结果 Perplexity 作为面向专业研究者的AI搜索工具,在法律文献检索中展现出远超通用搜索引擎的语义理解与…...
GoogleTest 使用指南 | 测试模板函数
GoogleTest 使用指南 | 测试模板函数GoogleTest 使用指南 | 测试模板函数GoogleTest 使用指南 | 测试模板函数 模板类和函数由于其泛型特性,需要在不同类型下进行测试,以确保其通用性和正确性。 下面是一个示例。 m…...
Cadence OrCAD Capture 层次化电路设计:用NetGroup信号线束高效管理多路SPI/I2C
Cadence OrCAD Capture 层次化电路设计:用NetGroup信号线束高效管理多路SPI/I2C 在嵌入式系统设计中,多路复用接口(如SPI、I2C)的拓扑结构已成为工程师日常面临的挑战。当主控芯片需要连接多个传感器、存储设备或外设模块时&…...
QT 5.14.2 编译调试踩坑实录:从‘file not found’到‘Illegal byte sequence’的保姆级排错指南
QT 5.14.2 编译调试实战:从文件缺失到编码陷阱的深度排错手册 接手一个遗留的QT串口通信项目时,本以为只是简单的代码移植,却在QT 5.14.2环境下遭遇了三个典型的"拦路虎":神秘的库文件失踪、程序突然崩溃的灵异事件&…...
源地工作室ESP32-S2核心板深度体验:与乐鑫官方DevKitM-1到底有啥区别?
ESP32-S2核心板深度横评:第三方与官方开发板的硬核抉择指南 在物联网设备开发领域,ESP32-S2凭借其出色的性价比和丰富的功能接口,已成为众多开发者的首选芯片平台。面对市场上琳琅满目的开发板选项,特别是第三方厂商推出的兼容板与…...
