2.1 什么是容器云

在第1章我们学习了Docker的一些知识,从本章开始,我们将一起学习Kubernetes的系列知识。Kubernetes的出现让Docker实例得以规范地管理和调度,让容器云的实现迈出了重要的一步。

2.1.1 当前云计算的发展

关于当前云计算的发展,网上有很多文章做了足够详细的阐述。我列出了3篇较新、较全的文章,大家可以看看。阅读完之后,我想你对当前云计算的发展历史和态势都会有很清晰的认识:“2018云计算行业现状及2020年云计算发展趋势”(https://www.sohu.com/a/270709930_100299669)、“2018年中国云计算行业发展现状分析及未来发展趋势预测”(https://www.chyxx.com/industry/201803/619747.html)和“2018年全球云计算行业现状与发展前景分析”(https://www.qianzhan.com/analyst/detail/220/180420-3395a414.html)。

从云计算的发展历程来看,国内和国外有一点不同。云计算的概念在2000年起源于美国,2007年被引入国内。国外的云计算基本是由企业牵头来做推广普及的,我国引入云计算概念后,基本是从政府、政策两大方面来驱动的。2017年的政府工作报告中,也提出了把发展智能制造作为主攻方向,推动“中国制造2025”战略落地,云计算是其中最基础最重要的核心技术之一。

从技术层面来看,云计算基本是按照“虚拟化、网络化、分布式技术成熟稳定→IaaS成熟稳定→PaaS成熟稳定→SaaS成熟稳定”这条路线发展的。每个阶段都有业界开源或者非开源的技术为代表,比如最开始的虚拟化阶段,典型的代表是Xen、vSphere、KVM等技术,IaaS层是OpenStack,PaaS层是Kubernetes,SaaS层开源界还没有典型的代表。

随着未来物联网、5G、IPv6的全面实行,量子计算等技术的全面发展和普及,云计算将是最底层的核心支撑技术。而这些技术的发展,必然也会带动和升级云计算。对于个人来说,这是一门值得IT从业者关注和学习的技术。

2.1.2 什么是IaaS、PaaS和SaaS

上文我们提到了IaaS、PaaS和SaaS这几个词,只要你关注过云计算,对这几个词就不会陌生。那么什么是IaaS、PaaS和SaaS呢?

我们知道TCP/IP有7层协议,协议的出现和规定就是为了统一标准,这样无论是开发者、使用者还是网络设备厂商,都能按照公认的协议来学习和生产。

云计算虽然没有类似TCP/IP这样的协议,但是公认把云计算分为3个层级,这3个层级就是IaaS、PaaS和SaaS。下面结合维基百科的定义对这3个层级进行讲解。

1.基础架构即服务(IaaS)

提供在线的高级API服务,底层基础架构细节都不会向上体现,比如服务器位置,网络布线,数据分区、扩展、备份、安全性等。底层的计算、网络、存储等资源都将通过虚拟化技术实现整体管理和配置,这些虚拟化技术有Xen、KVM、VMware ESX/ESXi、Hyper-V、Ceph、SDN等。

IaaS是将传统的计算、网络、存储资源全部虚拟化,之前用户需要直接管理服务器、交换机、存储,虚拟化之后用户只需要在电脑上操作虚拟化管理平台,管理这些硬件虚拟出来的VM、虚拟交换机、路由器和存储池。

2.平台即服务或应用程序平台即服务(PaaS)

这是云计算服务的一种,它提供了一个平台,允许用户在这个平台上开发、运行和管理应用程序,无须考虑应用程序的构建和维护工作。

PaaS是建立在完善的IaaS之上的,用户只关心如何使用平台给予的资源,完全不用考虑这些资源的创建和维护。

3.软件即服务(SaaS)

这是一种软件交付模式,在这种交付模式下,云端集中式托管软件及其相关的数据,用户无须安装,使用精简客户端通过一个网页浏览器便可使用软件。

传统的软件,无论是BS架构还是CS架构,SaaS供应商都能够提供,比如腾讯的Web QQ也算是一种SaaS级服务。用户只需要使用SaaS提供的成熟级的软件应用,数据存储、软件维护、安全等其他一切事情都交给云厂商处理和负责。

上面是关于IaaS、PaaS和SaaS概念的讲解,下面我们通过图2-1来进一步加深理解。

图2-1 IaaS、PaaS和SaaS三层架构

图中深色的部分代表IT人员需要关心的部分,浅色部分是云计算层级负责的部分(IaaS、PaaS、SaaS分别包含的领域)。自下往上看,Networking即网络、Storage即存储、Servers即服务器、Virtualization即虚拟化、O/S(Operation System)即操作系统、Middleware即中间件、Runtime即运行时、Data即数据、Applications即应用。

从左至右的第一张图,是云计算出现之前IT建设需要负责的部分。下到机房选址、服务器上架、网络布线,上到系统安装、应用部署、数据维护,通通需要IT负责,这是一个原始的IT管理时代。

第二张图,随着虚拟化、云计算的出现,底层计算、网络、存储硬件层的工作全部“封装”交由云厂商负责(如果是自建私有云,此处可以理解为交给云管理平台完成封装)。

第三张图,随着IaaS层的稳定和完善,用户也不用费心虚拟机、中间件、运行时等工作的管理,这些也打包交给云厂商或者某云管理平台负责。

第四张图,云计算的终极形态,云厂商负责一切IT事物,用户能放心大胆地通过互联网随意调用想用的IT服务。

当然,如果你对上面的讲解还不明白,可以看看图2-2,其中用“做包子”为例讲解了IaaS、PaaS和SaaS。

假如有个创业者想开一家包子店,如果他用第一种方式,最底层的燃气管道、煤气灶、锅等都要自己准备;如果不想那么麻烦,可以试试第二种,只有面粉、捏包子的工作需要自己完成;如果还嫌麻烦,可以加入某品牌连锁店,大量购入做好的速冻包子(没那么新鲜);最后一种,总店每天早上供应最新鲜的包子,创业者只管卖包子就好。

图2-2 做包子模型(IaaS、PaaS、SaaS)

2.1.3 容器云介绍

上面的长篇大论是为了引出本章的正题—Kubernetes,它是PaaS层级的典型代表。我们先来了解相关知识背景,以便更好地理解和使用这项技术。

1.容器技术为什么会火

自2007年国内引进云计算概念至今,在这13年中,兴起众多云厂商。而前面6年都是在做IaaS层的建设,概念宣传、私有云落地、企业上公有云,每一年都突飞猛进。6年过去了,IaaS建设还在不断完善,与此同时PaaS层技术概念逐渐兴起。2010年国外Cloud Foundry、Coreos和Docker容器技术纷纷落地,给云计算指明了一个新方向。随后两三年,国内开始引进这些技术,IT从业者也在不断学习,寻找比IaaS更完美的云计算管理方案。

2016年开始,Docker、Kubernetes等技术越来越火。之前IaaS层的建设大部分都是运维人员参与,开发人员只负责写代码,并不参与底层运维管理。随着容器技术的出现,开发人员和运维人员很自然地走到了一起,有了融合。这也是Docker和Kubernetes受欢迎的原因之一,支撑PaaS层级的人员比支撑IaaS的至少增加了一倍(甚至更多)。

2.容器云时代是否来临

我们可以把容器云理解为云上的容器技术服务,这个概念的终极体现就是PaaS层的云交付模式。前面谈到,Docker、Kubernetes的应用推动着云计算PaaS层的完善和普及。站在云厂商的角度,前几年客户不断来上云、用云,其实就是在体验IaaS。随着技术的革新,自然会考虑云厂商的PaaS、SaaS层级产品。所以,如果问容器云时代是否来临,答案是在2017年已经到来。

3.容器云是否会取代传统云

互联网技术人员大多都会关注Gartner公司发布的数据。这是一家做信息技术研究和分析的公司,他们发布的IT技术信息报告和数据分析都非常权威可信。所以,参考Gartner提供的相关分析报告,可以了解一项热门技术的发展趋势。

Gartner公司已列出了2019年及以后平台即服务(PaaS)技术和平台架构的四大趋势。其中前面两个趋势很明确地体现出PaaS市场的发展势头和重要程度,我们单独看看这两个趋势。

(1)第一个趋势:蓬勃发展的PaaS市场

截至2019年,PaaS市场已包含360多家供应商,提供涉及21个类别的550多种云平台服务。Gartner预计,到2022年,PaaS市场规模将翻番,PaaS将成为未来的主流平台交付模式。

(2)第二个趋势:云平台连续体

IaaS、PaaS和SaaS服务共同构成了云平台连续体,在全部云服务当中寻找和确认基于平台的创新机会,这种模式将很快成为云战略的一部分[1]

回到正题,传统云可以理解为单纯提供IaaS技术层面服务的云,所以使用PaaS肯定比IaaS方便。

通过本节的学习,我们对云计算的发展状态及3层架构有了更加深入的了解,同时对容器云平台也有了更加深刻的认识。如今PaaS平台已经很普及了,Kubernetes已是PaaS技术的主流,接下来我们一起学习Kubernetes。

[1] 参考链接:https://www.gartner.com/en/newsroom/press-releases/2019-04-29-gartner-identifies-key-trends-inpaas-and-platform-ar。