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
Comments | NOTHING