kubernetes的etcd数据库的数据备份与恢复

一、前言

此环境是通过kubeadm安装的kubernetes,etcd是以容器的方式运行的,如果是本地运行的etcd,备份恢复步骤类似。

所有 Kubernetes 对象都存储在 etcd 上。定期备份 etcd 集群数据对于在灾难场景(例如丢失所有控制平面节点)下恢复 Kubernetes 集群非常重要。 快照文件包含所有 Kubernetes 状态和关键信息。为了保证敏感的 Kubernetes 数据的安全,可以对快照文件进行加密。

备份 etcd 集群可以通过两种方式完成:etcd 内置快照和卷快照

二、工具安装

2.1、etcd版本查询

kubectl describe pod etcd-nodename -n kube-system|grep Image:

本环境是etcd:3.4.13
请添加图片描述

2.2、etcdctl工具下载安装

下载地址:https://github.com/etcd-io/etcd/releases/download/v3.4.13/etcd-v3.4.13-linux-amd64.tar.gz

安装:

tar -zxf etcd-v3.4.13-linux-amd64.tar.gz
cp etcd-v3.4.13-linux-amd64/etcdctl /usr/bin/

请添加图片描述
请添加图片描述

三、备份

3.1、查询etcd服务

在master节点上查询etcd服务运行信息

ps -ef|grep etcd

请添加图片描述
获取到–advertise-client-urls地址,将服务信息拷贝到文件,方便后面使用这些信息(参数恢复快照时需要)

3.2、测试命令使用

查询etcd状态

cd /etc/kubernetes/pki/etcd/   #kubeadm安装默认存放证书目录
ETCDCTL_API=3 etcdctl --cacert=<trusted-ca-file> --cert=<cert-file> --key=<key-file> --endpoints=https://x.x.x.x:2379 endpoint status

请添加图片描述

3.3、内置快照备份

etcd 支持内置快照。快照可以从使用 etcdctl snapshot save 命令的活动成员中获取(该 etcd 数据目录目前没有被 etcd 进程使用,也可以通过从etcd数据目录复制 member/snap/db 文件)

备份快照:snapshot save

ETCDCTL_API=3 etcdctl --cacert=<trusted-ca-file> --cert=<cert-file> --key=<key-file> --endpoints=https://x.x.x.x:2379 snapshot save /data/etcd/etcd-bak.db

请添加图片描述

查询快照信息:

ETCDCTL_API=3 etcdctl --write-out=table snapshot status /data/etcd/etcd-bak.db

请添加图片描述

3.4、卷快照

如果 etcd 运行在支持备份的存储卷上,则可以通过获取存储卷的快照来备份 etcd 数据。

四、恢复

4.1、恢复快照

ETCDCTL_API=3 etcdctl --cacert=<trusted-ca-file> --cert=<cert-file> --key=<key-file> --endpoints=https://x.x.x.x:2379 --name=<name> --initial-cluster=<xxx>=<xxx> --initial-advertise-peer-urls=<xxx> --data-dir=<xxx> snapshot restore /data/etcd/etcd-bak.db

4.2、备注

如果集群中正在运行任何 API 服务器,则不应尝试还原 etcd 的实例。相反,请按照以下步骤还原 etcd:

  • 停止所有API服务实例(先将kube-apiserver停止,再暂停etcd,之后再执行恢复操作)
  • 在所有etcd实例中恢复状态(etcd都是以pod的形式运行的,因此,无法停止pod,可以直接删除原有的数据之后,执行snapshot restore命令)
  • 重启所有API服务实例

我们还建议重启所有组件(例如 kube-schedulerkube-controller-managerkubelet),以确保它们不会 依赖一些过时的数据。请注意,实际中还原会花费一些时间



-----------日常记录---------------

参考:https://kubernetes.io/zh/docs/tasks/administer-cluster/configure-upgrade-etcd/#备份-etcd-集群

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值