实验环境:
    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 安装和备份:

    1. 下载项目至待部署环境中的任一新建目录;
    2. 在备份工具所在目录执行sh k8dumptool.sh。
    1. [root@master1 k8sdumpTool]# ls
    2. k8s-dump-tool-main k8s-dump-tool-main.zip
    3. [root@master1 k8sdumpTool]#
    4. [root@master1 k8sdumpTool]# cd k8s-dump-tool-main/
    5. [root@master1 k8s-dump-tool-main]#
    6. [root@master1 k8s-dump-tool-main]# ls
    7. gui-yaml-dump-seperate.sh gui-yaml-dump.sh k8dumptool.sh ns-select.sh README.md workload.example workload-select.sh yaml-processor.sh
    8. [root@master1 k8s-dump-tool-main]#
    9. [root@master1 k8s-dump-tool-main]# sh k8dumptool.sh

    image.png
    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里存放的真正的数据没有备份;