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:非程序员最简单的介绍,最初发布在 Tennexas 博客上,并经许可重复使用。
6 条评论