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

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 etcdETCDCTL_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/etcdsudo systemctl start etcd

相关文章:

  • windows环境下,怎么查看本机的IP、MAC地址和端口占用情况
  • day64 图论 图论理论基础 深搜 广搜 98. 所有可达路径
  • Java学习 - MySQL视图的练习 实例
  • R语言——数据与运算
  • gitlab仓库中用git bash生成不是默认路径的ssh秘钥
  • TS-RadiMation测试软件如何在序列测试中发挥作用?
  • 【机械键盘调整灯光】腹灵MK870说明书(个人备用)
  • 操作系统期末快速复习(概念)
  • windows系统停止更新办法
  • Matlab基础语法:变量和数据类型,基本运算,矩阵和向量,常用函数,脚本文件
  • 【笔记】打卡01 | 初学入门
  • 本地快速部署大语言模型开发平台Dify并实现远程访问保姆级教程
  • mysql model_path longblob 类型文件操作
  • 【GD32F303红枫派使用手册】第二十一节 I2C-EEPROM读写实验
  • C语言练习02-数组
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • extract-text-webpack-plugin用法
  • HTML5新特性总结
  • HTTP中GET与POST的区别 99%的错误认识
  • Javascript弹出层-初探
  • ubuntu 下nginx安装 并支持https协议
  • Vue UI框架库开发介绍
  • Vue.js-Day01
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 测试如何在敏捷团队中工作?
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 使用Swoole加速Laravel(正式环境中)
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 源码安装memcached和php memcache扩展
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​【已解决】npm install​卡主不动的情况
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • #《AI中文版》V3 第 1 章 概述
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core WebAPI中封装Swagger配置
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .net 流——流的类型体系简单介绍
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @PostConstruct 注解的方法用于资源的初始化
  • [100天算法】-不同路径 III(day 73)