Kubernetes(k8s)-备份&Etcd介绍

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。

我们讲解Kubernetes,讲到现在已经讲解超过50小节,但是我们还没有讲解过关于Kubernetes备份相关的内容,毕竟这个Kubernetes集群承担了很重要的业务,但是我们还没考虑过集群备份功能,今天这个小节我们讲解下备份相关的内容。

讲解备份之前,我们需要先知道Kubernetes集群的数据存储在哪里,知道了数据存储在哪里,我们是不是只要备份数据库的内容即可。

Kubernetes的的数据经过我们前面多个小节的介绍,我们已经知道他数据都存储在Etcd数据库里面,哪我们应该怎么备份数据库呢?

Etcd由于我们这里是容器部署的,所以在Master里面默认是没有备份工具的,我们需要先准备备份工具。

1.备份工具准备

bash 复制代码
#按照帮助,但是这个命令会执行失败
kubectl cp  kube-system/etcd-master01:/usr/local/bin/etcdctl ./etcdctl

#换成Docker命令则没问题,注意替换容器id
[root@master01 ~]# docker cp 3910:/usr/local/bin/etcdctl ./etcdctl
Successfully copied 18MB to /root/etcdctl

2.备份命令

ini 复制代码
ETCDCTL_API=3 etcdctl --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 \
  snapshot save ./etcd/snapshot.db

这里多说一点,在Kubernetes里面所有服务端都是带证书的,所以我们操作数据库也需要带上证书,实际上把最后的备份命令换成其他查询命令,也可以查看Etcd里面的数据。

除去我们直接操作Kubernetes的数据库外,实际上我们还有另外一种备份方式。

当我们部署完成集群的时候,目前集群里面只有默认的管控Pod,和网络插件,我们只需要把这些Pod的yaml文件备份到其他地方即可。当我们业务上线以后,我们所有操作都通过yaml文件来写入集群,哪么我们只需要把我们写入集群的yaml文件备份即可,如果存储在版本问题的,我们也可以使用版本工具或者其他方式来标注,这样我们写入集群前的数据都在,也就达到了备份的目的。

如果我们手边的文件已经存在部分丢失,我们也可以把当前集群里面的资源以另存yaml格式方式来进行备份(这个命令将在下一小节详细讲解)。注意不要遗漏资源。

arduino 复制代码
kubectl get deploy xxx -o yaml >xxx.yaml

上面的备份我们已经完成Kubernetes集群的元数据备份,但是集群所需要的集群镜像是否也有备份或者是否具有高可用性,也是需要考虑的,我们后期也会出一期如何来把数据存储到COS里面,也可以用我们前面讲解的Harbor同步功能进行备份。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

相关推荐
2401_826097623 小时前
JavaEE-Linux环境部署
java·linux·java-ee
(:满天星:)4 小时前
第31篇:块设备与字符设备管理深度解析(基于OpenEuler 24.03)
linux·运维·服务器·网络·centos
小陶来咯4 小时前
【仿muduo库实现并发服务器】Acceptor模块
运维·服务器
爱莉希雅&&&4 小时前
shell编程之awk命令详解
linux·服务器·git
笑稀了的野生俊4 小时前
在服务器中下载 HuggingFace 模型:终极指南
linux·服务器·python·bash·gpu算力
cui_hao_nan4 小时前
Docker后端部署
运维·docker·容器
渡我白衣5 小时前
Linux操作系统之文件(四):文件系统(上)
linux
ZZH1120KQ5 小时前
Linux系统安全及应用
linux·运维·系统安全
程序漫游人5 小时前
centos8.5安装jdk21详细安装教程
java·linux
小扎仙森5 小时前
关于服务器宝塔转移wordperss子比主题问题
运维·服务器