kubernetes etcd 的备份

发布于 2023-11-09  453 次阅读


kubernetes 是使用etcd 数据库实时存储集群中的数据,生产的集群,安全起见一定要备份

etcd 的备份方式同时使用快照以及恢复快照

kubeadm 方式部署

1.由于我们需要在宿主机上操作备份,我们的etcd 服务实际是通过pod来运行的,安装etcd 。

yum -y install etcd

2.备份,导出etcd 的数据文件

ETCDCTL_API=3 etcdctl snapshot save etcd.db \
--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

3.还原etcd 数据(正常etcd 出问题时候会导致api server 无法启动,api server 会读etcd 的一部分数据)

##备份由来etcd
mv /var/lib/etcd /var/lib/etcd.bck
###
##还原etcd
ETCDCTL_API=3 etcdctl snapshot restore etcd.db --data-dir=/var/lib/etcd

可以通过定时计划的脚本来定时备份

[root@k8s-master01 etcd_backup]# cat etcd_backup.sh
# *************************************************
# Author        : Erice Jia
# Email         : erice_jia@163.com
# Last modified : 2022-11-09 00:42
# Filename      : etcd_backup.sh
# Description   :yum_install_etcd
# *************************************************
#!/bin/bash
path=/root/etcd_backup
mkdir -p $path
ETCDCTL_API=3 etcdctl snapshot save $path/etcd_$(date +%Y%m%d).db \
--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
##remove 7 day ago
rm -rf $path/etcd_$(date -d "7 days ago" +"%Y%m%d").db
##restore etcd
## ETCDCTL_API=3 etcdctl snapshot restore etcd.db --data-dir=/var/lib/etcd

二进制方式部署

二进制的备份方式可以参考kubeadm