大势已来:阿里云梭哈云原生

2019-10-09
8分钟阅读时长

云原生是什么?

技术圈总是在不停地蹦各种新名词。也不知道从什么时候开始,人们慢慢不怎么提“云计算”这个名词了,而是频繁提到一个新名词“云原生”,好像不这么提就不足以体现云计算原住民的身份。不过,要真的问什么是“云原生”,其实很多人都说不太清楚。随着云原生生态如火如荼的发展,甚至连 CNCF 官方都觉得有必要专门做个定义出来:

前一段时间,我在云栖大会上见到了阿里云的李响,就有人问他,“怎么理解‘云原生’?”作为 CNCF 的技术监督委员会成员的李响,以他的角度对此作了阐释:

“我觉得云原生本身实际上就是比较泛的概念,它最终的目标就是利用云上的资源、云上的服务来重构软件开发以及运行时的生命周期。简而言之就是怎么更好利用云。……随着云的发展,云原生本身也会有一些变化,大家接受云原生的理念和实现云原生的情况也会有变化。……我觉得不用太把云原生本身在一个框框里圈定,它更多还是一个核心的概念——更好地利用云释放云的红利,产生相关的技术让大家去实践。”

在我看来,虽然现在云原生的概念的内涵和外延都在不断的变化当中,但是不可否认的是,云计算生态已经从最初的巨石应用、刚性的分布式计算逐渐演变到原生地基于云计算环境进行设计、开发、部署、运维和弹性伸缩。可以说,云原生重新定义了云计算。

借助于云原生技术,一个计算系统可以很便捷的从一个环境中迁移至另外一个环境当中,而这在之前几年,几乎还是不可想象的。就这个场景,阿里云举了一个例子:比如像三维家,他们在上海云栖大会上宣布了全站上云的消息,因为他们已经应用了云原生的方式,仅花了三天把全部业务迁到阿里云上。而在迁移之后,三维家现在可以利用云原生的方式可以充分发挥云计算的弹性,三分钟之内就可以创建 100 个神龙节点去应对突发的业务需求,极大提升企业 IT 的灵活性,并且降低了 IT 成本。三维家表示,“阿里云的容器生态系统打造得非常完善,从监控、日志、服务暴露、应用拓扑、伸缩扩容方面能够做的更加灵活;基础设施的建设和维护稳定性交给阿里云,目前没有出现过问题。”

云原生进化

今年我参加云栖大会,有一个明显的感受就是,阿里云在不断的大声谈论云原生。事实上阿里云早已是云原生计算基金会的成员(现在是白金成员),也在这个领域耕耘良久,但是今年,无论是多到你参加不过来的各种主题演讲,还是各种产品和服务的消息,都在不断的讲,云原生、云原生……

在过去大家更多是把互联网和移动互联网的应用,大部分是无状态应用部署在容器平台之上,今年越来越多的企业开始把有状态的应用、交易类的应用以原生化的方式进行交付,进行自动化的运维。

这次云栖大会上阿里云还发布了 ACK 2.0。ACK 是阿里云容器服务 Kubernetes 版,它提供了高性能可伸缩的容器应用管理能力,支持企业级 Kubernetes 容器化应用的全生命周期管理,简化了集群的搭建和扩容等工作,整合了阿里云虚拟化、存储、网络和安全能力,以打造云端最佳的 Kubernetes 容器化应用运行环境。

关于阿里云容器服务,阿里云的易立说,从 2015 年底公测、2016 年中正式上线到现在的 4 年时间发展非常快,现在已经覆盖了阿里云全球 20 个地域,支撑了国内外数千家客户的生态系统。同时容器产品在持续保持增长,过去 3 年都能保持 400% 以上的增长速度,现在一个月下载次数超过 3 亿次。今年在 Forrester 全球公共云容器平台的评测里面,阿里云是国内排名第一,在 Gartner 报告也唯一入选公共云容器平台竞争格局。

阿里云容器服务优化整合了阿里云整体的计算、存储、网络、安全等核心能力。

比如说计算,不但能够支持强大虚拟机,像神龙这样的裸金属服务,还有异构计算的 CPU、GPU,未来也会包括云栖大会当天发布的含光芯片,通过容器的高效调度能够让 GPU 的利用率提升了 5 倍,而且容器产品能充分把计算资源弹性发挥出来,可以实现分钟级千节点的弹性伸缩,这对客户来说是非常重要的。

而在容器网络方面,它和阿里云的虚拟化网络进行了优化集成,可以实现原生网络一样的性能,与社区的 VXLAN 实现相比提升了 20% 性能。

在存储方面支持阿里云所有的存储产品,包括块存储、网络存储、对象存储等。针对容器场景进行了很多创新,比如说容器高密度部署时容器之间会对 I/O 进行争抢,通过跟操作系统团队进行深入合作,实现了更好的存储 I/O 隔离。另外,还实现了透明、高效的存储缓存,可以低成本支持像高性能计算和AI场景下大数据吞吐量的需求。

本次云栖大会上阿里云发布的 ACK 2.0 面向云原生进化,最重要的是它为整个企业上云奠定了一个新的基石。首先是容器服务全球化的部署,利用在阿里巴巴集团的大规模生产实践沉淀,建立了这样的基础设施。其次,云边端一体化可以实现边缘节点极大降低访问的延迟降低 75%。第三,可以让客户把他的私有云和云端利用 Kubernetes 进行统一管理,应用发布效率可以提升三倍,另外,还提供了全链路的安全架构,对安全风险进行监控。

对于云原生的发展,作为阿里云内部基础设施负责人的李响,在帮助阿里经济体以更为云原生的方式上云,在推动阿里经济体采用 Kubernetes、Service Mesh、Serverless 这些技术。他谈到:

“阿里和蚂蚁有着最大的 Kubernetes 集群,我们对 Kubernetes 上游拓展性、功能性是最大的贡献者之一,我们今年尝试落地Service Mesh,之前大家对 Service Mesh 的疑问是,它能不能应对一个复杂的场景,尤其和传统的微服务体系对接的场景。在阿里巴巴内部要验证这件事情,我们要告诉大家可以做到,而且我们要告诉大家怎么做到,后续会提供解决方案让大家去做这件事情。

第二,大家会思考 Service Mesh 的规模性是不是足够,阿里巴巴其实有巨大规模性的挑战,我们也会解决 Service Mesh 规模性的问题。我们认为阿里巴巴能够使用 Service Mesh,我想世界上 99% 的公司都可以使用 Service Mesh, 而不会遇到它的规模性问题。

第三,Service Mesh 是不是会影响核心链路上的性能问题,会不会影响在核心时刻的性能。我们也会在双 11 这种洪峰流量,对流量要求极高的情况下去验证 Service Mesh,使用 Service Mesh,去打磨 Service Mesh,所有打磨的东西会反馈到上流,让用户、开发者享受到这种红利。

第四,阿里巴巴通过这些事情培养出一批靠谱的工程师,我们有非常强的兜底能力,当用户遇到任何问题,阿里巴巴都能帮你解决问题,阿里巴巴真的是运营这套体系的,有这个生产实践的经验。

阿里巴巴真正把‘云原生’新的概念,在我们认为正确的方向进行落地、进行打磨,最后交付给客户。所有这些东西,当我们说阿里巴巴云上有这样的产品,一定是可靠的,一定是稳定的。”

容器安全是重点

当然我们也看到企业客户在使用云原生技术过程中面对几个挑战,第一个挑战就是安全。

安全是企业上云的首要关注。云原生加剧了这个挑战,云原生平台高密度、高动态部署使得遭受攻击可能性增加,而且一旦遭受攻击,用户不知道是谁受到攻击,也没有办法实时应对。

安全是体系性的东西,永远在最弱的一环去攻破整个企业的安全体系。阿里云容器服务实现了非常全面的端到端的云原生安全的架构,包括基础设施的安全,跟阿里云的云安全基础设施紧密基础,利用 RAM 进行认证、鉴权和审计,支持存储的 BYOK 加密等,提供了一个安全的云基础设施。

同时,在应用的生命周期里面用了安全的镜像检测,上线之前要进行扫描,上线之后会进行实时的安全检测。还有运行时的安全,因为安全的风险无处不在,一旦出现了安全问题必须第一时间对它进行监控、报警。

对于企业来讲,大量采用容器之后面临的挑战之一就是安全隔离。比如说一台机器上要混布多种类型的应用,但是有些像金融交易的应用,安全级别敏感性会很高,不希望受到其他应用的攻击和干扰。另外企业除了自己的应用还要部署第三方应用,这个过程中对一些不可信的应用要进行安全的隔离,阿里云引入了安全沙箱一系列的技术。传统的容器 RunC 用是共享内核的机制,很高效,但是安全隔离做得不好,现在可以利用安全沙箱可以进行安全隔离。

在这方面阿里云有一些差异化的优势:首先就是对它进行大量的性能优化,比如说它的网络跟原生的进程没有任何区别,网络性能非常好。整体能够达到 90% 的原生性能,对用户来讲可以获得非常好的安全性,同时对性能损耗是可以接受的。另外,能够让用户自主选择是 RunC 还是安全沙箱,两种容器运行时用户体验是完全一致的,用户可以根据自己对业务需求来选择合适的容器应用技术。

在安全容器领域有几个重要的项目,如 Google 的 gVisor,以及已经属于蚂蚁金服旗下的 Kata 容器项目等,不过和易立的沟通当中,我了解到阿里云容器服务的安全容器所采用的技术并非照搬 Kata 容器技术,而是集成了目前主流的安全容器项目,加以自身的创新而成的。阿里经济体实际上在容器安全方面投入非常大,包括 Kata,还有其他几种技术。他们与蚂蚁金服、阿里的操作系统团队合作一起来提供这样商业化安全容器的实现。这次发布的安全沙箱容器底层技术针对阿里云进行了大量优化,跟 Kata 技术有些类似,但是里面有很多部分不同,性能也做了大量的优化。

现在提供的是基于虚拟化隔离的安全技术,后续会陆续提供其他的技术能力,它们的隔离级别和适用场景是不同的,用户只要去选择就好了,在保证用户体验是一致的基础上,对用户是透明的。

结语

我们看到,阿里云正在云原生的路上狂奔,将各个产品、服务都押宝在元原生的领域上。最后,让我们用李响的一段话来结束这篇文章:“新兴的应用,或者是新兴的领域,我们建议你使用容器轻量级自动化平台,现在我们阿里云、ACK 都是朝着这种模式跟大家宣导的。我们要去帮助开发者,引导开发者从非原生的体系向云原生体系去转移,我觉得这条道路非常重要,这也是阿里云的责任,带动整个国内的基础设施,带动国内云原生体系发展,我们要去承担这件事情。”