使用 Velero 跨云平台迁移集群资源到 TKE

本文介绍了如何使用Velero工具将自建或其他云平台的Kubernetes集群资源安全地迁移到腾讯云TKE。迁移过程中涉及备份、还原、处理跨云平台差异及资源核查等步骤,确保数据完整性和业务连续性。
摘要由CSDN通过智能技术生成

作者:李全江(jokey),腾讯云工程师,热衷于云原生领域。目前主要负责腾讯云 TKE 的售中、售后的技术支持,根据客户需求输出合理技术方案与最佳实践。

概述

Velero 是一个非常强大的开源工具,可以安全地备份和还原,执行灾难恢复以及迁移Kubernetes群集资源和持久卷,可以在 TKE 平台上使用 Velero 备份、还原和迁移集群资源,关于如何使用请参阅 使用对象存储 COS 作为 Velero 存储实现集群资源备份和还原在 TKE 中使用 Velero 迁移复制集群资源,本文将介绍如何使用 Velero 将自建或其他云平台 Kubernetes 集群无缝迁移到 TKE 平台。

迁移原理

架构原理与使用 Velero 迁移复制集群资源 过程的原理类似,迁移集群和被迁移集群都安装 Velero 实例,且指定同一个腾讯云 COS 后端存储,被迁移集群按需执行备份,目标集群按需还原集群资源实现资源迁移。不同的是,自建或其他云平台的集群资源迁移到 TKE 时,需要考虑和解决因跨平台导致集群环境差异问题,幸运的是,Velero 提供了很多实用的备份和还原策略帮助我们解决这些问题,后面的迁移示例会介绍如何更好的利用和使用它们。

环境准备

  • 已有自建或其他云平台 Kubernetes 集群(以下称作集群 A ),且集群版本为 1.10 以上。
  • 已创建迁移目标的 TKE 集群(以下称作集群 B ),创建 TKE 集群请参阅 创建集群
  • 集群 A 和 集群 B 都需要安装 Velero 实例(1.5 版本以上),并且共用同一个腾讯云 COS 存储桶作为 Velero 后端存储,安装步骤请参阅 配置存储和安装 Velero
  • 确保镜像资源在迁移后可以正常拉取。
  • 确保两个集群的 K8S 版本的 API 兼容,最好是相同版本。

迁移指导

在迁移工作进行前,首先应该理清迁移思路,制定详细的迁移计划,迁移过程大概需要考虑下面几点:

  • 筛选分析需要迁移哪些集群资源,不需要迁移哪些集群资源

    根据实际情况筛选分类出需要迁移资源清单和不需要迁移的资源清单。

  • 根据业务场景考虑是否需要自定义一些 Hook 操作

    需要考虑在备份集群资源时,是否需要在备份期间执行 备份 Hooks ,比如需要将正在运行的应用的内存数据落盘场景。

    类似的,在还原(迁移)集群资源时,是否需要在还原期间执行 还原 Hooks ,比如需要在还原前做一些初始化工作。

  • 按需编写备份和还原的命令或资源清单

    根据筛选归类的资源清单编写备份和还原策略,推荐在复杂场景下使用创建资源清单的方式来执行备份和还原, YAML 资源清单比较直观且方便维护,参数指定的方式可以在简单迁移场景或测试时使用。

  • 处理跨云平台资源的差异性

    由于是跨云平台,动态创建 PVC 的存储类等关系可能不同,需要提前规划动态 PVC/PV 存储类关系是否需要重新映射,需在在还原操作前,创建相关映射的 ConfigMap 配置。如果需要解决更加个性化的差异,可以手动修改备份后的资源清单解决。

  • 操作完成后核查迁移资源

    检查校验迁移的集群资源是否符合预期且数据完整可用。

操作步骤

接下来将演示将某云平台集群 A 中的资源迁移到 TKE 集群 B 中的操作步骤,其中涉及到 Velero 备份和还原实用基础知识,如不了解请先移步文章末尾【 Velero 备份/还原实用知识】 查看。

创建集群 A 示例资源

在某云平台集群 A 中部署 Velero 示例中含有 PVC 的 Nginx 工作负载,为了方便起见直接使用动态存储类来创建 PVC 和 PV ,首先查看当前集群支持的动态存储类信息:

# 获取当前集群支持的存储类信息,其中 xxx-StorageClass 为存储类代名,xxx-Provider 为提供商代名,下同。
[root@iZj6c3vzs170hmeiu98h5aZ ~]# kubectl  get sc
NAME                PROVISIONER    RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
xxx-StorageClass    xxx-Provider   Delete          Immediate              true                   3d3h
...

使用集群中存储类名为 "xxx-StorageClass" 的存储类来动态创建 ,修改 with-pv.yaml 的 PVC 资源清单如下图:

...
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: nginx-logs
  namespace: nginx-example
  labels:
    app: nginx
spec:
  # Optional: 修改 PVC 的存储类的值为某云平台 
  storageClassName: xxx-StorageClass 
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi # 由于该云平台限制存储最小为20Gi,本示例需要同步修改此值为20Gi
...

修改完成后应用示例中的 YAML 创建如下的集群资源(nginx-example命名空间):

[root@iZj6c3vzs170hmeiu98h5aZ nginx-app]# kubectl apply -f with-pv.yaml 
namespace/nginx-example created
persistentvolumeclaim/nginx-logs created
deployment.apps/nginx-deployment created
service/my-nginx created

创建出来的 PVC "nginx-logs" 已挂载给 nginx 容器的 /var/log/nginx 目录作为服务的日志存储,本示例在浏览器测试访问 Nginx 服务,给挂载的 PVC 生产一些日志数据(以便后续还原后做数据比对)。

# 查看测试产生的 Nginx 日志大小,当前为 84 K 
[root&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值