k8s集群etcd备份与恢复

一、前言

k8s集群使用etcd集群存储数据,如果etcd集群崩溃了,k8s集群的数据就会全部丢失,所以需要日常进行etcd集群数据的备份,预防etcd集群崩溃后可以使用数据备份进行恢复,也可用于重建k8s集群进行数据恢复

二、备份

先安装etcd服务,k8s集群使用的pod部署etcd集群

yum -y install etcd

更改etcd api版本为v3(临时生效,重启后会失效)

export ETCDCTL_API=3

永久生效

vi /etc/profile

bash 复制代码
export ETCDCTL_API=3    #在末尾加入该配置

使配置生效

source /etc/profile

查看是否生效

etcdctl version

etcd集群数据备份,只需在一个节点上执行备份即可,因为用的是pod部署所以直接调用etcd接口进行备份

netstat -tlpn

创建备份存放目录

mkdir -p /opt/etcd/backup/

执行备份命令

bash 复制代码
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
snapshot save /opt/etcd/backup/etcdbackup.db

ls -ll /opt/etcd/backup/

三、恢复

etcd集群数据恢复需要在每个etcd的节点执行数据备份的恢复,执行恢复前需要先停止etcd服务和k8s组件服务apiserver、controller-manager、scheduler即manifests目录下的所有由yaml启动的服务

ls /etc/kubernetes/manifests/

因为是通过pod的方式直接部署,将该目录更改名称所有服务就会停止

mv /etc/kubernetes/manifests /etc/kubernetes/manifests.bak

再把原来的etcd数据目录也备份,以免恢复出问题需要还原

mv /var/lib/etcd /var/lib/etcd.bck

恢复etcd备份数据

bash 复制代码
ETCDCTL_API=3 etcdctl snapshot restore /opt/etcd/backup/etcdbackup.db --data-dir=/var/lib/etcd

以上恢复操作需要在每个etcd节点均需执行,执行完成后在恢复etcd和k8s组件服务的运行

将etcd和k8s组件服务恢复运行

mv /etc/kubernetes/manifests.bak /etc/kubernetes/manifests

相关推荐
身如柳絮随风扬22 分钟前
Java中的CAS机制详解
java·开发语言
风筝在晴天搁浅2 小时前
hot100 78.子集
java·算法
故事和你913 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
Configure-Handler3 小时前
buildroot System configuration
java·服务器·数据库
:Concerto4 小时前
JavaSE 注解
java·开发语言·sprint
电商API_180079052474 小时前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫
一点程序5 小时前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
C雨后彩虹5 小时前
计算疫情扩散时间
java·数据结构·算法·华为·面试
2601_949809595 小时前
flutter_for_openharmony家庭相册app实战+我的Tab实现
java·javascript·flutter
vx_BS813305 小时前
【直接可用源码免费送】计算机毕业设计精选项目03574基于Python的网上商城管理系统设计与实现:Java/PHP/Python/C#小程序、单片机、成品+文档源码支持定制
java·python·课程设计