用类比在 10 分钟内解释 Kubernetes

不理解 Kubernetes? 试试用租赁房屋的类比来解释它的工作原理。
106 位读者喜欢这个。
Houses in a row

27707 via Pixabay, CC0。由 Jen Wike Huger 修改。

Kubernetes 容器编排系统背后的概念可能难以理解。我创建了一个关于出租房屋房间的简单类比,以帮助您了解 Kubernetes 的工作原理。

如何在您的房子里出租房间

假设您拥有一栋有 10 个房间的房子。您想通过在线住宿服务出租其中的三个房间。您有两个选择:您可以自己发布广告并管理一切,或者您可以聘请某人为您做这件事。

因为这对您来说更简单,所以您决定聘请一位租赁代理来处理这些事情。 您与代理签订的合同规定

  • 在任何时候,都应有三个房间可供客人租用。
  • 每个房间都将有两张床
  • 每次客人预订时,都需要在正确的时间交出钥匙。
  • 每次客人离开时,房间都必须打扫干净。
  • 如果预订请求过多(例如在假期期间),则预订可用性可以从三个增加到十个。

就是这样!您的责任基本结束了,尽管您可以使用电话不时联系代理进行查询。

如何管理租赁物业

代理聘请员工来处理您的要求。假设有三名员工管理三个房间:当房间一被预订时,员工一确保房间状况良好,提供钥匙、清洁服务等等。

床是最基本的实体,因为它是客人过夜所需的最基本要求。

代理将有关员工、房间、床、预订等的所有信息都保存在笔记本中。代理还会跟踪员工的休假时间,以便在一名员工生病或休假时将另一名员工分配到房间。代理使用电话在需要时联系员工。

当客人在线预订房间时,预订会被重定向到其中一名员工,该员工确保房间已准备就绪。客人到达,拿到钥匙,晚上睡在床上。之后房间会被打扫干净,然后循环重复。

这一切听起来都很简单,但这与 Kubernetes 有什么关系呢?

Kubernetes 与此有何关系

您通过聘请代理(由代理雇用其他人)实现的自动化类似于 Kubernetes 对应用程序所做的事情。以下是它的工作原理。

假设您是一名应用程序开发人员,而不是出租房屋的所有者。正如租赁房间中最基本的实体是床一样,您的应用程序(满足用户需求的最基本实体)在容器内运行。应用程序的“房间”称为 pod,您的应用程序就在其中运行。

节点工作节点本质上是一台 pod 在其中运行的机器。

代理的员工确保客房功能齐全。在 Kubernetes 中,您没有员工,但有一种称为 kubelet 的东西。 Kubelet 是节点内部的代理,可确保在该节点内部运行的 pod 处于健康状态。

租赁代理对应于 Kubernetes 中的两件事:kube-schedulerkube-controller manager。正如代理决定哪个房间应分配给哪个员工一样,kube-scheduler 根据可用资源及其要求,决定哪个 pod 在哪个节点中运行。 请记住,节点是一台机器,而 pod 在节点内部运行。 就像代理决定在员工休假时该怎么做一样,kube-controller manager 决定在节点宕机或机器因任何原因停止工作时该怎么做。

代理的笔记本,其中记录了有关要出租多少房间、有多少床位可用、哪个员工在做什么等等的所有详细信息,对应于 etcd 数据存储。 这就是配置数据存储的位置,例如,如果您需要始终启动并运行三个 pod。

Kubernetes 中的主节点和工作节点就像代理和员工用来沟通的电话。 主 api-server 就像代理的电话,而每个工作节点的 kube-proxy 就像员工的电话。

api-server、etcd、kube-controller manager 和 kube-scheduler 构成了此 Kubernetes 实例的某种控制中心。

部署

您(房主)与代理之间的合同等同于 Kubernetes 中的部署。 部署包括您的一组要求,例如需要运行多少个 pod,您需要什么资源(例如 CPU)等等。 Kubernetes 确保在无需人工干预的情况下满足这些要求。

还记得协议中关于如果预订客人过多该怎么办的额外条款吗? 这相当于 Kubernetes 中的自动扩缩。 这意味着 Kubernetes 可以扩展您的服务,随着您的应用程序用户增加而为您提供更多 pod,就像如果有更多客人尝试预订,您可以提供更多房间一样。 正如您不能将预订扩展到 10 个房间以上一样,您可能需要在自动扩缩上添加上限,因为您不能在不耗尽托管服务器资金的情况下任意继续增加 pod。

了解更多

关于 Kubernetes 工作原理的简短类比是初学者入门的好地方。要了解更多信息,您可能还会喜欢我的 Kubernetes 视频


本文基于 Kubernetes: The Simplest Introduction for a Non-Programmer,最初发表在 Tennexas 博客上,经许可重复使用。

接下来阅读什么
标签
Satyajit Das
我目前是一名软件工程师,常驻英国剑桥。我主要使用 Golang 和少量 React。我的工作还包括 Kubernetes、Docker、gRPC、Elastic、RabbitMQ 等技术。

6 条评论

嗯,这确实让理解 Kubernetes 的组件变得更容易了。
仍然困扰我的是,我没有完全理解 Kubernetes 及其所有构建在其之上的东西的用例或真实世界场景。通常我会建立一个实验室并尝试一切; 但在这里我不知道要部署什么。

maxim,这是一个很好的问题。我认为 Kubernetes 有时会受到如此多的关注,以至于人们忘记问“为什么”。记住 Kubernetes 是一个容器编排器可能会有所帮助,这意味着它的工作是帮助您管理容器。

这意味着您可以将任何东西放入容器中,都可以在 Kubernetes 集群上运行。 无论是 Web 服务器、论坛软件、还是精美的 Web 应用程序,还是您见过的任何提供 Docker 安装的东西。 这是对如何向网络提供服务的重新调整,但是一旦您开始查看可以容器化的内容,您就会开始看到可以在 Kubernetes 上运行的各种东西。

您是否真的*需要*它是另一个问题。 大多数家庭用户可能没有对 Kubernetes 的迫切需求。 但是,那些渴望从事 IT 职业的人可以通过运行集群来学习 Kubernetes 而受益,而那些为家人和朋友提供服务的人可以从容器和 Kubectl 等中受益。

回复 作者 maxm

嘿 Seth,谢谢你的回复!
也许我应该从家里开始看看会怎么样; 目前我所有的服务都是虚拟化的,但其中一些肯定可以在容器内运行。

回复 作者 sethkenlon

Seth 感谢您的解释。一个很好的例子,说明了为什么需要将某些东西放入容器中,就是一个服务,该服务将收到许多用户的请求,并且有时需要扩展或多次重复使用。在这种情况下,您的需求是扩展或重用该服务.. 在这种情况下,将该服务放入容器中是有意义的!

回复 作者 sethkenlon

我使用开源 BI 工具 Helical Insight,它在工作流程、数据库驱动程序支持、使用 JS 添加自己的可视化以及大量 API 方面提供了更多功能。
www.helicalinsight.com

我想在我的电脑上下载 kubernetes 或 dockers,以便访问我的数据以进行工作

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.