k8s集群etcd备份与恢复

目前,仍有很多etcd以容器的方式运行。在多种安装方式中,大部分仍运行在容器中。比如,rancher安装,kubeadm,minikube(以pod的形式运行)。所以,我们可以在宿主机上使用etcdctl操作容器中的etcd。

环境准备

etcdctl安装

wget https://github.com/etcd-io/etcd/releases/download/v3.4.13/etcd-v3.4.13-linux-amd64.tar.gz
tar zxvf etcd-v3.4.13-linux-amd64.tar.gz
mv etcd-v3.4.13-linux-amd64/etcdctl /usr/bin

 

基础命令检查

endpoint health

ECTD_API=3 etcdctl  --cacert=/etc/kubernetes/pki/etcd/ca.crt  --cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key --endpoints=https://10.0.0.69:2379 endpoint health

get
# 查看所有的key

ECTD_API=3 etcdctl  --cacert=/etc/kubernetes/pki/etcd/ca.crt  --cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key --endpoints=https://10.0.0.69:2379 get / --prefix --keys-only

# 查看某一个key

ECTD_API=3 etcdctl  --cacert=/etc/kubernetes/pki/etcd/ca.crt  --cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key --endpoints=https://10.0.0.69:2379 get /registry/namespaces/default

 

ETCD备份

复制代码
#! /bin/bash
ETCD_PATH=/etc/kubernetes/pki
CACERT=$ETCD_PATH/etcd/ca.crt
CERT=$ETCD_PATH/etcd/server.crt
KEY=$ETCD_PATH/etcd/server.key
ENDPOINTS=https://10.0.0.69:2379

ETCDCTL_API=3 etcdctl \
--cacert="${CACERT}" --cert="${CERT}" --key="${KEY}" \
--endpoints=${ENDPOINTS} \
snapshot save /root/etcd-backup/etcd-snapshot-`date +%Y%m%d%H%M%S`.db
复制代码

备份是执行./etcd_backup.sh

ETCD恢复

复制代码
#!/bin/bash
if [ ! -n "$1" ];
then
   echo "请输入etcd备份文件的时间"
   exit
fi

BACKUP=/root/etcd-backup/etcd-snapshot-$1.db
echo $BACKUP
if [ ! -f "$BACKUP" ];
then 
   echo "etcd备份文件不存在,请重新执行并输入正确的备份文件时间"
   exit
fi

ETCD_PATH=/etc/kubernetes/pki
CACERT=$ETCD_PATH/etcd/ca.crt
CERT=$ETCD_PATH/etcd/server.crt
KEY=$ETCD_PATH/etcd/server.key
INITIAL_CLUSTER=https://192.168.5.45:2380
INITIAL_ADVERTISE_PEER_URLS=https://192.168.5.45:2380

rm -rf /var/lib/etcd/

ECTD_API=3 etcdctl  --cacert=$ETCD_PATH/etcd/ca.crt  --cert=$ETCD_PATH/etcd/server.crt --key=$ETCD_PATH/etcd/server.key  --endpoints=$ENDPOINTS snapshot restore \
 $BACKUP --name=master1  --initial-cluster=master1=$INITIAL_CLUSTER --initial-advertise-peer-urls=$INITIAL_ADVERTISE_PEER_URLS --data-dir=/var/lib/etcd
复制代码

恢复时执行etcd_restore.sh 20220310140803   【20220310140803为备份时的日期时间】

 

posted on   jmbkeyes  阅读(545)  评论(0编辑  收藏  举报

(评论功能已被禁用)
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示