k8s及etcd的每日自动备份及故障时的还原脚本

#!/bin/bash

# 定义备份目录
BACKUP_DIR="/data/backupdata/k8s"
K8S_CONFIG_BACKUP="${BACKUP_DIR}/k8s_config_backup_$(date +%Y%m%d%H%M%S).tar.gz"
ETCD_BACKUP="${BACKUP_DIR}/etcd_backup_$(date +%Y%m%d%H%M%S).db"
TEMP_DIR="${BACKUP_DIR}/temp_$(date +%Y%m%d%H%M%S)"

# 创建备份目录和临时目录(如果不存在)
mkdir -p ${BACKUP_DIR}
mkdir -p ${TEMP_DIR}

# 备份Kubernetes配置数据到临时目录
kubectl get all --all-namespaces -o yaml > ${TEMP_DIR}/k8s_all_config.yaml

# 压缩Kubernetes配置数据
tar -czvf ${K8S_CONFIG_BACKUP} -C ${TEMP_DIR} k8s_all_config.yaml

# 删除临时目录
rm -rf ${TEMP_DIR}

# 备份etcd数据
ETCDCTL_API=3 etcdctl snapshot save ${ETCD_BACKUP} \
  --endpoints=https://10.1.xx.xx:2379 \
  --cacert=/etc/kubernetes/ssl/ca.pem \
  --cert=/etc/kubernetes/ssl/etcd.pem \
  --key=/etc/kubernetes/ssl/etcd-key.pem

# 清理旧备份,只保留最近20天的备份
find ${BACKUP_DIR} -type f -name '*.tar.gz' -mtime +20 -exec rm {} \;
find ${BACKUP_DIR} -type f -name '*.db' -mtime +20 -exec rm {} \;


# 输出备份完成信息
echo "Kubernetes配置数据和etcd数据备份完成:${K8S_CONFIG_BACKUP}, ${ETCD_BACKUP}"

crontab -e

0 2 * * * /path/to/backup_k8s.sh >> /var/log/backup_k8s.log 2>&1

未来万一出现故障时,恢复数据方法如下:

#提取备份文件
tar -xzvf /path/to/backup/directory/k8s_config_backup_YYYYMMDDHHMMSS.tar.gz -C /path/to/extract/directory


#恢复k8s配置数据
kubectl apply -f /path/to/extract/directory/k8s_all_config.yaml

#以下开始恢复etcd数据

sudo systemctl stop etcd

ETCDCTL_API=3 etcdctl snapshot restore /path/to/backup/directory/etcd_backup_YYYYMMDDHHMMSS.db \
  --name=etcd-10.1.xx.102 \
  --initial-advertise-peer-urls=https://10.1.xx.102:2380 \
  --initial-cluster=etcd-10.1.xx.102=https://10.1.xx.102:2380,etcd-10.1.xx.103=https://10.1.xx.103:2380,etcd-10.1.xx.104=https://10.1.xx.104:2380 \
  --initial-cluster-token=etcd-cluster-0 \
  --initial-cluster-state=new \
  --data-dir=/var/lib/etcd


sudo systemctl start etcd

相关推荐

  1. k8setcd每日自动备份故障还原脚本

    2024-06-15 18:10:02       38 阅读
  2. k8s etcd备份与恢复

    2024-06-15 18:10:02       48 阅读
  3. K8S集群Etcd数据备份/恢复

    2024-06-15 18:10:02       29 阅读
  4. k8s二进制部署master 和 etcd

    2024-06-15 18:10:02       50 阅读
  5. k8snamespace创建方式

    2024-06-15 18:10:02       57 阅读
  6. oracle表备份还原

    2024-06-15 18:10:02       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-15 18:10:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-15 18:10:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-15 18:10:02       82 阅读
  4. Python语言-面向对象

    2024-06-15 18:10:02       91 阅读

热门阅读

  1. Android中球体碰撞代码分享-kotlin,入门版

    2024-06-15 18:10:02       30 阅读
  2. Non-zero exit code pycharm

    2024-06-15 18:10:02       36 阅读
  3. 电脑常用DOS命令

    2024-06-15 18:10:02       27 阅读
  4. React@16.x(25)useReducer

    2024-06-15 18:10:02       35 阅读
  5. 2024.6.14刷题记录-KMP记录

    2024-06-15 18:10:02       37 阅读
  6. Qt day2

    Qt day2

    2024-06-15 18:10:02      30 阅读
  7. VSCode使用git出现的问题记录--git回退

    2024-06-15 18:10:02       27 阅读
  8. CocosCreator3.x相机实践

    2024-06-15 18:10:02       24 阅读
  9. 在 Python 中创建具有当前日期和时间的文件名

    2024-06-15 18:10:02       29 阅读