1.1 Kubernetes的背景
Kubernetes是一个应用编排器(orchestrator),主要用于对容器化的云原生微服务应用进行编排。对于这一定义读者可能会感觉技术术语太多了!
随着对Kubernetes的了解和使用,这些术语都会遇到,下面就花少量的篇幅进行简要的介绍。
1.1.1 编排器
编排器是一套部署和管理应用程序的系统。它能够部署应用,并动态地响应变化。例如,Kubernetes包括但不仅限于以下功能。
●部署应用程序。
●根据需要动态扩缩容。
●当出现故障时自愈。
●进行不停机的滚动升级和回滚。
Kubernetes最突出的优点是,它可以在无须人工干预决策的情况下自动完成以上所有任务。显然,这需要用户在最初进行一些配置,一旦完成配置,就可以一劳永逸地放心交给Kubernetes了。
1.1.2 容器化应用
所谓容器化应用就是运行在容器中的应用。
在容器技术出现之前,应用程序可以运行在物理机或虚拟机中。容器是关于应用打包和运行方式的新的迭代,它更加快速、轻量,也比服务器或虚拟机更加适合现代的业务需求。
可以这样想。
●在开放系统(open-system)时代(大约20世纪80年代和20世纪90年代),应用运行在物理机上。
●在虚拟机时代(大约2000—2010年),应用运行在虚拟机中。
●在云原生(cloud-native)时代(如今),应用运行在容器中。
同时,Kubernetes也可以编排其他负载类型,包括虚拟机和serverless功能(serverless function),不过最普遍的情况是用于容器的编排。
1.1.3 云原生应用
所谓云原生应用,是指被设计用来满足现代业务需求(自动扩缩容、故障自愈、滚动升级等)并且运行在Kubernetes之上的应用。
我认为有必要澄清一点,那就是云原生应用并非只能运行在公有云上。当然,它们可以运行在公有云上,不过也可以运行在其他任何Kubernetes平台之上,甚至包括自建数据中心。
1.1.4 微服务应用
一个微服务应用,是指由许多小而专的服务组件,通过互相通信而组成的一套完整的业务系统。以一个电子商务系统为例,它可能由以下功能独立的微服务组成。
●Web前端。
●分类服务。
●购物车。
●授权服务。
●日志服务。
●持久化存储。
每一个单独的服务都可被称为一个微服务。通常,每个微服务都可以由不同的团队负责研发和运维,可以拥有自己的发布节奏,并且独自进行扩缩容。例如,可以在不影响其他组件的情况下,为日志服务打补丁或扩容。
这种构建方式正是云原生应用的一个很重要的特点。
通过以上的介绍,我们再来回顾一下前面那个由各种晦涩难懂的术语组成的定义。
Kubernetes可用于部署和管理(编排)那些能够以容器的形式打包和运行(容器化)的应用,这些应用的构建方式(云原生微服务)使它们能够根据业务需求实现扩缩容、故障自愈和在线升级。
以上这些概念将会贯穿本书,相信通过目前的介绍,读者可以对相关的术语具备一定的了解。