韩丽佳
容器是什么?我们脑海里首先浮现的是一个杯子、一个密封的盒子、一个能装东西的器皿,而在这里,Container这个单词是“集装箱”的含义,用来具象地解释容器技术其实更加贴切。集装箱格式统一,并且可以层层重叠的特点大大提升了运输的效率。
1801年,英国人安德森(James Anderson)博士首先提出了集装箱运输的设想。时至今日,这一理念被运用到IT世界,以一种轻量级的操作系统级虚拟化方式,让我们在一个资源隔离的进程中运行应用及其依赖项。
集装箱的最显著的表征就是标准化和可搬移组合的灵活性。“不同于一些企业开发的所有的进程都是紧密耦合的单一体系,AWS引入的微服务体系构架让一个团队只做一个服务,每个服务只执行一个功能,形成一个个独立运行的微小单元,这些微服务之间的沟通联系通过轻量级的API实现。”AWS现代化应用产品市场负责人Aaron Kao说道。显然,这种微服务的体系架构集中体现了集装箱理念的精髓。
“五年前容器技术开始流行起来,容器技术为客户提供了一个非常容易的机制来打包应用,突破了许多环境的限制,这就是客户真正喜欢容器的原因。”Aaron Kao这样解释道,“AWS希望能够为容器打造一个非常全面的平台。”在这场容器领域之战中,AWS始终目标明确。
列兵布阵:AWS构筑容器服务格局
AWS容器服务的格局覆盖了三个层次。
最底层是弹性的映像注册表层,也就是Amazon ECR (Amazon Elastic Container Registry),它可以存储容器映像文件。中间层是计算引擎层,以Amazon EC2和AWS Fargate为代表,容器在计算平台上运行时,客户可以使用Amazon EC2作为启动类型来运行容器,也可以使用AWS Fargate来启动无服务器的运行。最上层是编排层,包含AWS的托管服务,也就是Amazon Elastic Container Service(ECS)和Amazon Elastic Kubernetes Service(EKS),客户可以凭借这些服务来专注于应用的开发,另外如果客户想专注于基础架构或者配置,AWS也提供了这方面的选择,客户可以通过AWS的平台自己编排服务。
攻心为上:完美契合客户需求点
Aaron Kao提到过这样一种情形,从客户的角度来说,他们迫切需要一种服务,来实现容器的全脱手管理,所以AWS就开发出了Amazon ECS (Amazon Elastic Container Service),它与AWS其他的服务深度集成,是一种高度可扩展的高性能容器编排服务,支持Docker容器。
客户对于Kubernetes服务的需求显现,才促使AWS推出了Amazon Elastic Kubernetes Services,它是一个全托管的Kubernetes服务,帮助客户以安全和可伸缩的方式来进行管理。Kubernetes是一个开源的项目,所以云平台的质量、应用的质量是相辅相成的,运行在AmazonEKS上的应用程序与运行在任何标准Kubernetes环境上的应用程序完全兼容,无论是在现场数据中心运行还是在公有云中运行。这意味着客户可以轻松地将任何标准Kubernetes应用程序迁移到AmazonEKS,而无需进行任何代码修改。
稳固边防:安全和可靠是重中之重
安全和可靠是AWS极为关注的点,对此做出以下三个方面的考量:
第一,AWS时刻保证用户获得最新的安全补丁,并且确保服务产品在发出之前是达到安全要求的。即便是老版本的Kubernetes,AWS也做了相应的支持老版本的安全补丁。
第二,AWS为客户提供原生和上游(native and upstream)的Kubernetes体验,AWS的Kubernetes和开源的Kubernetes的运行是完全一样的,绝不会存在所谓分支版的Kubernetes,AWS与开源社区通力合作,把代码贡献给上游。
第三,AWS始终尽可能地做到无缝集成,始终坚持不断拓展服务的广度和深度,开发出165种不同的服务,涵盖了从存储服务到管理服务等各种领域,这是AWS技术开拓的诚意,秉持着AWS能够成为运行现代应用程序的最佳方案的理念。
开疆扩土:未来技术路演
关于未来技术路演方面,Aaron Kao列出来几大亮点。例如,Amazon EKS很快会在AWS中国(北京)区域、AWS中国(宁夏)区域、AWS南美洲(圣保罗)区域推出。正在开展的Amazon EKS on Fargate项目也会持续推动Amazon EKS在加拿大中部区域的推出等。
在这条开拓道路上,AWS Fargate成为了一把独特的利刃,为AWS的容器技术服务体系的推广披荆斩棘。
“AWS Fargate完全抽象了底层基础架构,可以让用户把每个容器视为一台机器。用户只需定义每个容器所需的资源,它就能让用户完成复杂的任务而不必再管理多个“层”之间的访问规则,就可以像在单个EC2实例之间调度容器那样。”Aaron Kao这样描述AWS Fargate的作用。
也就是說,有了Fargate,用户就可以从服务器或是基础架构的处理工作中解放出来,而专注于应用的开发,不管用户的容器集群数量有多大,Fargate都可以让管理这些复杂的容器变得简单。
Lambda就像这柄利刃的敦实刀背,它和Fargate是构建和包装客户应用的两种不同方式,是为了达到同一目的地的两条道路。Lambda是事件驱动的无服务器计算的应用。Lambda能够允许客户无需预配或者管理服务器即可运行代码,客户只需要按被消耗的计算时间付费,它能够自动地扩展到工作负载,扩展负载的大小。
用户根据需求的不同,可以选择踏上哪一条路。如果用户想在容器层来运行,把它包装成一个容器的话,客户就用Fargate。如果客户只是作为一个函数,只是要打包客户的代码,然后客户发一个触发器,触发代码运行,那客户就用Lambda。所以关键是用户想要多少控制权,需要抽象化到何种程度。