首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
kubernetes与velero的第一次尝试
2
在Kubernetes中如何针对Namespace进行资源限制?
3
kubernetes之metrics-server安装与配置
4
kubernetes部署metrics-server
5
Kubernetes1.20.9摘掉一个master节点再重新加入(ETCD需要注意的)
6
Kubernetes 1.17.17升级到1.18.20
7
Kubernetes 1.18.20升级到1.19.12
8
Kubernetes 1.19.12升级到1.20.9(强调一下selfLink)
9
Kubernetes 1.16.15升级到1.17.17
10
使用 kainstall 工具一键部署 kubernetes 高可用集群
11
附034.Kubernetes_v1.21.0高可用部署架构二
12
附016.Kubernetes_v1.17.4高可用部署
13
附022.Kubernetes_v1.18.3高可用部署架构一
14
附024.Kubernetes_v1.18.3高可用部署架构二
15
使用 StatefulSet 部署 etcd 集群
16
Kubernetes 稳定性保障手册 -- 极简版
17
Linux(centos7)离现安装kubernetes1.19.2和docker——组件部分
18
docker register 私有仓库部署 - http模式
19
KubeSphere 开源 KubeEye:Kubernetes 集群自动巡检工具
20
K8S 中的 CPUThrottlingHigh 到底是个什么鬼?
21
全链路分布式跟踪系统 Apache SkyWalking 入门教程
22
pod Evicted的状态究竟是何人所为
23
使用 ezctl 工具部署和管理 Kubernetes 集群
24
Kubernetes部署策略详解
25
kubernetes容器探针检测
26
使用Spring Boot实现动态健康检查HealthChecks
27
真一文搞定 ingress-nginx 的使用
28
K8S备份、恢复、迁移神器 Velero
29
一次关于k8s kubectl top 和 contained ps 不一致的问题探究
30
kubernetes备份恢复之velero
31
使用 Velero 进行集群备份与迁移
32
TKE集群中nginx-ingress使用实践
33
使用velero进行kubernetes灾备
34
Kubernetes 映射外部服务
35
运维体系建设套路
36
k8s解决pod调度不均衡的问题
37
ingress中虚拟路径解决方案
38
容器下的两地三中心建设
39
k8s集群外的主机访问pod的解决方案
40
k8s基础-健康检查机制
41
k8s基础-标签使用
42
ingress-nginx请求改写
43
nginx ingress server alias 多域名多证书问题
44
JAVA | Java 解决跨域问题 花式解决跨域问题
45
如何通过ingress-nginx实现应用灰度发布?
46
在Kubernetes(k8s)中使用GPU
47
使用 Prometheus-Operator 监控 Calico
48
使用Kubespray部署Kubernetes集群
49
云原生下的CI/CD:Argo CD 详解,手把手教你入门
50
Pod的健康检查机制
清单首页k8s文章详情

使用 Velero 进行集群备份与迁移

前言

在近日的一个风和日丽的下午,正在快乐的写 bug 时,突然间钉钉就被 call 爆了,原来是 k8s 测试集群的一个 namespace 突然不见了。这个 namespace 里面有 60 多个服务,瞬间全部没有了……虽然得益于我们的 CI/CD 系统,这些服务很快都重新部署并正常运行了,但是如果在生产环境,那后果就是不可想象的了。在排查这个问题发生的原因的同时,集群资源的灾备和恢复功能就提上日程了,这时 Velero 就出现了。

Velero

Velero 是 VMWare 开源的 k8s 集群备份、迁移工具。可以帮助我们完成 k8s 的例行备份工作,以便在出现上面问题的时候可以快速进行恢复。同时也提供了集群迁移功能,可以将 k8s 资源迁移到其他 k8s 集群的功能。Velero 将集群资源保存在对象存储中,默认情况下可以使用 AWS、Azure、GCP 的对象存储,同时也给出了插件功能用来拓展其他平台的存储,这里我们用到的就是阿里云的对象存储 OSS,阿里云也提供了 Velero 的插件,用于将备份存储到 OSS 中。下面我就介绍一下如何在阿里云容器服务 ACK 使用 Velero 完成备份和迁移。

Velero 地址:https://github.com/vmware-tanzu/velero ACK 插件地址:https://github.com/AliyunContainerService/velero-plugin

下载 Velero 客户端

Velero 由客户端和服务端组成,服务器部署在目标 k8s 集群上,而客户端则是运行在本地的命令行工具。

  • 前往 Velero 的 Release 页面 下载客户端,直接在 GitHub 上下载即可
  • 解压 release 包
  • 将 release 包中的二进制文件 velero 移动到 $PATH 中的某个目录下
  • 执行 velero-h 测试

创建 OSS bucket

创建一个 OSS bucket 用于存储备份文件,这里也可以用已有的 bucket,之后会在 bucket 中创建 backupsmetadatarestores三个目录,这里建议在已有的 bucket 中创建一个子目录用于存储备份文件。

创建 OSS 的时候一定要选对区域,要和 ACK 集群在同一个区域,存储类型和读写权限选择标准存储私有

创建阿里云 RAM 用户

这里需要创建一个阿里云 RAM 的用户,用于操作 OSS 以及 ACK 资源。

  • 新建权限策略

策略内容:

  • 新建用户 在新建用户的时候要选择 编程访问,来获取 AccessKeyIDAccessKeySecret,这里请创建一个新用于用于备份,不要使用老用户的 AK 和 AS。

部署服务端

  • 拉取 Velero 插件 到本地
  • 配置修改
    1. 修改 install/credentials-velero 文件,将新建用户中获得的 AccessKeyIDAccessKeySecret 填入,这里的 OSS EndPoint 为之前 OSS 的访问域名(注:这里需要选择外网访问的 EndPoint。):
    1. 修改 install/01-velero.yaml,将 OSS 配置填入:
    1. k8s 部署 Velero 服务
    1. 测试 Velero 状态

    可以看到 Velero 的客户端和服务端已经部署成功。

    1. 服务端清理 在完成测试或者需要重新安装时,执行如下命令进行清理

备份测试

velero-plugin 项目中已经给出 example 用于测试备份。

集群迁移

迁移方法同备份,在备份后切换集群,在新集群恢复备份即可。

高级用法

  • 定时备份 对集群资源进行定时备份,则可在发生意外的情况下,进行恢复(默认情况下,备份保留 30 天)。

定时备份的名称为:<SCHEDULENAME>-<TIMESTAMP>,恢复命令为:velero restore create--from-backup<SCHEDULE NAME>-<TIMESTAMP>

  • 备份删除 直接执行命令进行删除
  • 备份资源查看
  • 备份排除项目 可为资源添加指定标签,添加标签的资源在备份的时候被排除。

问题汇总

时区问题

进行定时备份时,发现备份使用的是 UTC 时间,并不是本地时间,经过排查后发现是 velero 镜像的时区问题,在调整后就会正常定时备份了,这里我重新调整了时区,直接调整镜像就好,修改 install/01-velero.yaml 文件,将镜像替换为 registry-vpc.cn-shanghai.aliyuncs.com/keking/velero:latest

版本问题

截止发稿时,Velero 已经发布了 v1.2.0 版本,目前 ACK 的 Velero 的插件还未升级。

结语

近日正好有 k8s 集群服务迁移服务的需求,使用 Velero 完成了服务的迁移,同时也每日进行集群资源备份,其能力可以满足容器服务的灾备和迁移场景,实测可用,现已运行在所有的 k8s 集群。

下一篇
举报
领券