Kubernetes 容器编排系统背后的概念可能难以理解。我创建了一个关于出租房屋房间的简单类比,以帮助您了解 Kubernetes 的工作原理。
如何在您的房子里出租房间
假设您拥有一栋有 10 个房间的房子。您想通过在线住宿服务出租其中的三个房间。您有两个选择:您可以自己发布广告并管理一切,或者您可以聘请某人为您做这件事。
因为这对您来说更简单,所以您决定聘请一位租赁代理来处理这些事情。 您与代理签订的合同规定
- 在任何时候,都应有三个房间可供客人租用。
- 每个房间都将有两张床。
- 每次客人预订时,都需要在正确的时间交出钥匙。
- 每次客人离开时,房间都必须打扫干净。
- 如果预订请求过多(例如在假期期间),则预订可用性可以从三个增加到十个。
就是这样!您的责任基本结束了,尽管您可以使用电话不时联系代理进行查询。
如何管理租赁物业
代理聘请员工来处理您的要求。假设有三名员工管理三个房间:当房间一被预订时,员工一确保房间状况良好,提供钥匙、清洁服务等等。
床是最基本的实体,因为它是客人过夜所需的最基本要求。
代理将有关员工、房间、床、预订等的所有信息都保存在笔记本中。代理还会跟踪员工的休假时间,以便在一名员工生病或休假时将另一名员工分配到房间。代理使用电话在需要时联系员工。
当客人在线预订房间时,预订会被重定向到其中一名员工,该员工确保房间已准备就绪。客人到达,拿到钥匙,晚上睡在床上。之后房间会被打扫干净,然后循环重复。
这一切听起来都很简单,但这与 Kubernetes 有什么关系呢?
Kubernetes 与此有何关系
您通过聘请代理(由代理雇用其他人)实现的自动化类似于 Kubernetes 对应用程序所做的事情。以下是它的工作原理。
假设您是一名应用程序开发人员,而不是出租房屋的所有者。正如租赁房间中最基本的实体是床一样,您的应用程序(满足用户需求的最基本实体)在容器内运行。应用程序的“房间”称为 pod,您的应用程序就在其中运行。

(Satyajit Das,CC BY-SA 4.0)
节点或工作节点本质上是一台 pod 在其中运行的机器。
代理的员工确保客房功能齐全。在 Kubernetes 中,您没有员工,但有一种称为 kubelet 的东西。 Kubelet 是节点内部的代理,可确保在该节点内部运行的 pod 处于健康状态。

(Satyajit Das,CC BY-SA 4.0)
租赁代理对应于 Kubernetes 中的两件事:kube-scheduler 和 kube-controller manager。正如代理决定哪个房间应分配给哪个员工一样,kube-scheduler 根据可用资源及其要求,决定哪个 pod 在哪个节点中运行。 请记住,节点是一台机器,而 pod 在节点内部运行。 就像代理决定在员工休假时该怎么做一样,kube-controller manager 决定在节点宕机或机器因任何原因停止工作时该怎么做。
代理的笔记本,其中记录了有关要出租多少房间、有多少床位可用、哪个员工在做什么等等的所有详细信息,对应于 etcd 数据存储。 这就是配置数据存储的位置,例如,如果您需要始终启动并运行三个 pod。

(Satyajit Das,CC BY-SA 4.0)
Kubernetes 中的主节点和工作节点就像代理和员工用来沟通的电话。 主 api-server 就像代理的电话,而每个工作节点的 kube-proxy 就像员工的电话。

(Satyajit Das,CC BY-SA 4.0)
api-server、etcd、kube-controller manager 和 kube-scheduler 构成了此 Kubernetes 实例的某种控制中心。

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

(Satyajit Das,CC BY-SA 4.0)
还记得协议中关于如果预订客人过多该怎么办的额外条款吗? 这相当于 Kubernetes 中的自动扩缩。 这意味着 Kubernetes 可以扩展您的服务,随着您的应用程序用户增加而为您提供更多 pod,就像如果有更多客人尝试预订,您可以提供更多房间一样。 正如您不能将预订扩展到 10 个房间以上一样,您可能需要在自动扩缩上添加上限,因为您不能在不耗尽托管服务器资金的情况下任意继续增加 pod。
了解更多
关于 Kubernetes 工作原理的简短类比是初学者入门的好地方。要了解更多信息,您可能还会喜欢我的 Kubernetes 视频。
本文基于 Kubernetes: The Simplest Introduction for a Non-Programmer,最初发表在 Tennexas 博客上,经许可重复使用。
6 条评论