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可用于部署和管理(编排)那些能够以容器的形式打包和运行(容器化)的应用,这些应用的构建方式(云原生微服务)使它们能够根据业务需求实现扩缩容、故障自愈和在线升级。

以上这些概念将会贯穿本书,相信通过目前的介绍,读者可以对相关的术语具备一定的了解。