k8s集群数据备份的两种方式
k8s集群的数据备份方式有两种:
第一种是备份etcd数据库,这种备份方式比较简单,但是恢复数据时只能全部恢复。试想一下,需求是恢复误删除的一个namespace,恢复时却要将整个etcd数据库重新导入覆盖,etcd作为k8s的核心数据库,这是个非常危险的操作。
第二种就是velero备份,velero的备份恢复策略颗粒度更细,除了对 Kubernetes 集群进行整体备份外,Velero 还可以通过对 Type、Namespace、Label 等对象进行分类备份或者恢复,可控性很强。
velero简介
k8s备份工具之velero, velero 是一个云原生的灾难恢复和迁移工具,它本身也是开源的, 采用 Go 语言编写,可以安全的备份、恢复和迁移Kubernetes集群资源和持久卷。
Velero 特性
支持 Kubernetes 集群数据备份和恢复
支持复制当前 Kubernetes 集群的资源到其它 Kubernetes 集群
支持复制生产环境到开发以及测试环境(不同命名空间的备份还原)
部署环境
一套k8s集群环境
一个velero客户端
一个velero服务端
一个对象存储,这里采用的是minio,生产环境建议使用阿里云或者腾讯云的对象存储,其次才是自建ceph集群
部署流程
1.通过docker拉取minio镜像,部署对象存储minio
# 所有数据存储对象的都不建议部署到k8s集群上,k8s集群上最好运行一些无状态应用,像这类的存储对象,建议直接通过docker部署即可
# 这是最新版镜像
docker pull minio/minio
docker images -a
2.创建数据存储目录和配置文件共享目录
mkdir -p /data/minio/minio_data/
mkdir -p /data/minio/minio_config/
3.运行minio容器,将主机的9000和9090映射到容器中
docker run -itd \
--name minio \
-p 9000:9000 \
-p 9090:9090 \
--restart=al