TOC
背景
随着 Kubernetes 成为云原生的最热门的解决方案,越来越多的传统服务从虚拟机、物理机迁移到 Kubernetes,各云厂商如腾讯自研上云也主推业务通过Kubernetes来部署服务,享受 Kubernetes 带来的弹性扩缩容、高可用、自动化调度、多平台支持等益处。然而,目前大部分基于 Kubernetes 的部署的服务都是无状态的,为什么有状态服务容器化比无状态服务更难呢?它有哪些难点?各自的解决方案又是怎样的?
本文将结合我对 Kubernetes 理解、丰富的有状态服务开发、治理、容器化经验,为你浅析有状态容器化的疑难点以及相应的解决方案,希望通过本文,能帮助你理解有状态服务的容器化疑难点,并能基于自己的有状态服务场景能灵活选择解决方案,高效、稳定地将有状态服务容器化后跑在 Kubernetes 上,提高开发运维效率和产品竞争力。
有状态服务容器化挑战
为了简化问题,避免过度抽象,我将以常用的 Redis 集群为具体案例,详解如何将一个 Redis 集群进行容器化,并通过这个案例进一步分析、拓展有状态服务场景中的共性问题。
下图是 Redis 集群解决方案 codis 的整体架构图(引用自 Codis项目[1])。
…..