实验环境:
k8s版本 v1.18.0;
docker版本 18.06.1-ce;
K8S Dump Tool v1.0;
linux发行版系统,已安装awk、sed和grep工具;
已安装dialog (生成图形化界面)(centos:yum install dialog -y,ubuntu:sudo apt-get install dialog安装);
系统已安装kubectl客户端,且可以正常连接需要备份的k8s集群;
k8sdump工具介绍:
个人原创,k8s集群备份和yaml文件处理工具,按需导出集群workload和配置,并可以对yaml文件进行批量字段替换和注释处理。部署简单,全图形化界面操作方便快捷。
项目地址:https://github.com/EdwardYM115/k8s-dump-tool
1)功能:
(1) 备份
- k8s集群所有workload和configmap等组件和配置导出为yaml文件;
- 导出单个或部分命名空间(namespace)的组件;
- 可根据需要选择导出workload和配置组件的类型;
- 可根据需要选择将同一类型的组件导出为一个yaml文件,或者每个组件对象导出为一个yaml文件;
(2) Yaml文件处理
- 替换容器镜像(image字段值);
- 替换容器镜像拉取令牌imagePullSecrets字段值;
- 1.8版本之前(含)集群yaml文件apiVersion字段extensions/v1beta1替换为apps/v1,用于导入1.9及以上版本集群;
- clusterIP、resourceVersion、selfLink、uid字段注释,用于导入新集群时避免报错;
k8sdump 安装和备份:
- 下载项目至待部署环境中的任一新建目录;
- 在备份工具所在目录执行sh k8dumptool.sh。
[root@master1 k8sdumpTool]# ls
k8s-dump-tool-main k8s-dump-tool-main.zip
[root@master1 k8sdumpTool]#
[root@master1 k8sdumpTool]# cd k8s-dump-tool-main/
[root@master1 k8s-dump-tool-main]#
[root@master1 k8s-dump-tool-main]# ls
gui-yaml-dump-seperate.sh gui-yaml-dump.sh k8dumptool.sh ns-select.sh README.md workload.example workload-select.sh yaml-processor.sh
[root@master1 k8s-dump-tool-main]#
[root@master1 k8s-dump-tool-main]# sh k8dumptool.sh
1 选择一个命名空间或负载进行备份;
2 开始备份yaml
3 yaml分开备份(而不是所有资源写到一个大的yaml里)
4 yaml文件处理 (clusterIP、resourceVersion、selfLink、uid字段注释、extensions/v1beta1替换为apps/v1)
备份完之后会在当前目录生成 k8s-yaml-dump 目录,里面即是备份的yaml文件。
不足:
1、yaml里空字段不能处理;
2、只是把pvc导出成yaml,pvc里存放的真正的数据没有备份;