阿里云李响:阿里巴巴大规模云原生应用是如何实现的?

6月26日,云原生领域顶级大会KubeCon + CloudNativeCon落下帷幕,做为云原生技术与应用的领先企业,阿里云全面展现了云原生产品家族、开源全景图,让企业、开发者轻松享受云的技术红利。服务器

现在,阿里云已经成为国内云原生领域开源贡献最全面的科技公司,涵盖编排调度、做业管理、无服务器框架等:网络

●主导维护etcd、containerd、dragonfly等多个CNCF明星项目的发展,已有超过10个项目进入CNCFlandscape;
●项目建设层面:积极建设Kubernetes项目,贡献量位居全球前10;
●开源生态支持:加入CNCF、OCI、CDF等基金会,成为多个基金会的顶级会员,共建开源生态。架构

大会期间,阿里云资深技术专家、中国首个CNCF TOC李响分享了阿里巴巴探索云原生技术的经验,以及应对云原生应用落地挑战的方法。框架

大规模实践是云原生落地的必经之路运维

云原生是一种全新的理念,也是一套涉及整个IT技术栈协同的方法论,单纯的产品研发远远不够,只有经历了大规模的场景实践才实现到全方位的效率提高,并实现落地。性能

十年前,阿里巴巴先于其它公司遇到了大规模流量的挑战,因而决定升级IT架构,并开始经过容器实践云原生技术体系解决流量压力。在整个业界都尚未任何范例可供参考的大背境下,逐渐摸索出了一套比肩全球一线技术公司而且服务于整个集团的容器化基础设施架构,开启了中国公司将云原生技术体系在电商、金融、制造等领域中大规模应用的先河。优化

这个探索历程虽然孤独,但却被始终如一的坚持至今。正是在这个背注一掷的技术探索与奋进的过程当中,完整的经历了云原生技术浪潮里的全部关键节点,不只成为了此次技术革命的重要见证者,也逐渐成为中国云原生技术体系当之无愧的推进者与引领者之一。ui

毫无疑问,阿里巴巴的互联网规模以及复杂业务场景是推进云原生的自然优点,在双11成本压力的推进下,资源成本与效率优化成了云原生的起点。也就是从容器入手,研究低成本虚拟化与调度技术:阿里云

  • 提供灵活、标准的部署单元;
  • 将静态资源分配更换为动态按需调度,进一步提高部署效率,解决资源碎片化问题,提升部署密度;
  • 经过存储网络虚拟化和存储计算分离等技术,加强任务的可迁移性,进一步提升了资源的可靠性,下降了资源成本。

在资源成本的推进下,阿里完成了全面容器化,资源分配也被高效调度平台接管。而阿里的云原生并未止步于此,提升研发效率与加快迭代周期是推进阿里业务加强的秘密武器。spa

为了下降应用部署难度,提升部署自动化程度,阿里开始采用 Kubernetes 做为容器编排平台,而且持续推进 Kubernetes 的性能与可扩展性,引入了诸如 Helm 的应用标准化管理,与此同时,也开始探索服务网格,致力于进一步提升服务治理的普适性与标准性,下降开发者使用门槛。

今年3月,阿里云智能总裁张建锋宣布阿里巴巴集团将来两年内实现全站上云。通过云原生的探索与改造,现在阿里基础架构体系是现代化和标准化的。

  • 利用容器技术,应用与宿主机运行时完成了解耦;
  • 利用 Kubernetes 对 Pod 与 Volume 等的抽象,完成了对多种资源实现的统一化;
  • 经过智能调度与 PaaS 平台,让自动迁移应用,修复不稳定因素成为了可能,阿里经过云原生技术大大下降了上云的难度。

在提升资源和人员效率的过程当中,整个基础设施也变得更加开放,连通开源生态,在交流互动中不断吸取和贡献好的理念、技术、思想。现在,阿里云不只支撑着中国最大的云原生应用双11,并且拥有国内最大的公共云集群和镜像仓库。做为惟一入选 Gartner 的公有云容器服务竞争格局的厂商,阿里云也积累了最为丰富和宝贵的客户实践。

持续优化,提高企业和开发者效率

弹性和规模性是支撑阿里巴巴各类类型的复杂场景以及流量高峰的关键因素。阿里巴巴持续优化性能,能够分为四个维度:工做负载追踪、性能分析、定制化调度、大规模镜像分发。首先对工做负载调度有完整的追踪、重放机制,其次将全部性能问题的进行细致分析,逐一攻克技术瓶颈。

通过不断打磨,阿里巴巴在 Kubernetes 规模与性能上取得了显著的成果:将存储object 的数量提高25倍,支持的节点数从5000提高到上万,在端到端调度延迟从5s变为100ms等。

其中有很多工做和社区共同开展,而这些研发成果都已经贡献给社区,其余企业及开发者也能够享受阿里巴巴规模带来的技术红利。

Kubernetes 自己的可定制性很强,阿里巴巴针对自身业务场景沉淀了定制化的调度能力和镜像分发系统,例如开源Dragonfly 项目脱胎于双11,具有极强的镜像分发能力。

总体来讲,阿里巴巴落地 Kubernetes 能够分为三个阶段:

  • 首先经过 Kubernetes 提供资源供给,可是不过多干扰运维流程,这个系统容器是富容器,将镜像标准化与轻量级虚拟化能力带给了上面的 PaaS 平台。
  • 第二步,经过 Kubernetes controller 的形式改造PaaS 平台的运维流程,给 PaaS 带来更强的面向终态的自动化能力。
  • 最后把运行环境等传统重模式改为原生容器与 pod 的轻量模式,同时将 PaaS 能力彻底移交给Kubernetes controller,从而造成一个彻底云原生的架构体系。

企业如何应对云原生落地的挑战?

阿里巴巴云原生的探索,起步于自研容器和调度系统,到现在拥抱开源的标准化技术。目前,Kubernetes已经成为云原生生态的中流砥柱,它不只向下屏蔽了底层细节,并且向上支撑各类周边业务生态;另外一方面,社区中有着愈来愈多围绕 Kubernetes 构建的开源项目,好比Service Mesh、Kubeflow。

但云原生技术架构演进中也存在很多挑战,最为艰难的挑战其实来自于 Kubernetes 自己的管理。由于 Kubernetes 相对年轻,其自身的运维管理系统生态尚不完善。对于阿里而言,数以万计的集群管理相当重要,咱们探索并总结了四个方法:

  • Kubernetes on Kubernetes,利用 K8s 来管理 K8s 自身;
  • 节点发布回滚策略,按规则要求灰度发布;
  • 将环境进行镜像切分,分为模拟环境和生产环境;
  • 而且在监控侧下足功夫,将Kubernetes 变得更白盒化和透明化,及早发现问题、预防问题、解决问题。

这次 KubeCon 大会上,阿里云重磅公布了两个项目:Cloud Native App Hub —— 面向全部开发者的 Kubernetes 应用管理中心,OpenKruise —— 源自全球顶级互联网场景的 Kubernetes 自动化开源项目集。

云原生应用中心(Cloud Native App Hub)方便用户得到应用资源,并大大简化了 Kubernetes 部署安装一个应用的步骤;OpenKruise/Kruise 项目致力于成为“云原生应用自动化引擎”,解决大规模应用场景下的诸多运维痛点。



本文做者:阿里云头条

原文连接

本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索