Docker迁移K3S方案
本文介绍关于 Docker、ones.cn(SAAS) 迁移k3s环境 计划方案介绍及实施落地操作文档说明
本文目录
| 类别 | 内容 |
|---|---|
| 一、ONES docker迁移K3S计划 | ONES docker迁移K3S计划 |
| 二、数据迁移计划目标 | 数据迁移计划目标 |
| 三、迁移停机耗时说明 | 迁移停机耗时说明 |
| 四、迁移实施预演 | 迁移实施预演 |
| 五、迁移脚本工具使用介绍 | 迁移脚本工具介绍 |
| 六、常见问题FAQ场景 | 常见问题FAQ场景 |
一、ONES docker迁移K3S计划
docker单机版本实例现状概览

K3S单机版本实例目标概览

单机 K3s 优势摘要
- 改善当前的升级时间要求,支持模块差量更新,降低后续维护成本;
- 应用组件、中间件支持更细粒度的应用和数据分离;组件插拔扩展更为成熟;
- 支持更加灵活的数据备份策略、监控告警运维周边工具;
- 未来支持自助运维工具箱,ONES 私有部署实例操作更加简化及自助化,运维体验更加透明和友好;
- 支持节点横向扩展,提供多副本实例;
- K3S作为ONES 未来主要部署编排维护方向;
二、数据迁移计划目标
在迁移目标中,我们的重点是主数据,即ONES系统中的业务结构化数据和业务静态附件文件非结构化数据(⽂件,包含⼯作项或wiki⻚⾯的附件、图⽚等)业务结构化数据它们分别对应MySQL数据库和Kafka消息队列(clickhouse备份),及对应ONES业务运维配置文件。

迁移流程概要说明

除此之外,我们还有其他数据存储在tikv和ClickHouse中,但这些数据可以通过重新生成及重放的方式进行恢复。因此,在迁移过程中,我们只需要专注于备份迁移这两类主数据即可。
-
收集旧单机Docker容器实例资源性能指标、服务器资源配置、数据体量体积、是否更换服务器,以便进一步评估服务资源迁移方案
-
备份数据,升级容器业务版本到LTS新版本,当前我们默认升级到 v3.14.110 LTS 版本;
-
部署与之容器业务版本对应版本(v3.14.110)K3s 新单机实例(按照 k3s 安装文档进行部署);
a. 如果使用新机器安装单机实例,此时原来的单机容器部署实例可以继续作为备份工作,在目标服务器上部署 k3s 环境;
b. 如果在同一台机器上安装 K3s 单机实例,服务器应保留足够配置资源及剩余磁盘空间,整个迁移过程,单机容器实例将会停止服务(不再写入数据);
c. 可以使用自助安装工具来完成 K3s 单机实例的部署;
-
停机通知,提前通知相关人员,预定迁移时间,以便在迁移期间停机。 通过工具备份导出单机容器部署实例的数据,并通过恢复工具导入到 K3s 单机实例中;
-
数据备份恢复方式摘要
(一)文件部分:
- 方式1 脚本通过本地Volume数据卷数据,进行备份打包;
- 方式2 脚本本地 Volume 通过 Bind Volume 方式,将数据卷挂载至 MinIO 对象存储数据挂载点创建 桶后,迁移恢复进行拉取;
- 方式3 手动完成挂载原有 Volume数据盘/卷,并将mv到 K3s 存储的 PVC 中;
(二)数据库部分:
- 方式1 使用备份导入新实例;
- 方式2 外置数据库,通过配置修改对接endpoint;
-
数据导入后验证迁移,验证服务是否能够正常启动,业务是否恢复,观察是否有异常情况,基于全量数据重建热数据,涉及能力:索引搜索、效能报表(短暂服务降级: 影响在线搜索)
-
涉及变更,更新域名 DNS 或负载均衡配置,如果有相关域名 DNS 或负载均衡配置及外部第三方集成,确保更新指向目标服务器。
-
监控日志,确保在目标服务器上设置合适的监控和日志服务,以便及时发现和解决问题,验收K3S实例通过后,请保留源单机Docker容器 1-2 Week工作日。
-
清理源单机Docker容器服务器数据资源,可以停机释放资源。
三、迁移停机耗时说明
为确保数据完整一致性,整个迁移期间,ONES单机Docker容器需要进行停机直至迁移K3S后,使用K3S新实例 请提前完成停机通知,整体迁移停机耗时受服务器网络资源及数据量体积有关,对磁盘IO读写的效率依赖较大(受限于本地磁盘的性能),若IO读写效率较低 迁移效率会遇到影响,会导致迁移处理过程变长
- 单机Docker容器升级LTS过程耗时参考最近一次升级耗时(涉及数据备份)
- 安装 K3s 单机实例耗时需要根据网络及服务器硬件等条件依赖,一般在1~2小时左右
- 数据导出、导入过程都和实例中现有的数据量体积相关。根据实际磁盘IO速度、网络速度的不同,所需要的数据也有所不同。一般再通用完整备份方案下,我们在不同量级需要的操作时间如下:
以下不同数据量级预估时间,仅供参考: 受服务器、网络资源情况影响,会导致迁移处理过程变长
| 数据量级 | 单机容器升级 | 数据导出(从容器中) | 数据导入恢复(到K3s中) |
|---|---|---|---|
| 200G | 1-2h | 1-2h | 1-3h |
| 500G | 2-4h | 2-4h | 3-5h |
| 1T | 4-6h | 4-6h | 5-8h |
| 2T | 7-12h | 7-12h | 10-15h |
上述方案是迁移的默认方案。
大数据量实例,建议与实施团队沟通,更加精细的制定和执行整个迁移过程方案。下述是一些我们重点考虑的点。
| 数据类型 | 用途 | 迁移策略 | 优势 | 耗时/备注 |
|---|---|---|---|---|
| MySQL 数据库 | 业务核心数据库 | MySQL Dump | 数据重放,数据一致性完整性/事务功能 | 数据较大的情况下,导入较慢 |
| 业务核心数据库(外置) | K3S对接配置即可 | 数据复用 | n/a | |
| Kafka 数据 | 重建基于流数据的业务数据 | Kafka Topic Dump | n/a | n/a |
| 附件、文档 | 业务数据(本地文件存储) | 文件导出导入 | 数据完整镜像 | 数据较大情况下,同步较慢 |
| Minio 导出 + 回源(推荐) |