详情页标题前

阿里云容器服务ACK其他云厂商Kubernetes集群应用迁移至ACK集群-云淘科技

详情页1

将其他云厂商的Kubernetes集群接入到注册集群后,您可以通过备份中心对集群中部署的应用及数据进行备份,并在ACK集群中恢复,实现应用跨云的快速迁移。本文介绍如何使用备份中心将注册集群的应用迁移至ACK集群。

前提条件

  • 已创建注册集群,并将其他云厂商Kubernetes集群(大于v1.20版本)接入注册集群。具体操作,请参见通过onectl创建注册集群、通过控制台创建注册集群。

  • 已创建和注册集群在同一地域的用于恢复应用的ACK集群,且集群版本大于v1.20。具体操作,请参见创建Kubernetes托管版集群和创建Kubernetes专有版集群。

  • 注册集群和ACK集群均已开启集群备份。具体操作,请参见安装备份服务组件并配置权限。

  • 对已通过CEN、高速通道、专线、VPN等方式与云上VPC互通的注册集群,已配置指向OSS内网网段的路由。更多信息,请参见OSS内网域名与VIP网段对照表。

  • 已开通HBR服务。具体操作,请参见混合云备份HBR。

适用场景

混合云备份容灾:备份容灾迁移一体化,实现快速应用上云与数据灾备。

注意事项

  • 备份本地存储时,需要通过PV和PVC的方式挂载本地卷。

  • 备份其他云厂商的对象存储、文件存储、块存储时,需要使用CSI插件通过PV和PVC的方式挂载相应存储卷。

  • 注册集群、线上ACK集群和OSS Bucket需要在同一地域内。

  • 若需要保证应用数据的强一致性,在备份完成前请暂停业务数据的写入。

准备工作

本文以MySQL应用为例,在其他云厂商Kubernetes集群中部署应用后,通过接入注册集群,在注册集群中创建备份任务进行备份,然后在ACK集群中进行恢复。应用迁移前,请确认已完成所有前提条件,并满足如下条件。

  • 注册集群

    确认已创建RAM用户并配置OSS与HBR权限,并使用RAM用户的AccessKey ID和AccessKey Secret在注册集群的csdr命名空间中创建alibaba-addon-secret的Secret资源。执行以下命令,确认alibaba-addon-secret已存在。

    kubectl get secret alibaba-addon-secret -n csdr

    预期输出:

    alibaba-addon-secret   Opaque   2      5d22h
  • ACK集群

    • 若使用ACK托管集群,请确认已开通HBR服务,且已创建cnfs-oss-****名称的Bucket。

    • 若使用ACK专有集群,请确认已为Worker RAM角色配置OSS与HBR权限。具体操作,请参见ACK专有版集群权限配置。

步骤一:在其他云厂商Kubernetes集群中部署应用

本文以其他云厂商Kubernetes集群中一个名为mysql-sts的MySQL应用为例说明,该应用使用的存储声明为mysql-pvc,存储卷为mysql-pv,mysql-pv对应的挂载点路径为/mnt

  1. 执行以下命令,创建命名空间test1。

    kubectl create namespace test1
  2. 使用CSI插件部署通过PV和PVC的方式挂载存储的MySQL应用。具体操作,请参见对应云厂商的CSI存储文档。若集群不支持CSI存储插件,可接入注册集群后使用阿里云CSI插件进行挂载。更多信息,请参见存储-CSI。

  3. 执行以下命令,确认MySQL应用部署成功。

    kubectl -n test1 get pod| grep mysql-sts

    预期输出:

    mysql-sts-0   1/1     Running   0         1m02s
  4. 执行以下命令,确认存储卷的配置。

    kubectl -n test1 get pv mysql-pv -oyaml 

    预期输出:

      csi:
        driver: ****
        volumeAttributes:
          xxxx: xxxx
          xxxx: xxxx
        volumeHandle: mysql-pv

    预期输出表明,存储卷包含CSI字段。

  5. 执行以下命令,进入MySQL容器。

    kubectl -n test1 exec -it mysql-sts-0 -- /bin/bash
  6. 在MySQL容器中执行以下命令,模拟需要备份的数据。

    cd /mnt && touch test && ls

    预期输出:

    test

步骤二:在注册集群中备份MySQL应用及数据

由于注册集群已接入其他云厂商Kubernetes集群,您可以在注册集群中进行备份任务操作,具体步骤如下。

  1. (可选)若账号下无可使用的备份仓库,请创建备份仓库。具体操作,请参见创建备份仓库。

  2. 在注册集群中创建备份任务mysql-backup,部分配置项设置如下。具体操作,请参见创建备份任务。

    配置项

    示例

    名称

    mysql-backup。

    备份仓库

    为您上一步创建的备份仓库。

    备份命名空间

    test1。

    备份数据卷

    选中备份存储卷,默认为您进行数据备份。

    备份和快照页签下,查看mysql-backup备份任务状态由InProgress变为Completed,表明MySQL应用和数据备份完成。

步骤三:在ACK集群中关联对应的备份仓库

若您使用的是新创建的备份仓库,或者此前在ACK恢复集群中从未关联过该备份仓库,需要先进行关联。

  1. 应用备份页面,单击恢复页签。

  2. 恢复页签,单击创建恢复任务

  3. 创建恢复任务面板中,填写名称,选择备份仓库,单击备份仓库右侧的初始化仓库,将ACK恢复集群和指定的备份中心进行关联。

    每个备份仓库只需要关联一次,仓库初始化完成后,在注册集群中创建的备份任务将自动同步到当前ACK集群。

  4. 初始化完成后,选择备份,选择备份仓库中待恢复的任务,然后单击确定

  5. 备份和快照页签,等待mysql-backup备份任务出现在列表中。

步骤四:在ACK集群中通过制作快照转换备份数据的存储类

由于创建备份任务时已选中备份存储卷,根据恢复需求,您可选择底层存储类型为文件存储或块存储的存储类。关于存储类型的选择,请参见存储CSI概述。如果选择文件存储NAS时,推荐您通过CNFS方式使用NAS文件系统。

说明

混合云场景下,备份的存储卷均为文件系统类型。

在ACK集群中为mysql-backup备份任务制作快照。具体操作,请参见集群内备份和恢复应用。

备份和快照页签下,查看mysql-backup备份任务状态由ConvertionInProgress变为ConvertionCompleted,表明制作快照完成。

步骤五:在ACK集群中恢复MySQL应用及数据

由于在上一步制作快照时选择的是alibabacloud-cnfs-nas存储类,应用恢复过程将以动态挂载的形式为MySQL应用挂载指定存储类为alibabacloud-cnfs-nas的存储声明,并将数据恢复至关联的存储卷中,具体步骤如下。

  1. 创建恢复任务mysql-restore,并将MySQL应用部署在ACK集群的test2命名空间中。部分配置项设置如下。具体操作,请参见恢复应用和数据卷。

    配置项

    示例

    名称

    mysql-restore。

    备份仓库

    选择备份仓库为您之前创建的备份仓库。

    选择备份

    mysql-backup。

    重定义命名空间

    test1变为test2

    恢复页签下,查看mysql-restore恢复任务状态由InProgress变为Completed,表示MySQL应用及数据恢复完成。

  2. 在ACK集群中执行以下命令,确认MySQL应用部署成功。

    kubectl -n test2 get pod | grep mysql-sts

    预期输出:

    mysql-sts-0   1/1     Running   0          4s
  3. 在ACK集群中执行以下命令,确认数据已恢复正常。

    1. 执行以下命令,确认数据已恢复为alibaba-cnfs-nas存储类。

      kubectl -n test2 get pvc | grep mysql-pvc

      预期输出:

      mysql-pvc   Bound    nas-****   25Gi       RWO            alibabacloud-cnfs-nas   3m24s
    2. 执行以下命令,确认mysql-pvc已挂载到MySQL应用中。

      kubectl -n test2 describe pvc mysql-pvc | grep "Used By"

      预期输出:

      Used By:       mysql-sts-0
    3. 确认模拟的数据已成功恢复。执行以下命令,进入MySQL容器。

      kubectl -n test2 exec -it mysql-sts-0 -- /bin/bash

    4. 执行以下命令,在MySQL容器中查询模拟的数据。

      cd /mnt && ls

      预期输出:

      test

      预期输出表明,模拟的数据已成功恢复。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

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

(0)
上一篇 2023年12月10日 下午12:49
下一篇 2023年12月10日 下午12:50
详情页2

相关推荐

  • 阿里云容器服务ACK通过kubectl快速搭建魔方游戏-云淘科技

    容器服务 Kubernetes 版 ACK(Container Service for Kubernetes)提供高性能的容器化应用管理服务,让您轻松高效地在云端运行Kubernetes容器化应用。本文将指导您如何通过kubectl在ACK集群中快速部署并公开一个容器化Demo应用,并监控应用的运行情况。 使用前准备 注册阿里云账号并完成实名认证,请参见注册…

    2023年12月10日
  • 阿里云容器服务ACK通过ACK控制台快速搭建魔方游戏-云淘科技

    阿里云容器服务Kubernetes版(简称容器服务ACK)提供高性能的容器化应用管理服务,让您轻松高效地在云端运行Kubernetes容器化应用。本文将指导您如何通过控制台在ACK集群中快速部署并公开一个容器化Demo应用,即魔方游戏,并监控应用的运行情况。 使用前准备 注册阿里云账号并完成实名认证,请参见注册阿里云账号和个人实名认证。 背景知识介绍 本教程…

    阿里云容器服务 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云容器服务ACK【产品变更】迁移低版本ACK集群监控端口至鉴权端口-云淘科技

    由于社区版Kubernetes的只读容器监控透出存在信息泄露风险,阿里云容器服务ACK 1.26及以上版本的集群已不再默认开放kubelet容器监控只读端口(10255),后续统一使用鉴权安全端口(10250)。 风险申明 在被攻破集群节点后,社区版Kubernetes默认开放的kubelet容器监控只读端口(10255)可能会被获取部分应用信息,存在信息泄…

    2023年12月10日
  • 阿里云容器服务ACK调度负载至Arm节点-云淘科技

    为了避免只兼容x86架构的工作负载被意外调度到Arm节点,包括Arm架构的ECS节点以及Arm架构的虚拟节点,ACK集群默认会将所有工作负载调度到x86架构的节点。如果您要将工作负载部署到Arm节点上,请使用nodeSelector指定应用部署到Arm节点上。本文介绍如何调度ACK集群的负载至Arm节点。 索引 概述 前提条件 注意事项 步骤一:添加Arm架…

    阿里云容器服务 2023年12月10日
  • 阿里云人工智能平台PAI开启公网Ingress服务-云淘科技

    DLC支持添加已有的ACK集群或新建的ACK集群,如果您需要DLC完整的功能(DLC Dashboard),则需要开启ACK集群的公网Ingress服务。 背景信息 如果没有ACK集群,需要新建ACK集群,详情请参见创建Kubernetes专有版集群。 查看是否开启公网Ingress服务 进入集群详情页面。 登录ACK集群管理控制台。 在集群列表,单击集群名…

    2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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