本文介绍 三节点etcd,五节点、七节点亦是如此:
10.10.21.101
10.10.21.102
10.10.21.103
1、创建目录
mkdir -p /data/etcd_backup_dir/
2、备份(暂存)
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem --endpoints=https://10.10.21.101:2379 snapshot save /data/etcd_backup_dir/etcd1-snapshot-date +%Y%m%d
.db
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem --endpoints=https://10.10.21.102:2379 snapshot save /data/etcd_backup_dir/etcd2-snapshot-date +%Y%m%d
.db
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem --endpoints=https://10.10.21.103:2379 snapshot save /data/etcd_backup_dir/etcd3-snapshot-date +%Y%m%d
.db
3、加定时任务(备份)
3.1 脚本
cat > /data/etcd_backup_dir/etcdbak.sh << EOF
#/bin/bash
etcd备份脚本
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem --endpoints=https://10.10.21.101:2379 snapshot save /data/etcd_backup_dir/etcd1-snapshot-date +%Y%m%d
.db
EOF
cat > /data/etcd_backup_dir/etcdbak.sh << EOF
#/bin/bash
etcd备份脚本
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem --endpoints=https://10.10.21.102:2379 snapshot save /data/etcd_backup_dir/etcd2-snapshot-date +%Y%m%d
.db
EOF
cat > /data/etcd_backup_dir/etcdbak.sh << EOF
#/bin/bash
etcd备份脚本
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem --endpoints=https://10.10.21.102:2379 snapshot save /data/etcd_backup_dir/etcd3-snapshot-date +%Y%m%d
.db
EOF
3.2 授权
chmod +x /data/etcd_backup_dir/etcdbak.sh
3.3 定时任务
crontab -e
0 20 * /data/etcd_backup_dir/etcdbak.sh
4、恢复
4.1 关闭apiserver和etcd
systemctl stop kube-apiserver && systemctl stop etcd
4.2 备份数据
mv /var/lib/etcd /var/lib/etcd-$(date +%Y%m%d).bak
4.3 恢复数据(最后备份时间),
etcdctl snapshot restore etcd1-snapshot-date +%Y%m%d
.db \
--name etcd-10.10.21.101 \
--initial-cluster etcd-10.10.21.101=https://10.10.21.101:2380,etcd-10.10.21.102=https://10.10.21.102:2380,etcd-10.10.21.103=https://10.10.21.103:2380 \
--initial-cluster-token etcd-cluster-0 --initial-advertise-peer-urls https://10.10.21.101:2380 --data-dir=/var/lib/etcd
etcdctl snapshot restore etcd1-snapshot-date +%Y%m%d
.db \
--name etcd-10.10.21.102 \
--initial-cluster etcd-10.10.21.101=https://10.10.21.101:2380,etcd-10.10.21.102=https://10.10.21.102:2380,etcd-10.10.21.103=https://10.10.21.103:2380 \
--initial-cluster-token etcd-cluster-0 --initial-advertise-peer-urls https://10.10.21.102:2380 --data-dir=/var/lib/etcd
etcdctl snapshot restore etcd1-snapshot-date +%Y%m%d
.db \
--name etcd-10.10.21.103 \
--initial-cluster etcd-10.10.21.101=https://10.10.21.101:2380,etcd-10.10.21.102=https://10.10.21.102:2380,etcd-10.10.21.103=https://10.10.21.103:2380 \
--initial-cluster-token etcd-cluster-0 --initial-advertise-peer-urls https://10.10.21.103:2380 --data-dir=/var/lib/etcd
4.4 启动apiserver和etcd
systemctl start kube-apiserver && systemctl start etcd
4.5 查看集群状态
etcdctl --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem --endpoints=https://10.10.21.101:2379 --endpoints=https://10.10.21.102:2379 --endpoints=https://10.10.21.103:2379 endpoint status --write-out=table
或者
kubectl get cs