Kubernetes实战(第二版)----第1章 Kubernetes简介

关注公众号:登峰大数据,阅读Kubernetes实战(第二版)(完整中文版),系统学习Kubernetes!

Kubernetes实战(第二版)----第1章 Kubernetes简介

本章涵盖了

  • Kubernetes简介和起源

  • 为什么Kubernetes被如此广泛地采用

  • Kubernetes如何改变数据中心

  • Kubernetes体系结构和操作概述

  • 如何以及是否应该将Kubernetes集成到你的公司中

在了解使用Kubernetes运行应用程序的细节之前,必须首先对Kubernetes设计用来解决的问题、它是如何产生的以及它对应用程序开发和部署的影响有一个基本的了解。第一章是对这些主题的一个概述。

1.1 Kubernetes简介

Kubernetes这个词在希腊语中是领航员或舵手的意思,指的是掌舵的人。舵手不一定和船长一样。船长对船负责,舵手是掌舵的人。

在了解了更多Kubernetes的工作后,你会发现这个名字非常合适。舵手负责维持船的航向,执行船长下达的命令,并报告船的航向。Kubernetes控制你的应用程序并报告它们的状态,而你——船长——决定你想要的系统去哪里。

KUBERNETES怎么发音,K8S是什么?

Kubernetes的正确希腊发音是Kie-ver-nee-tees,与你通常在技术对话中听到的英语发音不同。最常见的是koober-netties或koober-nay-tace,但你也可能听到koober-nets,尽管很少听到。

在书面和口头对话中,它也被称为Kube或K8s,发音为Kates,其中8表示省略在第一个和最后一个字母之间的字母数量。

1.1.1  Kubernetes概述

Kubernetes是一个软件系统,用于自动化部署和管理由运行在容器中的计算机进程组成的复杂、大规模应用程序系统。让我们来学习它是怎么做的。

抽象基础设施

当软件开发人员或操作人员决定部署应用程序时,他们通过Kubernetes来完成,而不是将应用程序部署到单个计算机上。Kubernetes在底层硬件上为用户和应用程序提供了一个抽象层。

正如您在下图中看到的,底层基础设施(即计算机、网络和其他组件)对应用程序是隐藏的,这使得开发和配置它们更加容易。

Kubernetes实战(第二版)----第1章 Kubernetes简介

图1.1 使用Kubernetes的基础设施抽象

标准化部署应用程序的方式

由于底层基础设施的细节不再影响应用程序的部署,所以将应用程序部署到企业数据中心的方式与在云中的方式相同。描述应用程序的单一清单可用于本地部署和在任何云提供商上部署。底层基础设施中的所有差异都由Kubernetes处理,因此可以将重点放在应用程序及其包含的业务逻辑上。

部署应用程序声明

Kubernetes使用声明式模型定义应用程序,如下图所示。您描述组成应用程序的组件,Kubernetes将此描述转换为运行中的应用程序。然后,根据需要重新启动或重新创建应用程序的某些部分,从而保持应用程序正常运行。

Kubernetes实战(第二版)----第1章 Kubernetes简介

图1.2 应用程序部署的声明模型

每当更改描述信息时,Kubernetes将采取必要的步骤重新配置正在运行的应用程序,以匹配新的描述信息,如下图所示。

Kubernetes实战(第二版)----第1章 Kubernetes简介

图1.3 描述信息的变化反映在运行的应用程序中

负责应用程序的日常管理

一旦将应用程序部署到Kubernetes,它就会接管应用程序的日常管理。如果应用程序失败,Kubernetes将自动重新启动它。如果硬件出现故障或基础结构拓扑发生了变化,需要将应用程序移动到其他机器上,那么Kubernetes会自己完成这一切。负责操作系统的工程师可以专注于大局,而不是在细节上浪费时间。

回到航海的类比:开发和操作工程师是船上的军官,他们舒适地坐在扶手椅上做出高级决策,而Kubernetes则是舵手,负责在应用程序和基础设施驶过的汹涌波涛中操纵系统的低级任务。

Kubernetes实战(第二版)----第1章 Kubernetes简介

图1.4 Kubernetes接管了应用程序的管理

Kubernetes所做的一切以及它所带来的好处都需要一个更长的解释,我们将在后面讨论。在此之前,先了解它是如何开始的以及Kubernetes项目目前处于什么位置。

1.1.2 关于Kubernetes项目

Kubernetes最初是由谷歌开发的。谷歌实际上总是在容器中运行应用程序。早在2014年,就有报道称他们每周启动20亿个容器。这意味着每秒超过3000个容器,今天这个数字还要高得多。它们在分布在世界各地几十个数据中心的数千台计算机上运行这些容器。现在想象一下手动完成这些工作是个什么情形。很明显,你需要自动化,在如此大规模的规模下,自动化更加完美。

Borg和Omega--Kubernetes的前辈

谷歌工作负载的庞大规模迫使他们开发解决方案,以使数以千计的软件组件的开发和管理具有可管理性和成本效益。多年来,谷歌开发了一个名为Borg的内部系统(后来又开发了一个名为Omega的新系统),帮助应用程序开发人员和运营商管理这数千个应用程序和服务。

除了简化开发和管理之外,这些系统还帮助他们更好地利用基础设施。这在任何组织中都很重要,但当您操作数十万台机器时,即使利用率上的微小改进也意味着节省数百万台机器,因此开发这样一个系统的动机是显而易见的。

注:谷歌的能源使用数据显示,它们运行着大约90万台服务器。

随着时间的推移,基础设施也会增长和发展。每一个新的数据中心都是最先进的。它的基础设施与过去不同。尽管存在差异,但应用程序在一个数据中心中的部署不应与在另一个数据中心中的部署有所不同。

跨多个区域部署应用程序以减少区域故障导致应用程序停机的可能性,这一点尤其重要。为了有效地做到这一点,有必要使用一致的方法部署应用程序。

关于Kubernetes——开源项目——以及由此衍生的商业产品

基于他们在开发Borg、Omega和其他内部系统时获得的经验,谷歌在2014年推出了Kubernetes,一个现在每个人都可以使用并进一步改进的开源项目。

更多内容请关注公众号:

Kubernetes实战(第二版)----第1章 Kubernetes简介