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

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

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搭建和管理企业级网站应用
相关文章
|
3天前
|
Kubernetes Cloud Native 测试技术
探索软件测试的奥秘:从理论到实践深入理解云原生架构:从基础到实践
【8月更文挑战第28天】在软件开发的世界中,测试不仅是质量的守护者,也是创新的催化剂。本文将带你穿越软件测试的迷宫,从基础概念到高级策略,揭示如何通过测试提升软件质量和用户体验。我们将一起解码测试的核心原则,探索自动化测试的魅力,并学习如何设计有效的测试案例。无论你是测试新手还是资深开发者,这篇文章都将为你提供宝贵的见解和实用的技巧,让你在软件测试的道路上更加从容不迫。 【8月更文挑战第28天】本文旨在为读者揭示云原生技术的核心概念、优势以及如何在实际项目中应用。通过深入浅出的方式,我们将探索云原生的多个方面,包括容器化、微服务架构、持续集成和持续部署(CI/CD)、以及如何利用Kubern
|
3天前
|
Kubernetes Cloud Native 开发者
云原生时代的微服务架构实践
【8月更文挑战第28天】在数字化浪潮的推动下,云原生技术成为企业数字化转型的重要支撑。本文深入探讨了微服务架构在云原生环境下的应用实践,旨在为开发者提供一套完整的微服务解决方案,从理论到实战,全方位解析微服务的设计、部署与管理过程。通过具体的代码示例和实操指导,帮助读者快速掌握云原生微服务的核心技能。
|
1天前
|
存储 Kubernetes Cloud Native
探索Python编程的奥秘云原生时代的容器编排:Kubernetes入门与实践
【8月更文挑战第30天】本文以浅显易懂的方式,探讨了Python编程的核心概念和技巧。从基础语法到高级特性,再到实际应用案例,逐步引导读者深入理解Python编程的精髓。通过本文的学习,读者将能够掌握Python编程的基本技能,并激发进一步探索的兴趣。
19 13
|
9天前
|
运维 Cloud Native Devops
一线实战:运维人少,我们是如何从 0 到 1 实践 DevOps 和云原生?
上海经证科技有限公司为有效推进软件项目管理和开发工作,选择了阿里云云效作为 DevOps 解决方案。通过云效,实现了从 0 开始,到现在近百个微服务、数百条流水线与应用交付的全面覆盖,有效支撑了敏捷开发流程。
19147 14
|
1天前
|
运维 Kubernetes Cloud Native
云原生之旅:Kubernetes 集群的搭建与实践Python 编程入门:从零基础到编写实用脚本
【8月更文挑战第30天】在数字化转型的大潮中,云原生技术以其弹性、可扩展性及高效运维能力成为企业IT架构升级的关键。本文将通过实际操作演示如何在本地环境搭建一个简易的Kubernetes集群,带你领略云原生的魅力所在。从集群规划到服务部署,每一步都是对云原生理念的深刻理解和应用。让我们共同探索,如何通过Kubernetes集群的搭建和运维,提升业务灵活性和创新能力。
|
2天前
|
运维 Cloud Native 云计算
云原生技术在现代软件开发中的实践与思考
【8月更文挑战第29天】随着数字化转型的浪潮席卷全球,云原生技术已成为支撑现代软件开发的关键架构。本文将深入探讨云原生的核心概念、优势以及如何在企业中实施云原生策略,同时通过实际案例分析,揭示云原生技术如何助力企业实现快速迭代和高弹性的系统部署。
|
3天前
|
安全 网络安全 数据安全/隐私保护
云原生技术探索:容器化与微服务架构的实践之路网络安全与信息安全:保护数据的关键策略
【8月更文挑战第28天】本文将深入探讨云原生技术的核心概念,包括容器化和微服务架构。我们将通过实际案例和代码示例,展示如何在云平台上实现高效的应用部署和管理。文章不仅提供理论知识,还包含实操指南,帮助开发者理解并应用这些前沿技术。 【8月更文挑战第28天】在数字化时代,网络安全和信息安全是保护个人和企业数据的前线防御。本文将探讨网络安全漏洞的成因、加密技术的应用以及提升安全意识的重要性。文章旨在通过分析网络安全的薄弱环节,介绍如何利用加密技术和提高用户警觉性来构建更为坚固的数据保护屏障。
|
4天前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器化到微服务架构探索移动应用开发:从理念到实践
【8月更文挑战第27天】在数字化浪潮中,云原生技术如一艘航船,带领企业乘风破浪。本文将作为你的指南针,指引你探索云原生的核心概念,从容器化技术的基石Docker和Kubernetes,到微服务架构的设计哲学。文章不仅阐述理论,更通过实际代码示例,让你体验从传统应用向云原生应用转变的奇妙旅程。准备好,我们将启航进入一个更高效、更灵活的软件部署和运维新时代。
|
5天前
|
消息中间件 监控 Cloud Native
云原生时代的微服务架构实践
【8月更文挑战第26天】在数字化转型的浪潮中,企业正迅速将传统应用迁移到云端。本文探讨了云原生环境下微服务架构的设计、部署及优化策略,旨在为开发者和架构师提供实战指南。从容器化技术到服务网格,我们将深入分析微服务的最佳实践,并结合代码示例,展现如何在云平台上高效地构建和管理微服务。
|
5天前
|
Cloud Native 持续交付 云计算
云原生之旅:从理论到实践
【8月更文挑战第26天】本文旨在通过浅显易懂的语言,带领读者踏上云原生的探索之旅。我们将从云原生的基本概念出发,通过一个简单示例,展示如何将传统应用容器化并部署到云平台。文章不仅涉及技术细节,还探讨了云原生背后的哲学及其对现代软件开发的影响。无论你是云原生新手还是希望深化理解,这篇文章都将为你提供价值。
下一篇
云函数