首页 > 其他分享 >Kubernetes——批量导出 Kubernetes 命名空间下的资源 Manifest 及 CRD 资源

Kubernetes——批量导出 Kubernetes 命名空间下的资源 Manifest 及 CRD 资源

时间:2024-07-05 15:32:02浏览次数:16  
标签:resource name Kubernetes 导出 NAMESPACE Manifest crd backup CRD

批量导出 Kubernetes 命名空间下的资源 Manifest 及 CRD 资源

一、需求背景

    在 Kubernetes 集群的日常管理和维护中,经常需要备份或迁移集群中的资源。为了高效地进行这一操作,本脚本旨在批量导出指定命名空间下的多种 Kubernetes 资源(如 Deployment、StatefulSet、Pods、ConfigMap、Secret、PVC、StorageClass、Service、ServiceAccount)以及集群级别的 CRD(Custom Resource Definitions)资源。 脚本首先定义了一个包含目标命名空间的数组和一个包含要导出的资源类型的数组。然后,它遍历每个命名空间,检查该命名空间下是否存在资源。如果存在,脚本会为每种资源类型创建一个目录,并遍历该命名空间下的所有资源实例,将它们以 YAML 格式导出到指定的备份目录中。同时,脚本还会导出集群中所有的 CRD 资源。 此脚本通过自动化资源导出过程,极大地简化了 Kubernetes 资源的备份和迁移工作,提高了管理员的工作效率。

二、Bash脚本实现

#!/bin/bash  
  
NAMESPACES=("namespace1" "namespace2" "namespace3")  
RESOURCE_TYPES=("deployment" "statefulset" "pods" "configmap" "secret" "pvc" "storageclass" "svc" "serviceaccount")  
  
current_context=$(kubectl config current-context)  
  
backup_dir="backup/k8s_${current_context}_$(date "+%Y.%m.%d-%H.%M.%S")"  
mkdir -pv "${backup_dir}"  
mkdir -pv "${backup_dir}/crd"  
  
log_file="${backup_dir}/export_resources.log"  
  
for NAMESPACE in "${NAMESPACES[@]}"; do  
    echo "正在处理命名空间: $NAMESPACE" | tee -a $log_file  
  
    resource_count=$(kubectl get all -n "${NAMESPACE}" --ignore-not-found -o jsonpath="{.items[*].metadata.name}" | wc -w)  
    if [ $resource_count -gt 0 ]; then  
        mkdir -pv "${backup_dir}/${NAMESPACE}"  
  
        for resource_type in "${RESOURCE_TYPES[@]}"; do  
            resource_names=$(kubectl get "${resource_type}" -n "${NAMESPACE}" -o jsonpath="{.items[*].metadata.name}" 2>/dev/null)  
  
            for resource_name in ${resource_names}; do  
                kubectl get "${resource_type}" "${resource_name}" -n "${NAMESPACE}" -o yaml > "${backup_dir}/${NAMESPACE}/${NAMESPACE}-${resource_name}-${resource_type}.yaml"  
                echo "已导出 ${NAMESPACE}-${resource_name}-${resource_type}.yaml" | tee -a $log_file  
            done  
        done  
    else  
        echo "命名空间 $NAMESPACE 下没有资源" | tee -a $log_file  
    fi  
done  
  
# 导出CRD资源  
crd_names=$(kubectl get crd | awk 'NR > 1 {print $1}')  
  
for crd_name in $crd_names; do  
    kubectl get crd "${crd_name}" -o yaml > "${backup_dir}/crd/${crd_name}.yaml"  
    echo "已导出 CRD 资源 ${crd_name} 至 ${backup_dir}/crd/${crd_name}.yaml" | tee -a $log_file  
done
  
echo "所有CRD资源导出完成。" | tee -a $log_file

标签:resource,name,Kubernetes,导出,NAMESPACE,Manifest,crd,backup,CRD
From: https://www.cnblogs.com/zuoyang/p/18285936

相关文章

  • Kubernetes云原生存储解决方案openebs部署实践-4.0.1版本(helm部署)
    Kubernetes云原生存储解决方案openebs部署实践-4.0.1版本(helm部署)简介OpenEBS是一种开源云原生存储解决方案。OpenEBS可以将Kubernetes工作节点可用的任何存储转化为本地或复制的Kubernetes持久卷。OpenEBS帮助应用和平台团队轻松地部署需要快速、持久耐用、可靠且可扩展......
  • 2.Kubernetes集群架构与组件
    一、Kubernetes组件       1.1控制面板组件(都是在master上面的)               kube-apiserver:对节点以及任务处理的一个相关接口(所有的调用都要经过这个组件调用)               kube-controller-manager:控制器管理器,管理各个类型的......
  • 编译安装Kubernetes 1.29 高可用集群(6)--Cilium网络组件和CoreDNS配置
    1.部署Cilium网络组件1.1在k8s-master节点上,下载安装helmwgethttps://mirrors.huaweicloud.com/helm/v3.15.2/helm-v3.15.2-linux-amd64.tar.gztar-zxvfhelm-v3.15.2-linux-amd64.tar.gzcplinux-amd64/helm/usr/bin/#helmversionversion.BuildInfo{Version:"v3.1......
  • Kubernetes云原生存储解决方案openebs部署实践-3.10.0版本(helm部署)
    Kubernetes云原生存储解决方案openebs部署实践-3.10.0版本(helm部署)记录在k8s1.19.0集群环境下安装openebs3.10.0。环境信息如下:[root@k8s-master~]#cat/etc/centos-releaseCentOSLinuxrelease7.9.2009(Core)[root@k8s-master~]#uname-aLinuxk8s-master3.10.0-......
  • Kubernetes基于helm安装 harbor
    Kubernetes基于helm安装harbor之前harbor的安装都是借助docker完成一键安装部署,安装完成之后harbor组件均运行到一台机器上面,本文实践harbor在k8s环境中的部署。准备工作根据harbor官方要求:Kubernetescluster1.20+Helmv3.2.0+结合ingress-nginx版本要求,建议K8S版本大......
  • 【云原生】Kubernetes-kubeadm升级版本
    一、版本升级当我们要用到新版本的一些功能和特性的时候或者当前版本太旧无法满足需要的时候势必要对Kubernetes集群进行升级。1.1、升级Master节点1.1.1、腾空节点[root@master~]#kubectlgetnodeNAMESTATUSROLESAGEVERSIONmaster......
  • 编译安装Kubernetes 1.29 高可用集群(7)--Metrics Server节点监控配置
    1.部署MetricsServer节点监控1.1在任意k8s-master节点上下载MetricsServer的创建文件https://github.com/kubernetes-sigs/metrics-server/releaseswgethttps://github.com/kubernetes-sigs/metrics-server/releases/download/v0.7.1/components.yaml1.2修改单机版配置......
  • Kubernetes k8s pod 生命周期 init容器(初始化容器) 钩子配置
    目录Pod生命周期Init容器 初始化容器使用案例 初始化容器生产应用主容器 容器钩子:postStart和preStop文档中的YAML文件配置直接复制粘贴可能存在格式错误,故实验中所需要的YAML文件以及本地包均打包至网盘链接:https://pan.baidu.com/s/1RMVT8hj_rELprNeTlX10Vg ......
  • Karpor - 让 AI 全面赋能 Kubernetes!
    ......
  • 云原生周刊:Argo Rollouts 支持 Kubernetes Gateway API 1.0 | 2024.7.1
    开源项目KubetoolsRecommenderSystemKubetoolsRecommenderSystem(Krs)是一个基于GenAI的工具,用于帮助管理和优化Kubernetes集群。buoybuoy是Kubernetes的声明式TUI仪表板。你可以在JSON文件中定义仪表板,它将从Kubernetes集群中获取信息并构建仪表板,以便在......