详情页标题前

腾讯云容器服务在 TKE 中使用 Velero 迁移复制集群资源同尘科技

详情页1

操作场景

开源工具 Velero(旧版本名称为 Heptio Ark)可以安全地备份和还原、执行灾难恢复以及迁移 Kubernetes 集群资源和持久卷。在容器服务 TKE 集群或自建 Kubernetes 集群中部署 Velero 可以实现以下功能:备份集群资源并在丢失的情况下进行还原。 将集群资源迁移到其他集群。 将生产集群资源复制到开发和测试集群。更多关于 Velero 介绍,请参见 Velero 官网文档。本文将介绍如何使用 Velero 实现 TKE 集群间的无缝迁移复制集群资源。

迁移原理

在需要被迁移的集群和目标集群上都安装 Velero 实例,并且两个集群的 Velero 实例指向相同的腾讯云 对象存储 COS 位置,流程如下:1. 使用 Velero 在需要被迁移的集群执行备份操作,生成备份数据存储到对象存储 COS。 2. 在目标集群上使用 Velero 执行数据的还原操作实现迁移。迁移原理如下图示:

腾讯云容器服务在 TKE 中使用 Velero 迁移复制集群资源同尘科技



前提条件

已 注册腾讯云账号。 已开通腾讯云 对象存储 COS 服务。 已有需要被迁移的 TKE 集群(以下称作集群 A),已创建迁移目标的 TKE 集群(以下称作集群 B),创建 TKE 集群请参见 创建集群。 集群 A 和 集群 B 都需要安装 Velero 实例(1.5版本以上),并且共用同一个对象存储 COS 存储桶作为 Velero 后端存储,安装步骤请参见 配置存储和安装 Velero。

注意事项

从 Velero 1.5版本开始,Velero 可以使用 Restic 备份所有 Pod 卷,无需单独注释每个 Pod。默认情况下,此功能允许用户使用 Restic 备份所有 Pod 卷,但以下卷情况除外:挂载默认 Service Account Secret 的卷挂载 hostPath 的类型卷挂载 Kubernetes secretsconfigmaps 的卷
本示例需要 Velero 1.5以上版本且启用 Restic 来备份持久卷数据,请确保在安装 Velero 阶段开启 --use-restic--default-volumes-to-restic 参数,安装步骤请参见 配置存储和安装 Velero。在执行迁移过程中,禁止对两边集群资源进行任何 CRUD 操作,以免在迁移过程中造成数据差异,导致最终迁移后的数据不一致。 尽量保证集群 A 和集群 B 的CPU、内存等规格配置相同或不要相差太大,以免出现迁移后的 Pods 因资源原因无法调度导致 Pending 的情况。

操作步骤

在集群 A 创建备份

备份前查看集群 A 资源

在备份集群 A 之前,您可以查看集群 A 资源和服务情况,以便在还原集群之后用于 迁移结果核验。 1. 本文将以 default 、default2 命名空间的资源情况作比较验证。执行以下命令,可以查看集群 A 中两个命名空间下的 Pods 和 PVC 资源情况。如下图所示:

腾讯云容器服务在 TKE 中使用 Velero 迁移复制集群资源同尘科技

说明您可以在备份期间指定执行一些自定义 Hook 操作。例如,需要在备份之前将运行应用程序的内存中的数据持久化到磁盘。 了解 Hook 更多信息,请参见 备份 Hook。 2. 其中,集群 A 中的 MinIO 对象存储服务使用了持久卷,并且已上传一些图片数据,如下图所示:

腾讯云容器服务在 TKE 中使用 Velero 迁移复制集群资源同尘科技



备份集群

1. 执行以下命令,备份集群中不包含 Velero 命名空间(Velero 安装的默认命名空间)资源的其他所有资源,如果需要自定义备份的集群资源范围,可使用命令 velero create backup -h 查看支持的资源筛选参数。

velero backup create  --exclude-namespaces 

本示例以创建一个 “default-all” 集群备份为例,备份过程如下图所示。若备份任务状态显示 “Completed” 时,说明备份成功。

腾讯云容器服务在 TKE 中使用 Velero 迁移复制集群资源同尘科技

说明您还可以为 Velero 设置定期自动备份,设置方法可以使用命令 velero schedule -h 查看。 2. 执行以下命令,检查是否有备份操作发生错误,若命令无任何输出结果,则说明备份过程未发生任何错误。示例如下:

velero backup logs  | grep error

注意请确保备份过程未发生任何错误,若 Velero 在执行备份过程中发生错误,请排查解决后重新执行备份。 3. 备份完成后执行以下命令,将备份存储位置临时更新为只读模式(非必须,可以防止在还原过程时, Velero 在备份存储位置中创建或删除备份对象)。示例如下:

kubectl patch backupstoragelocation default --namespace velero \         --type merge \         --patch '{"spec":{"accessMode":"ReadOnly"}}'

在集群 B 执行还原

还原前查看集群 B 资源

在集群 B 执行还原前,您可以查看集群 B 资源和服务情况,以便在还原集群之后用于 迁移结果核验。 在执行还原操作前,集群 B 中 default 、default2 命名空间下无任何工作负载资源。执行以下命令,可以查看集群 B 中两个命名空间下的 Pods 和 PVC 资源情况。如下图所示:

腾讯云容器服务在 TKE 中使用 Velero 迁移复制集群资源同尘科技



还原集群

1. 执行以下命令,将集群 B 中 Velero 备份存储位置临时也更新为只读模式(非必须,可以防止在还原过程时 Velero 在备份存储位置中创建或删除备份对象)。示例如下:

kubectl patch backupstoragelocation default --namespace velero \         --type merge \         --patch '{"spec":{"accessMode":"ReadOnly"}}'

说明您可以指定在还原期间或还原资源后执行自定义 Hook 操作。例如,可能需要在数据库应用程序容器启动之前执行自定义数据库还原操作。了解 Hook 更多信息,请参见 还原 Hook。 2. 在还原操作之前,需确保集群 B 中 的 Velero 资源与对象存储 COS 中的备份文件同步。默认同步间隔是1分钟,可以使用 --backup-sync-period 来配置同步间隔。可以执行以下命令,查看集群 A 的备份是否已同步。

velero backup get 

3. 获取备份成功检查无误后,执行以下命令还原所有内容到集群 B 中。

velero restore create --from-backup 

还原过程如下图所示:

腾讯云容器服务在 TKE 中使用 Velero 迁移复制集群资源同尘科技

4. 等待还原任务完成后查看还原日志,执行以下命令查看还原是否有报错和跳过信息。示例如下:

# 查看迁移时是否有错误的还原信息velero restore logs  | grep error # 查看迁移时跳过的还原操作velero restore logs  | grep skip

如下图所示,可以查看还原步骤未发生错误,但出现部分 “skipped” 步骤,因为在备份集群资源时备份了不包含 Velero 命名空间的所有集群资源,有一些同类型同名的集群资源已经存在,例如 kube-system下的集群资源。当还原过程中有资源冲突时,Velero 会跳过该还原步骤,实际上该还原过程正常,可以忽略 “skipped” 日志(在特殊情况可以分析该日志)。

腾讯云容器服务在 TKE 中使用 Velero 迁移复制集群资源同尘科技



迁移结果核验

1. 执行以下命令,校验集群 B 执行迁移操作后的集群资源,可以看到 default 、default2 命名空间下的 Pods 和 PVC 资源已按预期迁移成功。如下图所示:

腾讯云容器服务在 TKE 中使用 Velero 迁移复制集群资源同尘科技

2. 登录集群 B 中的 MinIO 服务,可以看到 MinIO 服务中的图片数据未丢失,说明持久卷数据已按预期迁移成功。

腾讯云容器服务在 TKE 中使用 Velero 迁移复制集群资源同尘科技

3. 至此已完成了 TKE 集群间资源的迁移。 迁移操作完成后,执行以下命令,将集群 A 和 集群 B 的备份存储位置恢复为读写模式,以便在下次备份任务可以正常备份。示例如下:

kubectl patch backupstoragelocation default --namespace velero \--type merge \--patch '{"spec":{"accessMode":"ReadWrite"}}'

总结

本文主要介绍了在 TKE 集群间使用 Velero 迁移集群资源的原理、注意事项和操作方法,成功的将集群 A 中的集群资源无缝迁移到集群 B 中,整个迁移过程简单快捷,是一种非常友好的集群资源迁移方案。
容器服务官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/148311.html

(0)
上一篇 2023年12月9日 下午12:53
下一篇 2023年12月9日 下午12:54
详情页2

相关推荐

  • 腾讯云容器服务Pod 间独占网卡模式同尘科技

    Pod 间独占网卡模式在原有 VPC-CNI 模式单网卡多 IP 模式的基础上,进阶为容器直接独享使用弹性网卡。无缝对接腾讯云私有网络产品的全部功能,同时在性能做了极大的提升。注意目前该功能正处于内测阶段,您可通过 内测申请 开通使用。 功能简介 新一代 VPC-CNI 模式的网络方案中,能够在原有的网络能力中额外增加以下能力:支持 Pod 绑定 EIP/N…

    2023年12月9日
  • 腾讯云对象存储视频目标检测

    简介 本文档提供关于提交一个视频目标检测任务的相关 API 概览以及 SDK 示例代码。 API 操作描述 提交任务 提交一个视频目标检测任务。 SDK API 参考 SDK 所有接口的具体参数与方法说明,请参考 SDK API。 提交任务 功能说明 提交一个视频目标检测任务。说明:COS iOS SDK 版本需要大于等于 v6.2.9。 示例代码 Ob…

    腾讯云 2023年12月9日
  • 腾讯云云直播直播音视频增强

    直播音视频增强功能包括多种处理技术,例如 SDR2HDR、插帧、超分、综合增强、降噪、色彩增强、去划痕、去毛刺、细节增强、低光照增强、人脸增强和字体增强等。这些功能致力于实现画质重生,极大地提升音视频的主观画质。使用直播音视频增强功能可以单独或组合使用,以满足不同场景下的直播画质的提升需求。直播音视频增强计费采用按增强功能、增强后的直播画面分辨率和帧率维度计…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 云效自定义镜像构建,是作用在整个流水线,还是只作用在一个卡片? -云小二-阿里云

    云效自定义镜像构建,是作用在整个流水线,还是只作用在一个卡片?比如,我的java安全扫描,需要用我自定义的镜像,这种能做到吗?我不想自定义步骤,只想让我的流水线里面现在有的这些步骤都要用我这个自定义的镜像,应该怎么做呢,比如安全扫描,sonarcube扫描之前的Java构建,都要用这个自定义镜像。 以下为热心网友提供的参考意见 只做用在当前的步骤的,自定义环…

    2023年12月13日
  • 在polarDB-mysql 内核版本 8.0.1.1.38.2上执行文档示例。提示的错误怎么处理?-云小二-阿里云

    alter table t1PARTITION BY RANGE COLUMNS(create_time) INTERVAL(DAY, 1)(PARTITION p0 VALUES LESS THAN(‘2023-12-23’));You have an error in your SQL syntax; check the manu…

    阿里云 2024年1月3日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。