用类比在 10 分钟内解释 Kubernetes

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

27707 通过 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:非程序员最简单的介绍,最初发布在 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.