开放下载!《阿里巴巴云原生实践 15 讲》揭秘九年云原生规模化落地之路

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
函数计算FC,每月15万CU 3个月
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 在云的趋势下,越来越多的企业开始将业务与技术向“云原生”演进。

image.png

以容器、服务网格、微服务、Serverless 为代表的云原生技术,带来一种全新的方式来构建应用。同时,云原生也在拓展云计算的边界,一方面是多云、混合云推动无边界云计算,一方面云边端的协同。在云的趋势下,越来越多的企业开始将业务与技术向“云原生”演进。

在这个演进过程中,企业都或多或少都面对一些困惑与挑战,其中如何将应用和软件向 Kubernetes 体系进行迁移、交付和持续发布是一个普遍的难题。

阿里巴巴从 2011 年开始通过容器实践云原生技术体系,在整个业界都还没有任何范例可供参考的大背境下,从最初独自摸索到拥抱开源回馈社区,阿里巴巴逐渐摸索出了一套比肩全球一线技术公司并且服务于整个阿里集团的容器化基础设施架构。九年的前行,让阿里巴巴在交流互动中不断吸收和贡献好的理念、技术、思想,也积累了最为丰富和宝贵的实践经验。

2019年6月24日至6月26日,在由 Cloud Native Computing Foundation (CNCF) 主办的云原生顶级技术大会 KubeCon + CloudNativeCon + Open Source Summit(上海 )上,阿里巴巴为全球企业和开发者分享了26场实践经验、行业趋势和技术演讲。我们筛选了其中15场有代表性的演讲进行重新编排,整理成书《阿里巴巴云原生实践 15 讲》,旨在全面揭秘阿里巴巴云原生之路上的探索与实践,为准备踏上云原生之旅的开发者,提供一些实践参考。

你为什么要读这本书?

在云原生领域,开发者的诉求和使用方法永远是丰富的、复杂的、多样的。在这种背景下,短时间内很难有技术能够大一统地解决开发者面临的所有问题,阿里巴巴内部对云原生的探索也一直在进行中。从外向内引入社区技术,让阿里巴巴的基础设施完成了一次自我升级,并变得更加开放标准;从内向外的输出,对社区提出有价值的代码,推动整个云原生社区向更大规模的方向演进。

本书整合阿里巴巴九年云原生技术沉淀,分析真实的技术案例,发现问题,理清思路,解决问题,总结方法,把自我成长和专业精进的技术养料,回馈给广大云原生开发者。本书包含3个系列,阿里云原生实践,阿里新技术方案及阿里开源贡献,共 16 篇文章。每篇文章都凝结着阿里巴巴云原生落地实践的宝贵经验和面对困惑的解决方法,相信能够在最短的时间内,帮助你全面了解阿里巴巴云原生实践经验,踏上最适合自己的云原生之路。

image.png

本书目录

书中精彩干货集合

《坚持探索与落地开源,阿里巴巴云原生之路全景揭秘》

阿里云已经成功地规模化落地云原生,本文将分享阿里巴巴具体的云原生实践经验分享给各位观众,涉及规模扩展、可靠性、开发效率、迁移策略等方面,并探讨针对大规模场景进行优化。Cloud native works for Alibaba. Cloud native works for (almost) everyone.

《1-5-10:如何快速恢复大规模容器故障》

在云时代,企业中基于容器的应用激增,由于人工操作、硬件故障等,发生容器故障的可能性大幅增加。因此,如何在不增加资源投入的情况下保证大规模容器的可靠性成为云平台面临的一个巨大挑战。阿里巴巴运行着数百万个容器,为恢复容器相关故障提出了 1-5-10 理论:MTTD(平均检测时间)为 1 分钟,MTTI(平均识别时间)为 5 分钟,MTTR(平均解决时间)为 10 分钟。我们将讨论如何利用 1-5-10 提高大规模容器的可靠性:

如何在本地建立一个有效代理,在 1 分钟内检测到问题;

如何借助专家知识库智能诊断容器问题;

如何以故障驱动型方式自动恢复容器问题。

《阿里巴巴利用 K8S、Kata 容器和裸机云构建无服务器》

无服务器计算是当前流行的计算形式,极大降低了开发人员部署、管理、运行应用的成本。在无服务器平台中,不同用户的服务通常混部在同一个节点上,为此,需要在多租户场景下提供可信的运行环境。在阿里巴巴,我们使用 Kata Containers 作为安全容器运行时,在存储、网络、硬件等层面确保多租硬隔离和服务运行时的性能。文章将根据我们的生产实践,详细讨论多租场景下如何实现硬多租和服务运行的高性能。

《CafeDeployment:为互联网金融关键任务场景扩展的 Kubernetes 资源》

Kubernetes 原生社区 Deployment 和 StatefulSet 解决了“服务节点版本一致性”的问题,并且通过 rolling update 实现了滚动升级,提供了基本的回滚策略。对于高可用建设要求不高的“年轻”业务,是一个不错的选择。但是,在金融场景下,要解决的场景复杂得多,因此,我们在金融分布式架构-云应用引擎( SOFAStack-CAFE )中提出了 CafeDeployment 的云原生模型,致力于解决,IP 不可变;金融体系下的高可用;灵活的部署策略的问题。

在面对以上这些问题的时候,我们思考:能不能有一个类似 Deployment 的东西,不仅可以实现副本保持,而且还能协助用户管控应用节点部署结构、做 Beta 验证、分批发布,减少用户干预流程,实现最大限度减少发布风险的目标,做到快速止损,并进行修正干预。本篇文章中将详细解释我们为什么选择定义了自己的 CRD——CafeDeployment 。

《Severless 市场观察和落地挑战》

KubeCon China 2019 大会上, 蚂蚁 SOFAStack CAFE Serverless 应用服务(SAS)正式亮相,在工作坊吸引了百余名参与者同场体验。Serverless 将资源管理的粒度更加细化,使开发者更快上手云原生,并且倡导事件驱动模型支持业务发展。从而帮助用户解决了资源管理复杂、低频业务资源占用等问题;实现面向资源使用,以取代面向资源分配的模式。

《有效可靠地管理大规模 Kubernetes 集群》

Kubernetes 以其超前的设计理念和优秀的技术架构,在容器编排领域拔得头筹。越来越多的公司开始在生产环境部署实践 Kubernetes,在阿里巴巴和蚂蚁金服 Kubernetes 已被大规模用于生产环境。Kubernetes 的出现使得广大开发同学也能运维复杂的分布式系统,它大幅降低了容器化应用部署的门槛,但运维和管理一个生产级的高可用 Kubernetes 集群仍十分困难。本文将分享蚂蚁金服是如何有效可靠地管理大规模 Kubernetes 集群的,并会详细介绍集群管理系统核心组件的设计。

《云原生应用 Kubernetes 监控与弹性实践》

云原生应用的设计理念已经被越来越多的开发者接受与认可,而 Kubernetes 作为云原生的标准接口实现,已经成为了整个 stack 的中心,云服务的能力可以通过 Cloud Provider 、 CRD Controller 、 Operator 等等的方式从 Kubernetes 的标准接口向业务层透出。开发者可以基于 Kubernetes 来构建自己的云原生应用与平台, Kubernetes 成为了构建平台的平台。本文将向大家介绍一个云原生应用该如何在 Kubernetes 中无缝集成监控和弹性能力。

《了解 Kubernetes Master 的可扩展性和性能》

目前,Kubernetes 的规模限制是 5k 节点,因此如果您想用它来管理像 10k 节点这样的 Web 规模集群,您可能无法实现。您是否想知道 Kubernetes 管理超过 5k节点的性能瓶颈是什么?当你想将其可扩展性扩展到一个新的水平时,是哪个组件阻碍?etcd,apiserver 或者 scheduler?了解这些问题是运营大型 Kubernetes 集群的关键。在阿里巴巴,我们遇到了很多问题,比如随着集群变得越来越大,pod 创建变得非常慢。本文将分享我们如何进行各种基准测试和分析,并找到瓶颈,以及如何调整控制组件,并实现了超过 100 倍的性能提升。

《云原生时代加速镜像分发的三种方法》

本文将分享从阿里巴巴网络规模提高镜像分发效率的实践和经验教训。根据不同的场景,我们利用不同的镜像分发方法。基于 P2P 的 CNCF/Dragonfly 分发是缓解镜像中心带宽和减少分发时间的最直接方式。此外,CNCF/containerd 中的远程文件系统快照程序直接远程存储镜像,使容器引擎通过网络读取镜像内容,几乎不需要时间分发。你会发现第二种方式依赖于网络稳定性,那么如何根据镜像内容读请求动态加载从远程到本地存储的镜像作为权衡?最后,我们将总结如何选择适合镜像分布的方式。

《在 Web 级集群中动态调整 Pod 资源限制》

阿里巴巴这样规模庞大的全球电商巨头,其所拥有的应用数量和应用种类的都是超大规模的。如何科学合理管理这些容器的资源,一直是我们面临的巨大挑战。在本文中,我们将从技术和社区演进等多种维度为大家分享我们的实际工作经验和技术成果。其中包括:

  • 目前社区对于容器的资源管理现状是什么?
  • 阿里这种大规模应用部署的具体挑战是什么?
  • 我们如何诊治资源管理上的各种疑难杂症?
  • 我们如何做到资源利用率大幅提升的同时确保在线服务稳定?
  • 如何平衡基于云原生的演进和实现工作快速交付?
  • 我们的经验可以为您带来什么帮助以及我们如何反馈社区做到共赢?

《大规模 K8s 集群下的巡检》

众所周知,准确的异常发现和快速的问题分析是保证 Kubernetes 集群可用性和稳定性的关键所在。但在整个 Kubernetes 项目中,有着不计其数的监控指标数据。仅以我们的 Kubernetes 集群为例,我们观察到像这样的监控数据每秒钟就会产生几千条。如何合理地利用这些复杂而大量的数据和指标,对它们进行有效的记录和分析,变成简单易懂的可视化展示,变成准确的告警信息,是一个非常有挑战性的工作。

本文将分享阿里巴巴在 Kubernetes 集群监控、审计和巡检方面的实践和经验。谈谈 Kubernetes 与稳定性相关的重要数据和指标,以及如何去理解它们。以案例的形式,具体讲解我们如何对这些数据和指标进行整合与解析,并分享阿里巴巴高效、实时的对这些数据进行自动化巡检与分析的最佳实践。

《使用 Istio 管理跨地域多集群的服务》

“职优你”是一个电子学习职业发展平台,旨在满足全球学生和在职专业人士的各种需求,并为来自世界多个地区的用户提供服务。这些应用部署于在阿里云的不同区域上的多个 Kubernetes 集群上,以减少不同区域内的服务访问延迟。为了有效地管理这些微服务,需要一个多集群服务网格来控制微服务流量、保证服务到服务通信等。

Istio 是一个建立在 Kubernertes 上的服务网格,可支持多种拓扑来管理多个 Kubernetes 集群上的应用流量统一管理。在整个案例研究中,我们将使用 Istio 服务网格分享多集群流量管理相关的部署设计和技术,并根据底层平台的需求和限制讨论一些挑战和相应的实践。

《首个普惠社区的平民化方案:GPU共享调度》

越来越多的数据科学家在 Kubernetes 上运行基于 NvidiaGPU 的深度学习任务。与此同时,他们发现集群中的空闲 GPU 浪费了超过 40% 的成本。因此,如何能帮助提高 GPU 使用效率成为一个重要挑战。本文将介绍一款基于原生 Kubernetes 的 GPU 共享解决方案:

  • 如何定义 GPU 共享 API;
  • 如何在不更改调度程序裸机代码的情况下在调度 GPU 共享;
  • 如何将 GPU 隔离解决方案与 Kubernetes 相集成;
  • 我们还将通过演示介绍 Tensorflow 用户如何在 Kubernetes 集群中的同一 GPU 设备上运行不同的作业。

《容器运行时管理引擎 Containerd》

本文将从 containerd 架构设计理念出发,向听众分享如何使用插件化能力来增强 containerd,提供不同镜像存储以及强隔离容器运行时的解决方案。同时,还会展示 containerd 同 gVisor, Firecracker 容器运行时集成的演示案例,会让读者更好地理解 containerd 最佳集成方式。

《基于 P2P 原理的高可用高性能大规模镜像分发系统 :Dragonfly》

随着容器技术在工业中的应用越来越广泛,如何安全高效地分发映像是工程师们所面临的新挑战。蜻蜓项目是基于开源智能 P2P 的映像和文件分发系统。该项目旨在解决云原生场景中的所有分发问题。目前,蜻蜓项目专注于以下方面:

  • 简单:面向用户的明确定义的 API (HTTP),对所有容器引擎都无侵入性
  • 高效:CDN 支持、基于 P2P 的文件分发以节省企业带宽
  • 智能:主机检测实现主机层面的速度限制、智能的流量控制
  • 安全:数据块传输加密,HTTPS 连接支持

本文将重点介绍通过蜻蜓分发容器映像。我们将回顾组织面临的挑战,包括大规模分发、安全传输、带宽成本,并提供解决方案。

云原生浪潮滚滚而来,企业纷纷上云。这条路上,阿里巴巴不是踽踽独行。不管是开源回馈社区或是分享最佳案例,希望阿里巴巴在云上的探索,能够为业界提供借鉴意义,共同推动云计算的应用和发展。

关注「阿里技术」

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
8天前
|
运维 Cloud Native 持续交付
云原生架构的演进与实践####
【10月更文挑战第16天】 云原生,这一概念自提出以来,便以其独特的魅力和无限的可能性,引领着现代软件开发与部署的新浪潮。本文旨在探讨云原生架构的核心理念、关键技术及其在实际项目中的应用实践,揭示其如何帮助企业实现更高效、更灵活、更可靠的IT系统构建与管理。通过深入剖析容器化、微服务、持续集成/持续部署(CI/CD)等核心技术,结合具体案例,本文将展现云原生架构如何赋能企业数字化转型,推动业务创新与发展。 ####
104 47
|
8天前
|
Kubernetes Cloud Native 持续交付
云计算的转型之路:云原生技术的崛起与实践####
【10月更文挑战第16天】 本文深入探讨了云原生技术在现代IT架构变革中的核心作用,不同于传统概述,本摘要将聚焦于云原生如何促进企业实现敏捷开发、弹性伸缩及高效运维,通过具体案例分析展现其在实际业务场景中的创新应用,揭示这一技术趋势对企业数字化转型的深远影响。 ####
25 2
|
2天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
3天前
|
监控 Cloud Native Java
云原生架构下微服务治理策略与实践####
【10月更文挑战第20天】 本文深入探讨了云原生环境下微服务架构的治理策略,通过分析当前技术趋势与挑战,提出了一系列高效、可扩展的微服务治理最佳实践方案。不同于传统摘要概述内容要点,本部分直接聚焦于治理核心——如何在动态多变的分布式系统中实现服务的自动发现、配置管理、流量控制及故障恢复,旨在为开发者提供一套系统性的方法论,助力企业在云端构建更加健壮、灵活的应用程序。 ####
36 10
|
3天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
3天前
|
运维 Cloud Native 持续交付
云原生架构下的微服务设计原则与实践####
【10月更文挑战第20天】 本文深入探讨了云原生环境中微服务设计的几大核心原则,包括服务的细粒度划分、无状态性、独立部署、自动化管理及容错机制。通过分析这些原则背后的技术逻辑与业务价值,结合具体案例,展示了如何在现代云平台上实现高效、灵活且可扩展的微服务架构,以应对快速变化的市场需求和技术挑战。 ####
20 7
|
1天前
|
敏捷开发 Cloud Native 持续交付
云原生技术在现代企业中的应用与实践
【10月更文挑战第23天】本文将深入探讨云原生技术在现代企业中的广泛应用,并结合具体案例分析其对企业数字化转型的推动作用。我们将从云原生技术的基本原理出发,逐步揭示其在提高业务敏捷性、降低成本和增强系统可靠性方面的优势。同时,文章还将分享一系列成功实施云原生技术的企业案例,为读者提供实践中的参考和启示。最后,我们将讨论云原生技术面临的挑战及未来的发展趋势,为企业在这一领域的进一步探索提供指导。
|
2天前
|
监控 Cloud Native 测试技术
云原生架构下的性能优化与实践####
【10月更文挑战第21天】 本文深入探讨了在云原生环境下,如何通过一系列技术手段和最佳实践来提升应用性能。文章首先概述了云原生架构的基本原则与优势,随后详细分析了影响性能的关键因素,包括容器编排、微服务设计、持续集成/持续部署(CI/CD)流程以及监控与日志管理。针对这些因素,文中不仅介绍了具体的优化策略,如资源请求与限制的合理配置、服务间通信的高效实现、自动化测试与部署的优化,还结合案例分析,展示了如何在实际项目中有效实施这些策略以显著提升系统响应速度和处理能力。此外,文章还强调了性能测试的重要性,并提供了几种常用的性能测试工具和方法。最后,总结了云原生性能优化的未来趋势,为开发者和架构师
8 2
|
2天前
|
运维 Cloud Native API
云原生时代下的微服务架构实践
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术正以前所未有的速度重塑软件开发和运维的模式。微服务架构作为云原生的重要组成部分,其设计哲学、技术栈选择以及与传统单体应用的根本区别成为了现代软件工程讨论的焦点。本文将深入探讨微服务架构的核心概念,通过实际案例分析其在云平台下的应用,并分享在实施过程中的经验教训,旨在为读者提供一套清晰的微服务架构实践指南。
|
3天前
|
Cloud Native 持续交付 开发者
云原生技术在现代软件开发中的实践与挑战####
本文探讨了云原生技术在现代软件开发中的应用,重点分析了其核心组件如容器化、微服务架构、持续集成/持续部署(CI/CD)以及无服务器计算的优势与面临的挑战。通过实际案例,阐述了如何有效实施云原生策略以提升系统的可扩展性、可靠性和开发效率。同时,文章也指出了在向云原生转型过程中常见的技术障碍和解决策略,为开发者和企业提供了宝贵的实践经验分享。 ####

热门文章

最新文章