当前位置: 首页 > news >正文

k8s备份namespace

在 Kubernetes 中备份 Namespace 有多种方法,以下是几种常见的备份方式:
1.使用 kubectl 命令备份
通过 kubectl 命令可以导出指定 Namespace 中的资源,生成 YAML 文件进行备份。
备份所有资源:

kubectl -n <namespace> get all -o yaml > <namespace>-backup.yaml

备份特定资源:
部署类资源:

kubectl get deployments,statefulsets,daemonsets,replicationcontrollers,replicasets --namespace=<namespace> -o yaml > deployments.yaml

服务类资源:

kubectl get services --namespace=<namespace> -o yaml > services.yaml

配置类资源:

kubectl get configmap,secret --namespace=<namespace> -o yaml > configmaps-secrets.yaml

存储类资源:

kubectl get pv,pvc --namespace=<namespace> -o yaml > pv-pvc.yaml

其他资源:

kubectl get ingress --namespace=<namespace> -o yaml > ingresses.yaml
kubectl get jobs,cronjobs --namespace=<namespace> -o yaml > jobs-cronjobs.yaml
kubectl get serviceaccounts,roles,rolebindings,clusterroles,clusterrolebindings --namespace=<namespace> -o yaml > rbac.yaml

使用 kubectl-neat 插件备份
kubectl-neat 是一个插件,可以导出更干净的配置文件。
安装插件:

kubectl krew install neat

导出配置:

NAMESPACE="<namespace-name>"
OUTPUT_DIR="k8s-export-clean-$NAMESPACE"
mkdir -p $OUTPUT_DIRRESOURCE_TYPES=$(kubectl api-resources --namespaced=true --verbs=list -o name | sort | uniq)for RESOURCE in $RESOURCE_TYPES; doecho "Exporting $RESOURCE..."kubectl get -n $NAMESPACE $RESOURCE -o yaml | kubectl neat > "$OUTPUT_DIR/$RESOURCE.yaml" 2>/dev/null
done

3.使用 Velero 备份
Velero 是一个专门用于 Kubernetes 集群备份和恢复的工具,支持将备份数据存储到对象存储中。
安装 Velero:

velero install \--provider <provider> \--bucket <bucket-name> \--secret-file <path-to-credentials-file> \--use-volume-snapshots=false \--namespace velero \--wait

创建备份:

velero backup create <backup-name> --include-namespaces <namespace>

下载备份(如果需要):

velero backup download <backup-name>

4.使用自定义脚本备份
可以编写一个 Bash 脚本来自动化备份过程。

#!/bin/bashif [ -z "$1" ]; thenecho "Please provide a namespace name"echo "Usage: $0 <Namespace>"exit 1
fiNAMESPACE=$1
BACKUP_DIR="k8s_backup_${NAMESPACE}_$(date +%Y%m%d_%H%M%S)"
mkdir -p $BACKUP_DIRRESOURCES=("configmap""secret""deployment""statefulset""daemonset""service""ingress""pvc""job""cronjob""serviceaccount""role""rolebinding"
)for RESOURCE in "${RESOURCES[@]}"; doecho "Backing up $RESOURCE..."kubectl get $RESOURCE --namespace=$NAMESPACE -o yaml > $BACKUP_DIR/$RESOURCE.yaml
done

使用 kustomize 备份
如果使用 kustomize 进行配置管理,也可以通过 kustomize 导出 Namespace 的定义。
导出命名空间定义:

cat <<EOF > kustomization.yaml
namespace: <namespace-name>
resources:
- namespace.yaml
EOFkubectl get namespace <namespace-name> -o yaml > namespace.yamlkubectl kustomize . > namespace-kustomize.yaml

相关文章:

  • 多模态信息提取:打通数据价值的“最后一公里”
  • TDengine 在新能源领域的价值
  • 限流算法 + dfa敏感词过滤算法
  • MATLAB中的Switch语句讲解
  • 基于matlab/simulink锂电池算法学习集合(SOC、SOH、BMS)
  • React Flow 边的基础知识与示例:从基本属性到代码实例详解
  • LLM笔记(九)KV缓存调研
  • std::is_same
  • 5月18总结
  • leetcode报错原因总结需要背下来的程序片 [更新中]
  • 三:操作系统线程管理之线程概念
  • 2025年全国青少年信息素养大赛C++小学全年级初赛试题
  • 逻辑与非逻辑的弥聚
  • 【Linux】第二十章 管理基本存储
  • 双紫擒龙紫紫红指标源码学习,2025升级版紫紫红指标公式-重点技术
  • 基于单片机路灯自动控制仪仿真设计
  • 创建型:工厂方法模式
  • TASK03【Datawhale 组队学习】搭建向量知识库
  • 10.9 LangChain LCEL革命:43%性能提升+声明式语法,AI开发效率飙升实战指南
  • STM32H562----------启动时钟分析
  • 大学2025丨专访西湖大学副校长邓力:如何才能培养“不惧未知”的创新者
  • 内蒙古赤峰市城建集团董事长孙广通拟任旗县区党委书记
  • 坐标大零号湾科创策源区,上海瑞金医院闵行院区正式启动建设
  • 83岁山水花鸟画家、书法家吴静山离世,系岭南画派代表人物
  • 上海这个咖啡文化节首次“走出去”,率本土品牌亮相英国伦敦
  • 上市公司重大资产重组新规九要点:引入私募“反向挂钩”,压缩审核流程