ETCD备份恢复脚本

etcd备份脚本

#! /bin/bash
etcdpwd=“/apps/etcd_bak” #etcd将要备份的目录
bak_date=date +"%Y-%m-%d"
etcdip=cat /etc/etcd/etcd.conf | grep ETCD_ADVERTISE_CLIENT_URLS | awk -F"=" '{print $2}' | awk -F "[\"]" '{print $2}' | awk -F"," '{print $1}'
#etcdip=cat /etc/kubernetes/apiserver | grep -E "etcd-servers|http" | awk '{print $1}' | tr "=" " " | awk '{print $2}' | grep -v kubernetes
export ETCDCTL_API=3
etcdctl --endpoints=$etcdip --cacert=“/etc/kubernetes/ssl/ca.crt” --cert=“/etc/kubernetes/ssl/etcd_server.crt” --key=“/etc/kubernetes/ssl/etcd_server.key” snapshot save $etcdpwd/etcd_$bak_date.db >>/dev/null 2>&1
if [ $? -eq 0 ]
then
echo “etcd备份完成”
else
echo “etcd备份失败,请检查etcd是否正常!”
fi

etcd恢复脚本,必须三台etcd上同时执行

#! /bin/bash
etcd_bak_db=“/apps/etcd_bak/etcd_2023-03-17.db”
etcd_data=“/data/etcd_data/etcd”
etcd_name=cat /etc/etcd/etcd.conf | grep ETCD_NAME | awk -F"=" '{print $2}' | awk -F"[\"]" '{print $2}'
#initial_cluster=cat /etc/etcd/etcd.conf | grep "ETCD_INITIAL_CLUSTER" | head -n 1 | awk -F "[\"]" '{ print $2}' | cut -d "=" -f 2-7
#initial_cluster=cat /etc/etcd/etcd.conf | grep "ETCD_INITIAL_CLUSTER" | head -n 1 | cut -d "=" -f 2-7
cluster_token=cat /etc/etcd/etcd.conf | grep ETCD_INITIAL_CLUSTER_TOKEN | awk -F "[\"]" '{print $2}'
peer_urls=cat /etc/etcd/etcd.conf | grep ETCD_INITIAL_ADVERTISE_PEER_URLS |awk -F "[\"]" '{print $2}'
etcdip=“https://192.168.133.128:2380,https://192.168.133.129:2380,https://192.168.133.130:2380”
#etcdip=cat /etc/etcd/etcd.conf | grep ETCD_ADVERTISE_CLIENT_URLS | awk -F"=" '{print $2}' | awk -F "[\"]" '{print $2}' | awk -F"," '{print $1}'
systemctl stop etcd
sleep 10s
rm -rf $etcd_data/*
export ETCDCTL_API=3
etcdctl --endpoints=$etcdip --name $etcd_name --initial-cluster “etcd_133_128=https://192.168.133.128:2380,etcd_133_129=https://192.168.133.129:2380,etcd_133_130=https://192.168.133.130:2380” \
–initial-cluster-token $cluster_token --initial-advertise-peer-urls $peer_urls --cacert=“/etc/kubernetes/ssl/ca.crt” --cert=“/etc/kubernetes/ssl/etcd_server.crt” --key=“/etc/kubernetes/ssl/etcd_server.key” --data-dir=$etcd_data snapshot restore $etcd_bak_db >>/dev/null 2>&1
if [ $? -eq 0 ]
then
echo “etcd恢复完成”
else
echo “etcd恢复失败,请检查etcd是否正常!”
fi
systemctl daemon-reload
systemctl restart etcd
if [ $? -eq 0 ]
then
echo “etcd启动成功”
else
echo “etcd启动失败,请检查etcd是否正常!”
fi

注: 如果在原有三台etcd主机无法恢复的情况下,需要重新部署三台新的etcd,用如上恢复脚本进行恢复时,主要新生成的etcd证书,需要将新的etcd证书放到kube-apiserver的配置文件指定的位置,重新启动kube-apiserver,即可进行恢复。如图:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值