详情页标题前

腾讯云容器服务TKE 托管集群迁移至 Serverless 集群同尘科技

详情页1

前提条件

已有容器服务 TKE 托管集群(以下称作集群 A ),且集群版本需 >= 1.18 及以上。已创建迁移目标的 TKE Serverless 集群(以下称作集群 B),集群版本需 >= 1.20 及以上,创建 TKE Serverless 集群请参见 创建集群。集群 A 和 集群 B 需要共用同一个腾讯云 COS 存储桶作为 Velero 后端存储,配置 COS 存储桶请参见 配置对象存储。集群 A 和 集群 B 建议在同一 VPC 下(如果需要备份 PVC 中的数据,必须在同一 VPC 下)。确保镜像资源在迁移后可以正常拉取,在 TKE Serverless 集群中配置镜像仓库请参见 镜像仓库相关。确保两个集群的 Kubernetes 版本的 API 兼容,建议使用相同版本。若集群 A 的集群版本较低,建议先升级集群 A 集群版本后,再进行迁移操作。

迁移限制

在 TKE 集群中启用固定 IP 特性的工作负载,在迁移到 TKE Serverless 集群后,IP 会发生改变。可以在 Pod Template 中指定 IP 创建 Pod,使用方式示例:eks.tke.cloud.tencent.com/pod-ip: "xx.xx.xx.xx"TKE Serverless 集群使用 containerd 作为运行时,与 docker 不一致,不兼容 Docker registry v2.5以下版本、harbor v1.10以下的版本的镜像。TKE Serverless 集群中,每个 Pod 默认分配20Gi的临时磁盘空间,用于镜像存储,该盘随 Pod 的生命周期创建和销毁。若需使用更大磁盘空间,可以挂载其他类型的 volume 作数据存储,例如使用 PVC。在 TKE Serverless 集群中部署 DaemonSet 类型的工作负载时,需使用 sidecar 方式部署在业务 Pod 中。TKE Serverless 集群部署 NodePort 类型的服务时,无法通过 NodeIP:Port 访问服务,需要通过 ClusterIP:Port 访问服务。部署在 TKE Serverless 集群上的 Pod 默认会通过9100端口,对外暴露监控数据。如果业务 Pod 本身需要监听9100端口,则可以在创建 Pod 时,在 Pod Template 中指定其他端口收集监控数据,避免跟业务的9100端口冲突。配置方式示例:eks.tke.cloud.tencent.com/metrics-port: "9110"除以上限制外,务必阅读 TKE Serverless 集群其他说明。

迁移步骤

以下将介绍 TKE 集群 A 中的资源迁移到 TKE Serverless 集群 B 中的详细操作步骤。

配置对象存储

操作步骤请参见 创建存储桶。

下载 velero

1. 下载 Velero 最新版本安装包到集群环境中,本文以 v1.8.1 版本为例。

wget https://github.com/vmware-tanzu/velero/releases/download/v1.8.1/velero-v1.8.1-linux-amd64.tar.gz

2. 执行以下命令解压安装包,安装包提供 Velero 命令行执行文件和一些示例文件。

tar -xvf velero-v1.8.1-linux-amd64.tar.gz

3. 执行以下命令,将 Velero 可执行文件从解压后的目录迁移到系统环境变量目录下直接使用,本文以迁移至 /usr/bin 目录为例。示例如下:

cp velero-v1.8.1-linux-amd64/velero /usr/bin/

在集群 A 和集群 B 中安装 velero

1. 配置 velero 客户端,开启 CSI 特性。

velero client config set features=EnableCSI

2. 执行以下命令在集群 A 和集群 B 中安装 Velero ,创建 Velero 工作负载以及其他必要的资源对象。使用 CSI 备份 PVC 的示例如下:

velero install  --provider aws  \--plugins velero/velero-plugin-for-aws:v1.1.0,velero/velero-plugin-for-csi:v0.2.0 \--features=EnableCSI \--features=EnableAPIGroupVersions \--bucket  \--secret-file ./credentials-velero \--use-volume-snapshots=false \--backup-location-config region=ap-guangzhou,s3ForcePathStyle="true",s3Url=https://cos.ap-guangzhou.myqcloud.com

注意TKE Serverless 集群不支持部署 Daemonset,因此本文示例都不支持使用 restic 插件。如不需要备份 PVC,安装示例如下:

./velero install  --provider aws --use-volume-snapshots=false --bucket gtest-1251707795  --plugins velero/velero-plugin-for-aws:v1.1.0   --secret-file ./credentials-velero  --backup-location-config region=ap-guangzhou,s3ForcePathStyle="true",s3Url=https://cos.ap-guangzhou.myqcloud.com

安装参数说明详情见 velero 安装参数,您也可以使用命令 velero install --help 查看。
其他安装参数说明:

安装参数 参数说明
–plugins 使用 AWS S3 兼容 API 插件 “velero-plugin-for-aws”;使用 CSI 插件 velero-plugin-for-csi 对 csi-pv 进行备份,建议开启。
–features 启用可选功能:启用 API 组版本功能 该功能用于兼容不同 API 组版本,建议开启;启用 CSI 快照功能 该功能用于备份 CSI 支持的 PVC,建议开启。
–use-restic Velero 支持使用免费开源备份工具 Restic 备份和还原 Kubernetes 存储卷数据 (不支持 hostPath 卷,详情请参见 Restic 限制),该集成是 Velero 备份功能的补充,在迁移 TKE Serverless 集群的场景下,开启该参数会导致备份失败。
–use-volume-snapshots=false 关闭默认存储卷快照备份

3. 安装完成后,等待 Velero 工作负载就绪。执行以下命令,查看配置的存储位置是否可用,若显示 “Avaliable”,则说明集群可正常访问对象存储 COS。

velero backup-location getNAME      PROVIDER   BUCKET/PREFIX      PHASE       LAST VALIDATED                  ACCESS MODE   DEFAULTdefault   aws           Available     2022-03-24 21:00:05 +0800 CST      ReadWrite     true

至此,Velero 安装完成。了解 Velero 更多安装介绍,请参见 Velero 官网文档

(可选) 在集群 A 和集群 B 中安装 VolumeSnapshotClass 对象

说明如不需要备份 PVC,可跳过该步骤。更多存储快照相关功能,请参见 使用 CBS CSI 插件对 PVC 进行备份与恢复。1. 确认已安装 CBS-CSI 插件。2. 在 访问管理 控制台完成对 TKE_QCSRole 角色授予 CBS 快照操作的相关权限,详情请参考 快照授权。3. 使用以下 YAML,创建 VolumeSnapshotClass 对象。示例如下:

apiVersion: snapshot.storage.k8s.io/v1beta1kind: VolumeSnapshotClassmetadata:  labels:    velero.io/csi-volumesnapshot-class: "true"  name: cbs-snapclassdriver: com.tencent.cloud.csi.cbsdeletionPolicy: Delete

4. 执行以下命令,检查 VolumeSnapshotClass 是否创建成功。示例如下:

$ kubectl get volumesnapshotclassNAME            DRIVER                      DELETIONPOLICY   AGEcbs-snapclass   com.tencent.cloud.csi.cbs   Delete           17m

(可选) 创建集群 A 示例资源

说明如不需要备份 PVC,可跳过该步骤。在集群 A 中部署 Velero 实例中含有 PVC 的 minio 工作负载,这里使用 cbs-csi 动态存储类来创建 PVC 和 PV。1. 使用集群中 provisioner 为 com.tencent.cloud.csi.cbs 的存储类来动态创建 pv。pvc 示例如下:

apiVersion: v1kind: PersistentVolumeClaimmetadata:  annotations:    volume.beta.kubernetes.io/storage-provisioner: com.tencent.cloud.csi.cbs  name: miniospec:  accessModes:  - ReadWriteOnce  resources:    requests:      storage: 10Gi  storageClassName: cbs-csi  volumeMode: Filesystem

2. 使用 Helm 工具,创建一个引用上述 pvc 的 MinIO 测试服务,MinIO 安装方式请参见 MinIO 安装。在此示例中,已经为 MinIO 服务绑定了负载均衡器,可以在浏览器中使用公网地址访问管理页面。

腾讯云容器服务TKE 托管集群迁移至 Serverless 集群同尘科技

3. 登录 MinIO Web 管理页面,上传用于测试的图片。如下图所示:

腾讯云容器服务TKE 托管集群迁移至 Serverless 集群同尘科技



备份与还原

1. 在集群 A 创建备份,请参见集群迁移操作步骤中的 集群 A 创建备份。2. 在集群 B 还原备份,请参见集群迁移操作步骤中的 集群 B 执行还原。3. 迁移结果核验:如不需要备份 PVC,请参见集群迁移操作步骤中的 迁移结果核验。如需要备份 PVC,参照以下步骤进行核验:3.1.1 执行以下命令,校验集群 B 执行迁移操作后的集群资源,可以看到 Pods、PVC、Service 资源已按预期迁移成功。如下图所示:

腾讯云容器服务TKE 托管集群迁移至 Serverless 集群同尘科技

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

腾讯云容器服务TKE 托管集群迁移至 Serverless 集群同尘科技

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

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

使用 Serverless 集群常见问题

拉取镜像失败:请参见 镜像仓库。域名解析失败:常见于 Pod 镜像拉取失败、投递日志到自建 kafka 失败,请参见 Serverless 集群自定义 DNS 服务。日志投递到 CLS 失败:首次使用 TKE Serverless 集群投递日志到 CLS,需要为服务授权,请参见 首次授权。每个集群默认仅可创建 100 个 Pod,若需要创建超过配额的资源,请参见 默认配额。Pod 频繁被销毁重建,报错 Timeout to ensure pod sandbox:TKE Serverless 集群 Pod 内的组件会与管控面通讯以保持健康检测,当 Pod 创建完后,Pod 持续 6 分钟网络不通,则会被管控面发起销毁重建。此时需检查 Pod 关联的安全组是否放通了 169.254 路由的访问。Pod 端口访问不通 / not ready:业务容器端口是否与 TKE Serverless 集群管控面端口有冲突,请参见 端口限制。Pod 可以 ping 成功,但是 telnet 失败,检查安全组。创建实例时,可以使用如下特性加快拉取镜像速度:请参见 镜像缓存 与 镜像复用。业务日志转存:Serverless 容器服务 job 类型的业务在退出后,底层资源就被回收,此时 Kubectl logs 无法查看容器日志,对于需要 debug 的场景不友好。可通过延迟销毁或者设置 terminationMessage 字段将业务日志转存,请参见 设置容器终止消息。Pod 频繁重启,报错 ImageGCFailed:TKE Serverless 集群 Pod 默认磁盘大小为 20GiB, 如果磁盘使用空间达到 80%,TKE Serverless 集群管控面就会触发容器镜像的回收流程,尝试回收未使用的容器镜像来释放磁盘空间。如果未能释放任何空间,则会有一条事件提醒:ImageGCFailed: failed to garbage collect required amount of images,提醒用户磁盘空间不足。常见磁盘空间不足的原因有:业务有大量临时输出。业务持有已删除的文件描述符,导致磁盘空间未释放。

参考文档

在 Velero 中使用 csi在 Velero 中启用 API 组版本功能使用应用市场安装 Minio
容器服务官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

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

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

相关推荐

  • 腾讯云对象存储图片二维码

    简介 本文档提供关于图片二维码相关的 API 概览以及 SDK 示例代码。 API 说明 二维码识别 二维码识别功能可识别图片中有效二维码的位置及内容,输出图像中二维码包含的文本信息(每个二维码对应的 URL 或文本),并可对识别出的二维码添加马赛克 二维码生成 二维码生成功能可根据用户指定的文本信息(URL 或文本),生成对应的二维码或条形码 二维码识别 …

    腾讯云 2023年12月9日
  • 腾讯云容器服务Annotation 说明同尘科技

    本文介绍超级节点特有的 Annotation 与示例,该 Annotation 针对 TKE 标准集群和 TKE Serverless 集群内超级节点上运行的 Pod 生效。 Annotation 使用方法 工作负载里添加 Pod 注解 本文所说明的注解均为在 Pod 级别添加注解,通常用户使用的是工作负载而不是裸 Pod。本文以在 Deployment 上…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云日志服务SLS数据报表-云淘科技

    通用数据库审计应用提供审计运营中心、审计安全中心和审计性能中心仪表盘,从不同维度展示数据库审计相关的指标。 前提条件 已配置通用数据库审计。具体操作,请参见配置通用数据库审计。 功能入口 登录日志服务控制台。 在日志应用区域的审计与安全页签中,单击日志审计服务。 在左侧导航栏中,单击数据报表。 在页面左上角,选择目标任务。 审计运营中心 审计运营中心仪表盘主…

    2023年12月10日
  • 阿里云RDS数据库使用DTS迁移实例-云淘科技

    本文介绍如何使用数据传输服务DTS(Data Transmission Service),实现RDS PostgreSQL间的结构迁移、全量数据迁移以及增量数据迁移。同时使用这三种迁移类型可以实现在业务不停服的情况下,平滑地完成数据库的迁移。 前提条件 已创建源和目标RDS PostgreSQL实例,详情请参见创建RDS PostgreSQL实例。 说明 建…

    2023年12月9日
  • 腾讯云对象存储服务端加密

    简介 本文档提供关于如何使用在上传对象时开启服务端加密。服务端加密的密钥分为三种:COS 托管加密密钥客户提供的加密密钥KMS 托管加密密钥 使用 COS 托管加密密钥的服务端加密(SSE-COS)保护数据 由腾讯云 COS 托管主密钥和管理数据。COS 会帮助您在数据写入数据中心时自动加密,并在您取用该数据时自动解密。目前支持使用 COS 主密钥对数据进行…

    腾讯云 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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