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

文章目录

  • 一、前言
  • 二、工具安装
    • 2.1、etcd版本查询
    • 2.2、etcdctl工具下载安装
  • 三、备份
    • 3.1、查询etcd服务
    • 3.2、测试命令使用
    • 3.3、内置快照备份
    • 3.4、卷快照
  • 四、恢复
    • 4.1、恢复快照
    • 4.2、备注

一、前言

此环境是通过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= --cert= --key= --endpoints=https://x.x.x.x:2379 --name= --initial-cluster== --initial-advertise-peer-urls= --data-dir= 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-集群

你可能感兴趣的:(kubernetes,kubernetes,数据库,etcd)