k8clone二进制工具迁移k8s中的无状态应用

1 概述

k8clone是一个简便的Kubernetes元数据克隆工具,它可以将Kubernetes元数据(对象)保存为本地压缩包,在恢复时可将这些元数据恢复到目标集群中(已存在的资源不会被覆盖)。它不依赖远程存储,使用起来更加简单和方便,它不迁移PV底层的数据,因此它适合用于迁移无状态的应用。

2 环境

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的数据,使用起来更加简单,很适合来迁移无状态应用。

相关推荐
0***1410 小时前
PHP在微服务中的架构设计
微服务·云原生·架构
虚伪的空想家14 小时前
arm架构服务器使用kvm创建虚机报错,romfile “efi-virtio.rom“ is empty
linux·运维·服务器·javascript·arm开发·云原生·kvm
u***u68514 小时前
云原生架构2025年趋势:Serverless与边缘计算
云原生·架构·serverless
mobº15 小时前
K8s 集群部署微服务 - yaml 版本(三)
微服务·容器·kubernetes
阿里云云原生18 小时前
为什么 RAG 落地难?解析数据处理 “三重困境”,事件驱动架构如何破局?
云原生
努力发光的程序员19 小时前
互联网大厂Java面试:从Spring Boot到大数据处理的实战场景问题解析
spring boot·微服务·云原生·java面试·大数据处理·技术解析·互联网求职
热爱学习的小怪兽1 天前
Docker环境搭建--在ubuntu安装Docker
云原生·eureka
也许是_1 天前
架构的取舍之道:在微服务的“混乱”中建立秩序
微服务·云原生·架构
橙色云-智橙协同研发1 天前
【PLM实施专家宝典】离散制造企业需求管理与全生命周期追溯体系构建方案:打造研发的“精准导航系统”
大数据·云原生·云计算·解决方案·数字化转型·plm·国产plm
拾心211 天前
【云运维】k8s管理(一)
运维·容器·kubernetes