当前位置: 首页 > news >正文

【k8s】 etcd服务端及客户端版本及快照【定时】备份 20260730

1、master节点-etcd服务端版本

####先获取 etcd 静态 Pod 名称

kubectl get pods -n kube-system | grep etcd

####查看集群 etcd 版本

kubectl exec -n kube-system etcd-k8s-master -- etcd --version

image

 服务端版本:etcd Version: 3.5.9

image

 

2、master节点-etcd客户端版本

客户端v3.5.31

 

wget https://github.com/etcd-io/etcd/releases/download/v3.5.33/etcd-v3.5.33-linux-amd64.tar.gz
tar -zxvf etcd-v3.5.33-linux-amd64.tar.gz
cd etcd-v3.5.33-linux-amd64
cp etcdctl etcdutl /usr/local/bin/

 

 

image

 

# 验证客户端版本

etcdctl version

image

 etcdutl version

 

image

 

 

3、master节点-etcd健康检测命令

ETCDCTL_API=3 etcdctl --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

endpoint health

 

image

https://127.0.0.1:2379 is healthy: successfully committed proposal: took = 26.893613ms 

####etcd 连接正常、集群健康探测成功!

 

 

 

4、etcd 快照备份(生产核心命令)

 

4.1 master 节点提前创建备份目录

mkdir -p /data/etcd-backup

 

 

 

4.2 备份完成立刻查看快照信息

ETCDCTL_API=3 etcdctl \
--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 \
snapshot save /data/etcd-backup/etcd-$(date +%Y%m%d-%H%M).snap \
&& etcdutl snapshot status /data/etcd-backup/etcd-$(date +%Y%m%d-%H%M).snap

 

image

 

 

image

 

 

4.3

#集群成员列表

ETCDCTL_API=3 etcdctl \
--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 \
member list

image

 

image

 

#集群版本

ETCDCTL_API=3 etcdctl \
--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 \
version

image

 #集群领导者

ETCDCTL_API=3 etcdctl \
--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 \
endpoint status

image

 

####可以把证书参数写入环境变量,后续命令不用重复携带证书

export ETCDCTL_API=3
export ETCDCTL_ENDPOINTS=https://127.0.0.1:2379
export ETCDCTL_CACERT=/etc/kubernetes/pki/etcd/ca.crt
export ETCDCTL_CERT=/etc/kubernetes/pki/etcd/server.crt
export ETCDCTL_KEY=/etc/kubernetes/pki/etcd/server.key

 

####简写

##健康检测命令

etcdctl endpoint health 

##备份快照命令
etcdctl snapshot save test.snap

image

####集群列表

etcdctl member list 

image

 

####单独查看快照命令(手动执行)

etcdutl snapshot status /data/etcd-backup/test.snap

image

 

image

 

# 查看集群领导者、版本、数据大小

etcdctl endpoint status

image

 

 

 

4.4 备份完成立刻查看快照信息脚本

 

#创建脚本
vi /data/etcd-backup/etcd-backup.sh
#赋予执行权限
chmod +x /data/etcd-backup/etcd-backup.sh
##手动立即执行测试

###手动临时清理环境变量再运行

unset ETCDCTL_API ETCDCTL_ENDPOINTS ETCDCTL_CACERT ETCDCTL_CERT ETCDCTL_KEY
./etcd-backup.sh

image

 

./etcd-backup.sh或/data/etcd-backup/etcd-backup.sh

image

 

 

4.5

4.6 etcd-backup.sh脚本内容

 

#!/bin/bash
# 清除etcdctl环境变量冲突
unset ETCDCTL_API
unset ETCDCTL_ENDPOINTS
unset ETCDCTL_CACERT
unset ETCDCTL_CERT
unset ETCDCTL_KEY

SNAP=/data/etcd-backup/etcd-$(date +%Y%m%d-%H%M).snap

ETCDCTL_API=3 etcdctl \
--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 \
snapshot save "${SNAP}"

echo "====快照信息===="
if [ -f "${SNAP}" ];then
etcdutl snapshot status "${SNAP}"
else
echo "❌快照文件生成失败!"
fi

echo "====删除7天前快照===="
# 算出7天前日期 YYYYMMDD
DEL_DATE=$(date -d "7 days ago" +%Y%m%d)
find /data/etcd-backup -name "etcd-*.snap" | while read file;do
# 提取文件名中的8位日期
FILE_DATE=$(echo "$file" | grep -oE "etcd-[0-9]{8}" | cut -d'-' -f2)
if [[ "$FILE_DATE" < "$DEL_DATE" ]];then
echo "删除旧备份:$file"
rm -f "$file"
fi
done

image