首页 > 其他分享 >k8s集群yaml文件方式迁移

k8s集群yaml文件方式迁移

时间:2022-10-21 12:12:28浏览次数:75  
标签:item yaml 集群 yq k8s spec metadata

一、安装依赖工具

实际就是导出数据为json,通过jq删除一些不需要的字段,然后再通过yq转换为yaml格式(不安装直接使用json格式也可以安装,这里主要为例方便查看),这么麻烦主要是不知道导出yaml文件时如何过滤一些不需要的字段,如果哪位知道可以指教一下。

[root@k8s-master test]# yum install jq -y  #解析json
[root@k8s-master ~]# wget https://github.com/mikefarah/yq/releases/download/v4.16.2/yq_linux_amd64 #将json转换为yaml  最新下载地址:https://github.com/mikefarah/yq/releases
[root@k8s-master ~]# chmod +x yq_linux_amd64
[root@k8s-master ~]# mv yq_linux_amd64 /usr/bin/yq
[root@k8s-master ~]# yq --version
yq (https://github.com/mikefarah/yq/) version 4.16.2

二、创建脚本  

#!/bin/bash

DATA_TIME=`date +%Y%m%d%H%M%S`  #每次创建根据时间创建
BACKUP_DIR=/tmp/k8s-backup-restore  #备份的目录

NS_LIST='change-battery-demo nginx-ingress-port tools tsp'  # 指定需要备份的namespaces,也可以使用kubectl获取所有,按需
#CONFIG_TYPE="service deploy configmap secret job cronjob replicaset daemonset statefulset"
CONFIG_TYPE="service deploy ingress"  # 指定namespaces下需要备份的资源类型,按需

for ns in ${NS_LIST};do
  BACKUP_DIR_DATE=${BACKUP_DIR}/${ns}/${DATA_TIME}  #备份目录,按namespace根据时间分别创建
  mkdir -p ${BACKUP_DIR_DATE} && cd ${BACKUP_DIR_DATE}  #创建备份目录 
  for type in ${CONFIG_TYPE};do
    item_num=$(kubectl -n ${ns} get ${type} 2>/dev/null|wc -l)  #过滤资源类型为空
    if [ ${item_num} -lt 1 ];then continue;fi #包含NAME行,所以如果存在资源item_num不小于2
    ITEM_LIST=$(kubectl -n ${ns} get ${type} | awk '{print $1}' | grep -v 'NAME') 
    for item in ${ITEM_LIST};do
       file_name=${BACKUP_DIR_DATE}/${type}_${item}.yaml  
       kubectl -n ${ns} get ${type} ${item} -o=json | jq '. | 
    del(
        .spec.clusterIP,
        .metadata.uid,
        .metadata.selfLink,
        .metadata.resourceVersion,
        .metadata.creationTimestamp,
        .metadata.generation,
        .metadata.annotations,
        .spec.cephfs,
        .spec.volumeName,
        .status,
        .spec.template.metadata.creationTimestamp,
        .spec.template.spec.securityContext,
        .spec.template.spec.dnsPolicy,
        .spec.template.spec.terminationGracePeriodSeconds,
        .spec.template.spec.restartPolicy
    )'|yq eval -P > ${file_name}  #del中是要删除的字段

    done   
  done
done

脚本生成的路径树如下

root@tsp-prod-ansible:~/script_dir# tree -L 3  /tmp/k8s-backup-restore/|head -10
/tmp/k8s-backup-restore/
├── change-battery-demo
│   └── 20221021114537
│       ├── deploy_mx-dial-battery-replacement-platform.yaml
│       ├── service_mx-dial-battery-replacement-platform.yaml 

抄自于:https://codeantenna.com/a/hyV7eyLUSD

 

标签:item,yaml,集群,yq,k8s,spec,metadata
From: https://www.cnblogs.com/panwenbin-logs/p/16813026.html

相关文章

  • KubernetesK8s CKA认证实战(完整版)BAT大厂基于K8s构建企业容器云平台
    KubernetesK8sCKA认证实战(完整版)BAT大厂基于K8s构建企业容器云平台 ​Kubernetes认证管理员是CNCF的一项具有挑战性的考试。与许多其他认证不同,这是一个实操的考试。......
  • 全网最牛k8s(Kubernetes)+docker+DevOps+linux+微服务容器
     云原生Java架构实战K8s+Docker+KubeSphere+DevOps(中)KubeSphere平台安装简介Kubernetes上安装KubeSphere安装步骤选择4核8G(master)、8核16G(node1)、8核16G(nod......
  • 当通过docker node ls查询集群节点状态,一个节点状态是unreachable,这究竟代表什么意思?
    当通过dockernodels命令查询集群中各个节点的状态时: 在"MANAGERSTATUS"列出现“Unreachable”,这个代表的是什么意思?[root@nccztsjb-node-05~]#dockernodelsID......
  • 准备k8s集群镜像
    准备k8s集群镜像一、在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需平面镜像可以通过下面命令查看kubeadmconfigimageslist二、由于网络原因registry......
  • k8s基础篇 pod(四)标签
    4.1什么是标签?标签其实就一对key/value,被关联到对象上,比如Pod,标签的使用我们倾向于能够表示对象的特殊特点,就是一眼就看出了这个Pod是干什么的,标签可以用来划分特定的对......
  • k8s Ingress
    K8s安装ingress官网https://github.com/kubernetes/ingress-nginx当前kubectlversionv1.25.2Ingress-NGINXversionk8ssupportedversionAlpineVersionNg......
  • Kubernetes_02_从零开始搭建k8s集群(亲测可用)
    @[toc]一、前言本文讲述从零开始搭建k8s集群,均使用国内镜像,版本均统一,使用两个虚拟机,一个主节点,一个从节点,保证k8s一次搭建成功。注意:Kubernetes,简称K8s,是用8代替名字中间的......
  • Kubernetes_03_手把手打镜像并运行到k8s容器上(亲测可用)
    @[toc]一、前言本文使用两个机器192.168.100.150是master节点,192.168.100.151是node1节点,如下:演示三个示例,第一个示例wordpress博客系统是指将别人的镜像部署在k8s;第二......
  • k8s安装redmine
    ​课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。腾讯课堂连接地址https://ke.qq.com......
  • Hadoop集群搭建
    Hadoop集群搭建Hadoop集群的安装配置大致包括以下步骤:(1)步骤1:选定一台机器作为Master;(2)步骤2:在Master节点上安装Hadoop,并完成配置;(3)步骤3:将Master节点上的“/export/ser......