携程容器云弹性构建:从Mesos到K8S的迁移决策

需积分: 10 0 下载量 22 浏览量 更新于2024-07-17 收藏 2.9MB PDF 举报
"乐鸿辉在携程容器云弹性能力构建上的分享,主要涵盖了历史与架构、Mesos到K8S的迁移、资源池与弹性以及迁移过程中的经验教训。" 在携程的容器云弹性能力构建过程中,经历了从早期的ContainerTrip和ElasticTrip到Mesos+Job的演变,逐步实现了JAVA在线应用的容器化,并且致力于提供极致的发布体验和弹性能力。在2017至2019年间,携程的容器云技术栈逐渐成熟,旨在通过容器化技术提升服务的灵活性和可扩展性。 在架构层面,携程容器云分为三层:用户产品层、中间层和基础层。用户产品层是PaaS层,包括CI/CD、Build、应用生命周期管理和IaaS资源管理,支持统一的VM和Docker。中间层则提供了微服务和Controllers,用于服务编排和对多Region/AvailableZone的支持。基础层主要由云基础设施构成,包括Mesos、K8S、OVS网络、Docker/CNI插件、存储解决方案以及对接的监控和SLB系统。 在选择Mesos还是K8S的过程中,携程面临了抉择。Mesos以其简单、稳定和丰富的现有插件与经验赢得了青睐,但其技术栈较旧,自研调度器Pychronos的升级成本高,且生态正在减弱。相比之下,K8S拥有强大的服务编排能力、声明式编程范式和清晰的未来技术路线,如ServiceMesh和服务无服务器化,但学习曲线陡峭,短期内可能存在稳定性风险和迁移成本。 在实际操作中,携程考虑了Deployment和StatefulSet的选型。Deployment适用于无状态服务,而StatefulSet适合有状态应用,但携程面临的是全部固定IP的需求,部分应用有存储需求,且这些需求可能发生变化。因此,选型需兼顾灵活性和稳定性,确保服务在满足业务需求的同时,能够平滑地进行扩展和升级。 在资源池与弹性方面,携程的目标是通过容器云技术实现更高效、灵活的资源管理,让使用者更多地关注服务和策略,而不是底层的实例和IP。这需要构建一个能够自动伸缩、适应业务流量波动的弹性系统,以确保服务的高可用性和性能。 在Mesos向K8S的迁移过程中,携程积累了宝贵的踩坑经验,这些经验对于其他企业进行类似转型具有很高的参考价值。通过分享这些经验,乐鸿辉的报告为业界提供了实战性的指导,帮助大家更好地理解和应对容器云平台的构建与演进挑战。