Dok Docs
Github Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

etcd

概述

DOK 提供了 Etcd 的备份/恢复命令,具体的使用可以参考 dok -h,下面是 Etcd 备份/恢复功能实现的原理,关于 Kubernetes Etcd 的集群数据备份和恢复,也可以参考k8s的官方文档 或者是 VMware的文档

工具

DOK 为每个 controlplane 节点都预安装了 etcdctl 工具,路径在 /usr/bin/etcdctl,版本跟 k8s 对应的 Etcd 的版本一致 3.4.13-0。

操作

操作的想法是参考了这篇文章

yum -y install etcd
ETCDCTL_API=3 etcdctl snapshot save /tmp/snap.db \
  --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 

# 备份文件为snap.db
mv /etc/kubernetes/manifests/{kube-apiserver.yaml,etcd.yaml} /tmp/
mv /var/lib/etcd /var/lib/etcd.bak

ETCDCTL_API=3 etcdctl snapshot restore /tmp/snap.db --data-dir=/var/lib/etcd

mv /tmp/{kube-apiserver.yaml,etcd.yaml} /etc/kubernetes/manifests

备份的原理

因为 Etcd 集群的数据在不同节点上是相互同步的,所以备份的时候只需要针对一个节点的数据操作就好,但是为了保险,一般都会在至少两个节点上去做备份,以防某个节点有问题,导致备份数据无法取出。

数据恢复

数据恢复的话,需要一般会把备份文件拷贝到所有节点,并且在所有节点上都进行一次数据恢复,数据恢复时,会把所有 kube-apiserver 以及 Etcd 都停止,先逐个把 Etcd 的数据进行恢复,然后再重新启动 Etcd,最后启动 kube-apiserver。

定时备份

DOK 会自动在 ControlPlane 节点上部署一个关于 etcd 的 crontab 任务,以定期给 etcd 执行备份和清理冗余备份,默认情况下,每60分钟执行一下数据备份,最多保存1天的备份。

# 到master0查看定时任务
crontab -l