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为备份时的日期时间】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具