摘要: 欢送大家来到阿里云与 CNCF 独特推出的“云原生”技术公开课。本文整顿自“云原生”技术公开课的开篇:第一堂“云原生”课。在本文中,阿里巴巴高级技术专家、CNCF 官网大使张磊为大家介绍了“云原生”技术的倒退历程,本门课程的简介与准备常识以及“云原生”的定义和技术要点,精彩不容错过。
本节课程要点
- 云原生技术倒退历程(为什么要学习这门课)
- 课程简介与准备常识(这门课到底教什么)
- 云原生的定义与技术要点(本节正式内容)
一、为什么要开设云原生技术公开课?
云原生技术倒退简史
首先从第一个问题进行分享,那就是“为什么要开设云原生技术公开课?”云原生、CNCF 都是目前十分热门的关键词,然而这些技术并不是十分陈腐的内容。
- 2004 年— 2007 年,Google 已在外部大规模地应用像 Cgroups 这样的容器技术;
- 2008 年,Google 将 Cgroups 合并进入了 Linux 内核骨干;
- 2013 年,Docker 我的项目正式公布。
- 2014 年,Kubernetes 我的项目也正式公布。这样的起因也非常容易了解,因为有了容器和 Docker 之后,就须要有一种形式去帮忙大家不便、疾速、优雅地治理这些容器,这就是 Kubernetes 我的项目的初衷。在 Google 和 Redhat 公布了 Kubernetes 之后,这个我的项目的倒退速度十分之快。
- 2015 年,由 Google、Redhat 以及微软等大型云计算厂商以及一些开源公司独特牵头成立了 CNCF 云原生基金会。CNCF 成立之初,就有 22 个开创会员,而且 Kubernetes 也成为了 CNCF 托管的第一个开源我的项目。在这之后,CNCF 的倒退速度十分迅猛;
- 2017 年,CNCF 达到 170 个成员和 14 个基金项目;
- 2018 年,CNCF 成立三周年有了 195 个成员,19 个基金会我的项目和 11 个孵化我的项目,如此之快的倒退速度在整个云计算畛域都是十分常见的。
云原生技术生态现状
因而,现在咱们所探讨的云原生技术生态是一个宏大的技术汇合。CNCF 有一张云原生全景图(https://github.com/cncf/landscape),在这个全景图里曾经有 200 多个我的项目和产品了,这些我的项目和产品也都是和 CNCF 的观点所符合的。所以如果以这张全景图作为背景,加以思考就会发现,咱们明天所探讨的云原生其实次要议论了以下几点:
- 云原生基金会 —— CNCF;
- 云原生技术社区,比方像 CNCF 目前正式托管的 20 多个我的项目独特形成了古代云计算生态的基石,其中像 Kubernetes 这样的我的项目曾经成为了世界第四沉闷的开源我的项目;
- 除了后面两点之外,当初寰球各大公有云厂商都曾经反对了 Kubernetes。此外,还有 100 多家技术守业公司也在继续地进行投入。当初阿里巴巴也在谈全面上云,而且上云就要上云原生,这也是各大技术公司拥抱云原生的一个例子。
咱们正处于时代的要害节点
2019 年正是云原生时代的要害节点,为什么这么说?咱们这里就为大家简略梳理一下。
从 2013 年 Docker 我的项目公布开始说起,Docker 我的项目的公布使得全操作系统语义的沙盒技术唾手可得,使得用户可能更好地、更残缺地打包本人的利用,使得开发者能够轻而易举的取得了一个利用的最小可运行单位,而不须要依赖任何 PaaS 能力。这对经典 PaaS 产业其实是一个“降维打击”。
2014 年的时候,Kubernetes 我的项目公布,其意义在于 Google 将外部的 Borg/Omega 零碎思维借助开源社区实现了“新生”,并且提出了“容器设计模式”的思维。而 Google 之所以抉择间接开源 Kubernetes 而不是间接开源 Borg 我的项目,其实背地的起因也比拟容易了解:Borg/Omega 这样的零碎太简单了,是没方法提供给 Google 之外的人应用,然而 Borg/Omega 这样的设计思维却能够借助 Kubernetes 让大家接触到,这也是开源 Kubernetes 的重要背景。
这样到了 2015 年到 2016 年,就到了容器编排“三国争霸”的时代,过后 Docker、Swarm、Mesos、Kubernetes 都在容器编排畛域开展角逐,他们竞争的起因其实也比拟容易了解,那就是 Docker 或者容器自身的价值尽管大,然而如果想要让其产生商业价值或者说对云的价值,那么就肯定须要在编排下面占据一个无利的地位。
Swarm 和 Mesos 的特点,那就是各自只在生态和技术方面比拟强,其中,Swarm 更偏差于生态,而 Mesos 技术更强一些。相比之下,Kubernetes 则兼具了两者劣势,最终在 2017 年“三国争霸”的场面中得以胜出,成为了过后直到现在的容器编排规范。这一过程的代表性事件就是 Docker 公司发表在外围产品中内置了 Kubernetes 服务,并且 Swarm 我的项目逐步进行保护。
到了 2018 年的时候,云原生技术理念开始逐步萌芽,这是因为此时 Kubernetes 以及容器都成为了云厂商的既定规范,以“云”为外围的软件研发思维逐步形成。
而到了 2019 年,状况仿佛又将产生一些变动。
2019 年——云原生技术遍及元年
为什么说 2019 年很可能是一个要害节点呢? 咱们认为 2019 年是云原生技术的遍及元年。
首先大家能够看到,在 2019 年,阿里巴巴发表要全面上云,而且“上云就要上云原生”。咱们还能够看到,以“云”为外围的软件研发思维,正逐渐成为所有开发者的默认选项。像 Kubernetes 等云原生技术正在成为技术人员的必修课,大量的工作岗位正在涌现进去。
这种背景下,“会 Kubernetes”曾经远远不够了,“懂 Kubernetes”、“会云原生架构”的重要性正日益凸显进去。从 2019 年开始,云原生技术将会大规模遍及,这也是为什么大家都要在这个工夫点上学习和投资云原生技术的重要起因。
二、“云原生技术公开课”是一门怎么的课程?
基于下面所提到的技术趋势,所以阿里巴巴和 CNCF 联结开设了云原生技术公开课。
那么这样的公开课到底在讲什么内容呢?
公开课教学大纲
第一期云原生公开课的教学大纲,次要以利用容器和 Kubernetes 为外围,在前面几期将会陆续上线 Service Mesh、Serverless 等相干课程。
在第一期公开课中,咱们首先将课程分为两局部——基础知识局部和进阶常识局部,总共有 17 个知识点。
- 首先,咱们心愿通过第一局部的课程解说帮忙大家夯实根底。而后,对于更高阶的内容开展更深刻的代码级别的分析。心愿通过这样循序渐进的形式帮忙大家学习云原生技术;
- 其次,在每个课程前面咱们的讲师都会设置对应的课后自测考试题,这些考试题实际上是对本节课程最无效的演绎,咱们心愿可能通过课后评测的形式来帮忙大家总结知识点,打造出属于本人的云原生常识体系;
- 最初,咱们的讲师在每个知识点的背地都设计了云端实际,所谓“实际出真知”,学习计算机相关的常识还是须要上手来理论地进行操作才能够。因而在云端实际局部,讲师会提供具体的实际步骤供大家课后自我分割。并且在这个环节,阿里云还会赠送了定量的阿里云代金券帮忙大家更好地在云上进行实际。
以上三个局部就形成了阿里云和 CNCF 联合推出的云原生技术公开课的教学内容。
公开课授课打算(第一期)
在授课打算方面,初步这样安顿:第一堂课在 2019 年 4 月的第三周上线,尔后将会每周更新一课,对于局部比拟重要的知识点将会每周更新两次,总共 25 个课时。每个知识点前面都提供了课后自测和云端实际。
对于讲师阵容而言,也是本次公开课最引以为傲的局部。咱们的公开课将会次要由 CNCF 社区资深成员与我的项目维护者为大家解说,很多课程讲师都是阿里云容器平台团队的专家级工程师。同时,咱们也会邀请云原生社区的资深专家和内部讲师为大家解说局部内容。因而在课程进行过程中,咱们会不定期地安顿大咖直播、课程答疑和落地实际案例。
咱们心愿将这些内容都集成在一起,为大家出现一个中国最残缺、最权威、最具备影响力的云原生技术公开课。
课程准备常识
大家可能存在这样的纳闷,就是想要学习云原生基础知识之前须要哪些准备常识呢?其实大抵须要三局部准备常识:
- Linux 操作系统常识 :次要是一些通识性的根底,最好具备肯定的在 Linux 下开发的教训;
- 计算机和程序设计的根底:这一点到入门工程师或者高年级本科生程度就足够了;
- 容器的应用根底 :心愿大家具备容器的简略应用教训,比方 docker run 以及 docker build 等,最好有肯定 Docker 化利用开发的教训。当然,咱们在课程中也会解说相干的基础知识。
三、什么是“云原生”?云原生该怎么落地?
在介绍完课程之后,咱们再来具体的聊一聊“云原生”:什么是“云原生”?云原生该怎么落地?这两个问题也是整个课程的核心内容。
云原生的定义
很多人都会问“到底什么是云原生?”
实际上,云原生是一条最佳门路或者最佳实际。更具体的说, 云原生为用户指定了一条低心智累赘的、麻利的、可能以可扩大、可复制的形式最大化地利用云的能力、施展云的价值的最佳门路。
因而,云原生其实是一套领导进行软件架构设计的思维。依照这样的思维而设计进去的软件:首先,人造就“生在云上,长在云上”;其次,可能最大化地施展云的能力,使得咱们开发的软件和“云”可能人造地集成在一起,施展出“云”的最大价值。
所以,云原生的最大价值和愿景,就是认为将来的软件,会从诞生起就成长在云上,并且遵循一种新的软件开发、公布和运维模式,从而使得软件可能最大化地施展云的能力。说到了这里,大家能够思考一下为什么容器技术具备革命性?
其实,容器技术和集装箱技术的革命性十分相似,即:容器技术使得利用具备了一种“自蕴含”的定义形式。所以,这样的利用能力以麻利的、以可扩大可复制的形式公布在云上,施展出云的能力。这也就是容器技术对云施展出的革命性影响所在,所以说,容器技术正是云原生技术的外围底盘。
云原生的技术领域
云原生的技术领域包含了以下几个方面:
- 第一局部是云利用定义与开发流程。这包含利用定义与镜像制作、配置 CI/CD、音讯和 Streaming 以及数据库等。
- 第二局部是云利用的编排与治理流程。这也是 Kubernetes 比拟关注的一部分,包含了利用编排与调度、服务发现治理、近程调用、API 网关以及 Service Mesh。
- 第三局部是监控与可观测性。这部分所强调的是云上利用如何进行监控、日志收集、Tracing 以及在云上如何实现破坏性测试,也就是混沌工程的概念。
- 第四局部就是云原生的底层技术,比方容器运行时、云原生存储技术、云原生网络技术等。
- 第五局部是云原生工具集,在后面的这些核心技术点之上,还有很多配套的生态或者周边的工具须要应用,比方流程自动化与配置管理、容器镜像仓库、云原生平安技术以及云端明码治理等。
- 最初则是 Serverless。Serverless 是一种 PaaS 的非凡状态,它定义了一种更为“极其形象”的利用编写形式,蕴含了 FaaS 和 BaaS 这样的概念。而无论是 FaaS 还是 BaaS,其最为典型的特点就是按理论应用计费(Pay as you go),因而 Serverless 计费也是重要的常识和概念。
云原生思维的两个实践
在理解完云原生的技术领域之后你就会发现,其所蕴含的技术内容还是很多的,然而这些内容的技术实质却是相似的。云原生技术的实质是两个实践根底。
- 第一个实践根底是:不可变基础设施 。这一点目前是通过容器镜像来实现的,其含意就是利用的基础设施应该是不可变的,是一个自蕴含、自描述能够齐全在不同环境中迁徙的货色;
- 第二个实践根底就是:云利用编排实践 。以后的实现形式就是 Google 所提出来的“容器设计模式”,这也是本系列课程中的 Kubernetes 局部所需次要解说的内容。
基础设施向云演进的过程
首先为大家介绍一下“不可变基础设施”的概念。其实,利用所依赖的基础设施也在经验一个向云演进的过程,举例而言,对于传统的利用基础设施而言,其实往往是可变的。
大家可能常常会干这样一件事件,比方须要公布或者更新一个软件,那么流程大抵是这样的,先通过 SSH 连到服务器,而后手动降级或者降级软件包,一一调整服务器上的配置文件,并且将新代码间接都部署到现有服务器上。因而,这套基础设施会一直地被调整和批改。
然而在云上,对“云”敌对的利用基础设施是不可变的。
这种场景下的上述更新过程会这么做:一旦利用部署实现之后,那么这套利用基础设施就不会再批改了。如果须要更新,那么须要现更改公共镜像来构建新服务间接替换旧服务。而咱们之所以可能实现间接替换,就是因为容器提供了自蕴含的环境(蕴含利用运行所需的所有依赖)。所以对于利用而言,齐全不须要关怀容器产生了什么变动,只须要把容器镜像自身批改掉就能够了。因而,对于云敌对的基础设施是随时能够替换和更换的,这就是因为容器具备麻利和一致性的能力,也就是云时代的利用基础设施。
所以,总结而言,云时代的基础设施就像是能够代替的“牲口”,能够随时替换;而传统的基础设施则是举世无双的“宠物”,须要仔细呵护,这就体现出了云时代不可变基础设施的长处。
基础设施向云演进的意义
所以,像这样的基础设施向“不可变”演进的过程,为咱们提供了两个十分重要的长处。
- 1、基础设施的一致性和可靠性。同样一个镜像,无论是在美国关上,在中国关上,还是在印度关上都是一样的。并且其中的 OS 环境对于利用而言都是统一的。而对于利用而言,它就不须要关怀容器跑在哪里,这就是基础设施一致性十分重要的一个特色。
- 2、这样的镜像自身就是自蕴含的,其蕴含了利用运行所须要的所有依赖,因而也能够漂移到云上的任何一个地位。
此外,云原生的基础设施还提供了简略、可预测的部署和运维能力。因为当初有了镜像,利用还是自描述的,通过镜像运行起来的整个容器其实能够像 Kubernetes 的 Operator 技术一样将其做成自运维的,所以整个利用自身都是自蕴含的行为,使得其可能迁徙到云上任何一个地位。这也使得整个流程的自动化变得非常容易。
利用自身也能够更好地扩容,从 1 个实例变成 100 个实例,进而变成 1 万个实例,这个过程对于容器化后的利用没有任何非凡的。最初,咱们这时也可能通过不可变的基础设施来地疾速四周的管控零碎和撑持组件。因为,这些组件自身也是容器化的,是合乎不可变基础设施这样一套实践的组件。
以上就是不可变基础设施为用户带来的最大的长处。
云原生关键技术点
当咱们回过头来看云原生关键技术点或者说它所依赖的技术实践的时候,能够看到次要有这样的四个方向:
- 如何构建自蕴含、可定制的利用镜像;
- 能不能实现利用疾速部署与隔离能力;
- 利用基础设施创立和销毁的自动化治理;
- 可复制的管控零碎和撑持组件。
这四个云原生关键技术点是落地实现云原生技术的四个次要路径,而这四个技术点也是本门课程的 17 个技术点所次要讲述的外围常识。
本节总结
- “云原生”具备着重要的意义,它是云时代技术人自我晋升的必备门路;
- “云原生”定义了一条云时代利用从开发到交付的最佳门路;
- “云原生”利用生在云上,长在云上,心愿可能将云的能力施展到极致。
讲师点评:
“将来的软件肯定是成长于云上的”这是云原生理念的最外围假如。而所谓“云原生”,实际上就是在定义一条可能让利用最大水平利用云的能力、施展云的价值的最佳门路。在这条门路上,脱离了“利用”这个载体,“云原生”就无从谈起;容器技术,则是将这个理念落地、将软件交付的反动继续进行上来的重要伎俩之一。
而本期云原生公开课重点解说的 Kubernetes 我的项目,则是整个“云原生”理念落地的外围与关键所在。它正在迅速成为连通“云”与“利用”的高速公路,以规范、高效的形式将“利用”疾速交付到世界上任何一个地位。现在”云原生利用交付“,曾经成为了 2019 年云计算市场上最热门的技术关键词之一。心愿学习课程的同学们可能学以致用,继续关注以 K8s 为根底进行“云原生利用治理与交付”的技术趋势。