容器无疑已成为近年来的技术热词。容器化技术的出现与兴起,以及由此衍生出的微服务架构、DevOps、云原生等概念,对软件行业产生了深远的影响。
容器优势众多。其全面的封装性、便捷的部署方式,以及轻量级的启动与调度,都是其得以广泛应用的原因。当配合编排系统使用时,无论系统复杂度如何,容器都能简化应用的管理与迭代。此外,容器化应用具备极佳的可移植性,能够无缝运行在任何配备了符合标准容器运行时的环境之中。
轻量级容器与弹性云计算堪称天作之合。容器对多样化运行环境的适应能力及其快速启动特性,加之动态云扩展带来的海量资源伸缩性,使得云端容器化应用能够在短时间内扩展至数千个实例。因此,云是运行和扩展容器化应用的理想平台。
在 Docker 被广泛认知之前,云提供商已经在探索和使用类似容器的技术。云的多租户特性天然要求环境隔离,这使得云提供商既是容器化的使用者,也是受益者。尽管有些选择了自研方案,但并非所有云商都直接拥抱了 Docker。
例如,AWS Elastic Beanstalk 曾使用私有的类容器技术来隔离 Web 应用,随后才逐步扩展对以 Docker 容器打包的应用的支持。
随着 Docker 的崛起,各大公有云厂商一致开始提供标准化的容器相关 PaaS 服务,并持续增强。回顾容器 PaaS 的演进,可以清晰地看到不同的发展阶段。
最初,云容器平台主要关注如何在云端无缝运行 Docker 容器。这些服务主要帮助用户创建底层虚拟机集群,减轻手动管理虚拟机的负担。然而,随着容器化应用日趋复杂,编排需求变得迫切。于是,厂商们纷纷引入并强化自己的容器编排方案。
在编排框架之争的时代,有的厂商采取了多管齐下的策略。例如,微软的 Azure 容器服务同时支持 Docker Swarm、Apache Mesos (DC/OS) 和 Kubernetes。而另一些厂商,如 AWS 凭借其 Elastic Container Service (ECS),则选择自研编排方式,以便与现有云服务实现更紧密的集成。
众所周知,Kubernetes 在编排框架的角逐中胜出,成为事实上的标准。云厂商迅速调整方向,优先在云上支持 Kubernetes,并推出了专用服务,例如 AWS Elastic Kubernetes Service (EKS) 和 Azure Kubernetes Service (AKS)。类似地,阿里云在其容器服务中逐步停止了对 Swarm 的支持,转而专注于 Kubernetes 版本 (ACK)。
云对容器技术的支持始终与容器生态的演进同步,云厂商作为参与者和推动者发挥了重要作用。例如,Google Cloud 上的 Google Kubernetes Engine (GKE) 可谓“生于斯长于斯”,始终是云上 Kubernetes 服务的标杆。
与自行搭建的 Kubernetes 集群相比,云上的 Kubernetes 服务具有几个显著优势。
首先,由于云的多租户特性,许多云上的 Kubernetes 服务无需用户配置 Master 节点。用户只需创建并付费使用 Worker 节点,而云平台则提供并管理 Master 节点,从而降低了资源消耗和运维负担。
其次,Kubernetes 虽然复杂,但其卓越的抽象设计使其能够实现广泛而灵活的扩展。云厂商在这方面投入了大量精力,使其平台上的各种 IaaS 和 PaaS 组件能够与 Kubernetes 生态无缝集成,形成更紧密的结合。
例如,在常用于引导外部流量的 Ingress Controller 领域,出现了基于云负载均衡器的控制器实现,如 AWS ALB Ingress Controller 和 Azure AKS Application Gateway Ingress Controller。这些控制器会创建相应的 PaaS 服务实例来为 Kubernetes 集群提供服务。
此外,在 StorageClass(Kubernetes 中定义动态存储卷分配策略)层面,可以指定使用云块存储服务按需创建并挂载持久化存储。
从架构灵活性来看,云上 Kubernetes 服务还带来了另一个优势:多集群部署。
由于建立 Kubernetes 集群的门槛降低,如果业务单元之间依赖度不高,可以为每个单元创建独立的 Kubernetes 集群。这种方式增强了隔离性,并允许不同集群独立扩缩。
从 Docker 到 Kubernetes,容器生态的持续演进开启了云原生技术的大潮。开发者在学习和拥抱容器技术的道路上并非孤军奋战。云计算厂商也在争相将自己定位为运行容器的最佳平台,推出了大量与容器相关的服务,以吸引容器用户迁移到其云上。
有趣的是,容器与厂商积极推广的部分云服务之间存在着微妙的关系。两者存在一定的竞争与替代。
类似于部分 PaaS 功能可以使用 IaaS 来复现,容器凭借其极佳的构建自由度以及便捷的打包部署机制,在一定程度上可以替代云上某些可复用的组件。此外,容器可以作为一个更大系统的一部分进行编排,成为减轻厂商锁定的一种手段。
尽管容器可能对特定云服务构成一定威胁,但云计算再次展现了其技术中立性。云平台公开接纳并支持容器的运行,甚至将其列为重点发展的服务。赋予用户选择权,正是云包容性的体现。
Novita AI 是一个一站式云平台,助力您的 AI 雄心。集成的 API、Serverless、GPU 实例——您所需的成本效益工具。消除基础设施负担,免费开始,将您的 AI 愿景变为现实。
推荐阅读:
