备份线上kubernetes存在etcd的配置,并在本地启动etcd加载数据

备份

etcd功能描述

kubernetes的持久化机制是通过etcd实现的,即所有的配置信息会存储到etcd中。所以如果想要备份kubernetes中的集群配置信息,只要备份etcd的数据即可。本文将描述如何从etcd读取对应的kubernetes配置,并转成常见的yml格式。另外会开一篇新文章描述etcd数据的备份和导入。

kubernetes所处服务器操作

etcd备份通过拍摄快照文件实现,实质上快照文件就是一个位于${ETCD_DATA_DIR}下的一个.db文件。备份很简单

# 如果etcd需要认证,请自行配置
ETCDCTL_API=3 etcdctl snapshot save backup.db

本地载入etcd备份

  • 将刚刚生成的快照文件backup.db下载到本地备用
  • 启动一个etcd docker容器
mkdir ./data -p
docker stop etcd-cli
docker run -d -e ALLOW_NONE_AUTHENTICATION=yes -v "$(pwd)/data/:/tmp/data/" --name etcd-cli harbor.rdmp.dg.com/library/bitnami/etcd:3.5.6
docker exec -uroot -it etcd-cli bash

以下操作为容器内操作

cd /tmp/data/
# 将etcd备份数据恢复出来
/opt/bitnami/etcd/etcdutl snapshot restore --data-dir default backup.db
# 备份文件解包到default文件夹
cd default
# 覆盖原有的etcd数据,`/bitnami/etcd/data/`为etcd docker容器默认数据文件夹
cp -rf member/ /bitnami/etcd/data/
# 退出容器
exit

宿主机操作

# 重启容器
docker restart etcd-cli
# 以root用户身份进入容器内部
docker exec -uroot -it etcd-cli bash

此时线上的etcd数据已经加载到你本地的etcd容器中了,如何直接通过etcd查看k8s配置请看下一篇: 导出etcd中的kubernetes配置信息

posted @ 2022-09-27 15:16  小小记录本  阅读(211)  评论(0编辑  收藏  举报