论文部分内容阅读
近年来,以Docker为代表的容器技术,凭借其轻量、敏捷等优异特性,正在快速取代虚拟机成为新一代的底层计算模型。在此基础之上,CNCF以容器编排引擎Kubernetes为核心构建的庞大技术生态则在稳步推动互联网底层的传统架构向云原生架构的演进。然而面对大规模场景下极端而又复杂的生产环境,以容器技术为核心的新一代架构体系依旧存在诸多不足。本文针对其中若干核心问题进行了深入研究并提供了切实有效的解决方案,对大规模场景下,架构的云原生化演进做了初步的探索。容器化是架构演进以及后续研究工作的前提,虽然容器的“单进程模型”完美契合了应用架构微服务化的未来趋势。然而它对应用巨大的侵入性使其无法在有着复杂多样存量应用的大规模场景顺利落地。因此本文提出一种新的“富容器进程模型”,它对现有的应用架构和运维体系具有零侵入性,从而能够实现大规模存量业务的快速容器化。在全面实现容器化之后,面对大规模的容器部署,传统的基于主从模式的容器镜像分发方式将成为系统的瓶颈所在,并可能进一步影响系统整体的稳定性。因此本文对镜像分发方式由主从模式向P2P模式的演进进行了深入研究,并基于BitTorrent协议设计实现了一套全新的具有良好性能和扩展性的镜像分发系统,较好地规避了镜像相关问题可能对系统造成的不良影响。然而大规模环境下,单一的容器运行时部署往往无法完全覆盖复杂多样的应用场景,因此需要混合部署多种容器运行时以实现场景全覆盖。但是由于一系列因素导致现有容器标准的建立以及其上生态的构建都对基于操作系统虚拟化的容器运行时具有明显的偏向性,网络方面尤其突出。因此,本文提出通过多级中继网桥进行二层流量转发的方法,巧妙实现了多种容器运行时对容器网络标准CNI以及构建其上的各种容器网络方案的兼容,从而构建异构网络用以支持多容器运行时的混合部署。容器层面的技术完备之后,大规模场景下,容器引擎只有与容器编排调度系统有效协同才能真正完全释放容器化带来的技术红利。然而两者之间无论从设计理念还是实现方式上都存在较大区别。因此,本文针对两者的兼容性问题展开研究并解决了其中的若干关键问题,从而确保能够将底层容器引擎强大的功能通过容器运行时接口CRI,以标准化的方式传递至上层编排调度系统。