备份k8s集群中资源

Pod

#!/bin/bash

# 指定保存目录
SAVE_DIR="./pods_yaml"

# 创建保存目录
mkdir -p $SAVE_DIR

# 获取所有pod名称
PODS=$(kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{.metadata.namespace}/{.metadata.name}{"\n"}{end}')

# 循环遍历所有pod,获取yaml文件并保存
for POD in $PODS
do
  NAMESPACE=$(echo $POD | cut -d '/' -f 1)
  NAME=$(echo $POD | cut -d '/' -f 2)
  kubectl get pod $NAME -n $NAMESPACE -o yaml > $SAVE_DIR/$NAMESPACE-$NAME.yaml
done

echo "保存完成!"

All 1

这里是备份Kubernetes各种资源为YAML文件的脚本,分别备份了ConfigMap、DaemonSet、StatefulSet、Deployment等资源:

#!/bin/bash

# Set the backup directory
backup_dir=$(date +%Y%m%d_%H%M%S)
mkdir -p $backup_dir

# Backup ConfigMaps in all namespaces
for ns in $(kubectl get namespaces -o name | cut -d '/' -f 2); do
  mkdir -p $backup_dir/$ns
  kubectl get configmaps -o name -n $ns | xargs -I{} kubectl get {} -n $ns -o yaml > $backup_dir/$ns/configmaps.yaml
done

# Backup DaemonSets in all namespaces
for ns in $(kubectl get namespaces -o name | cut -d '/' -f 2); do
  mkdir -p $backup_dir/$ns
  kubectl get daemonsets -o name -n $ns | xargs -I{} kubectl get {} -n $ns -o yaml > $backup_dir/$ns/daemonsets.yaml
done

# Backup StatefulSets in all namespaces
for ns in $(kubectl get namespaces -o name | cut -d '/' -f 2); do
  mkdir -p $backup_dir/$ns
  kubectl get statefulsets -o name -n $ns | xargs -I{} kubectl get {} -n $ns -o yaml > $backup_dir/$ns/statefulsets.yaml
done

# Backup Deployments in all namespaces
for ns in $(kubectl get namespaces -o name | cut -d '/' -f 2); do
  mkdir -p $backup_dir/$ns
  kubectl get deployments -o name -n $ns | xargs -I{} kubectl get {} -n $ns -o yaml > $backup_dir/$ns/deployments.yaml
done

# Compress the backup directory
tar -czvf $backup_dir.tar.gz $backup_dir

# Delete the backup directory
rm -rf $backup_dir

您可以根据需要修改备份的资源类型,并将其保存到相应的 YAML 文件中。该脚本将逐个备份ConfigMap、DaemonSet、StatefulSet、Deployment等资源,以便您可以更好地控制备份的内容。

All 2

以下是备份Kubernetes所有资源为YAML文件的脚本,包括所有资源类型:

#!/bin/bash

# Set the backup directory
backup_dir=$(date +%Y%m%d_%H%M%S)
mkdir -p $backup_dir

# Backup all resources
kubectl api-resources --verbs=list --namespaced -o name \
  | xargs -n 1 kubectl get --show-kind --ignore-not-found -o yaml \
    --export -n <namespace> > $backup_dir/all-resources.yaml

# Backup ConfigMaps in all namespaces
for ns in $(kubectl get namespaces -o name | cut -d '/' -f 2); do
  mkdir -p $backup_dir/$ns
  kubectl get configmaps -o name -n $ns | xargs -I{} kubectl get {} -n $ns -o yaml > $backup_dir/$ns/configmaps.yaml
done

# Backup Secrets in all namespaces
for ns in $(kubectl get namespaces -o name | cut -d '/' -f 2); do
  mkdir -p $backup_dir/$ns
  kubectl get secrets -o name -n $ns | xargs -I{} kubectl get {} -n $ns -o yaml > $backup_dir/$ns/secrets.yaml
done

# Backup CronJobs in all namespaces
for ns in $(kubectl get namespaces -o name | cut -d '/' -f 2); do
  mkdir -p $backup_dir/$ns
  kubectl get cronjobs -o name -n $ns | xargs -I{} kubectl get {} -n $ns -o yaml > $backup_dir/$ns/cronjobs.yaml
done

# Compress the backup directory
tar -czvf $backup_dir.tar.gz $backup_dir

# Delete the backup directory
rm -rf $backup_dir

该脚本将备份所有资源为一个 YAML 文件,并将 ConfigMap、Secret、CronJob 分别备份到它们各自的 YAML 文件中。您可以根据需要选择备份的资源类型,并将其保存到相应的 YAML 文件中。最后,脚本将压缩备份目录并删除原始目录。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值