
回复
在上篇文章中,介绍了 Kubernetes 资源的备份工具 Velero,我们可以安全快速的备份出运行在 Kubernetes 的资源,但是 Kubernetes 本身的备份更多的依赖 etcd 备份策略,所以我们本篇文章介绍备份 etcd 数据库。
了解这两篇文章的精髓,那么玩转 Kubernetes 云环境的备份恢复就如鱼得水。
一般情况的 Kubernetes 部署分为 kubeadm 部署和二进制部署,二进制部署备份etcd 相对较为简单,所以本篇文章介绍 kubeadm 及其边缘依赖kubeadm ,比如 sealos、kubekey 部署的 etcd 备份,此种部署方式, etcd 部署在容器内部,我们就需要备份容器内部的数据。
在 master 主机或者 etcd 所在节点的主机执行如下命令,将容器中的 etcdctl
命令拷贝至本机系统 PATH
路径下。
kubectl exec -i -n <some-namespace> <some-pod> -- tar xf -
,是需要容器中支持 tar 命令,官方 etcd 镜像并没有 tar 命令,所以会有 command terminated with exit code 126
报错。本命令支持单节点多 etcd pod ,所以可以直接执行。
这个操作一般仅需执行一次即可。
这个操作一般仅需执行一次即可。
一般配置为定时任务,每天晚上定时备份即可。
清空该目录前清注意是否有备份,没有的话需要先备份该目录,防止还原失败。若不清除该目录,则还原操作会失败。
本文章展示的是单点 etcd ,备份恢复策略,集群的也类似,只不过 endpoint 需要添加 etcd 集群中的节点,其余是是类似的。
这是本人生产环境的备份数据,也要定期拷贝至其他备份存储上。