Kubernetes集群的etcd数据备份脚本

etcd-backup.sh

#!/bin/bash
# 配置环境变量
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"

export ETCDCTL_API=3
export ETCD_ENDPOINTS="https://127.0.0.1:2379"
export ETCD_CA_FILE="/etc/kubernetes/pki/etcd/ca.crt"
export ETCD_CERT_FILE="/etc/kubernetes/pki/etcd/server.crt"
export ETCD_KEY_FILE="/etc/kubernetes/pki/etcd/server.key"
export ETCDCTL_TIMEOUT="300s"

# 备份路径(提前创建:mkdir -p /backup/etcd)
BACKUP_DIR="/backup/etcd"
SNAPSHOT_FILE="${BACKUP_DIR}/etcd-snapshot-$(date +%Y%m%d%H%M%S).db"

# 创建快照
etcdctl --endpoints=${ETCD_ENDPOINTS} \
	--cacert=${ETCD_CA_FILE} --cert=${ETCD_CERT_FILE} --key=${ETCD_KEY_FILE} \
	--command-timeout=${ETCDCTL_TIMEOUT} \
	snapshot save ${SNAPSHOT_FILE}

if [ $? -eq 0 ]; then
	echo "$(date +%F\ %T) 备份成功:${SNAPSHOT_FILE}" >>/var/log/etcd-backup.log
else
	echo "$(date +%F\ %T) 备份失败:${SNAPSHOT_FILE}" >>/var/log/etcd-backup.log
	exit 1
fi

# 清理7天前的旧备份
find ${BACKUP_DIR} -name "etcd-snapshot-*.db" -mtime +7 -delete

posted @ 2023-07-12 16:28  wanghongwei-dev  阅读(203)  评论(0)    收藏  举报