打破 K8s 中有状态服务瓶颈 新东方实践自定义 Operator 提升服务可用性
2023-11-10 03:11:24
如今,新东方已经积累了大量业务系统,面对复杂多样的应用场景,传统的运维模式已经无法满足当前的业务需求,于是,新东方开始将业务系统从物理机迁移到容器平台上。
然而,在迁移过程中,新东方遇到了一个难题,那就是如何将有状态服务部署到容器平台上。众所周知,有状态服务与无状态服务不同,它需要将数据持久化到存储介质中,当服务重启或迁移时,这些数据需要被保留,以确保服务的连续性和一致性。
针对这个问题,新东方团队进行了深入的研究和实践,最终采用了定制化 Operator 与自研本地存储服务相结合的方式来解决问题。Operator 是 Kubernetes 中一种用于管理有状态服务的控制器,它可以自动处理有状态服务的生命周期管理,例如创建、更新、删除和备份等操作。而本地存储服务则是一种可以在 Kubernetes 集群内部运行的存储服务,它可以为有状态服务提供持久化存储。
通过将定制化 Operator 与自研本地存储服务相结合,新东方团队成功地将有状态服务部署到了容器平台上,并解决了数据持久化的问题。这种模式不仅满足了业务的需求,同时也为有状态服务在 K8s 上的落地提供了新的思路。
为了方便理解,本文将详细介绍新东方在有状态服务云化过程中所采用的技术方案和实践经验。
一、定制化 Operator
Operator 是一种 Kubernetes 中用于管理有状态服务的控制器,它可以自动处理有状态服务的生命周期管理,例如创建、更新、删除和备份等操作。Operator 的实现通常基于 Kubernetes 自带的控制器框架,通过编写自定义的控制器来实现对有状态服务的管理。
在有状态服务云化过程中,新东方团队发现,现有的 Operator 无法满足业务的需求,例如,现有 Operator 无法支持有状态服务的数据备份和恢复,无法支持有状态服务在不同环境之间的迁移等。因此,新东方团队决定定制化开发 Operator 来满足业务的需求。
新东方团队定制的 Operator 具有以下特点:
- 支持有状态服务的数据备份和恢复。
- 支持有状态服务在不同环境之间的迁移。
- 支持有状态服务的高可用性。
- 支持有状态服务的弹性伸缩。
二、自研本地存储服务
在有状态服务云化过程中,新东方团队还发现,现有的存储服务无法满足业务的需求,例如,现有存储服务无法提供足够的性能和可靠性,无法支持有状态服务的数据备份和恢复等。因此,新东方团队决定自研本地存储服务来满足业务的需求。
新东方团队自研的本地存储服务具有以下特点:
- 提供足够的性能和可靠性。
- 支持有状态服务的数据备份和恢复。
- 支持有状态服务的高可用性。
- 支持有状态服务的弹性伸缩。
三、实践案例
在有状态服务云化过程中,新东方团队将定制化 Operator 与自研本地存储服务结合起来,成功地将有状态服务部署到了容器平台上,并解决了数据持久化的问题。
例如,在新东方的在线教育系统中,有大量的数据需要持久化存储,例如学生的数据、课程的数据、作业的数据等。这些数据对业务的连续性和一致性至关重要。
新东方团队使用定制化 Operator 来管理有状态服务,使用自研本地存储服务来为有状态服务提供持久化存储,成功地解决了在线教育系统中数据持久化的问题,确保了业务的连续性和一致性。
四、总结
通过将定制化 Operator 与自研本地存储服务相结合,新东方团队成功地将有状态服务部署到了容器平台上,并解决了数据持久化的问题。这种模式不仅满足了业务的需求,同时也为有状态服务在 K8s 上的落地提供了新的思路。
希望本文对读者有所帮助。