环球科创网

Kubernetes部署的可视化地图

更新时间:2022-03-12 23:05:41

导读 通过查看创建pod或部署时的10个步骤,您可以更好地理解Kubernetes。当您在Kubernetes上使用容器时,通常会将应用程序组合在一个pod中。当您

通过查看创建pod或部署时的10个步骤,您可以更好地理解Kubernetes。

当您在Kubernetes上使用容器时,通常会将应用程序组合在一个pod中。当您将容器或pod发布到生产环境中时,这称为部署部署。如果你每天甚至每周都使用Kubernetes,你可能已经做了几百次了,但是你有没有想过当你创建一个pod或者一个部署时会发生什么?

我发现在高层次上理解事件链是有帮助的。当然,你不一定要懂。即使你不知道为什么,它仍然有效。我不会列出发生的每一件小事,但我的目标是涵盖所有重要的事情。

这是Kubernetes不同组件如何交互的可视化地图。

你可能注意到了,上图中,我没有包括etcd。API服务器是唯一可以直接与etcd对话的组件,并且只有它可以修改etcd。所以你可以认为这张图中etcd存在于(隐藏的)API服务器背后。

另外,我这里只说两个主要的控制器(部署控制器和复制集控制器)。的其他控制器以类似的方式工作。

以下步骤描述了执行kubectl create命令时会发生什么。

第一步

当您使用kubectl create命令时,一个HTTP POST请求被发送到API服务器,其中包含部署清单。API服务器将其存储在etcd数据存储中,并向kubectl返回一个响应。

步骤2和3

API服务器有一个观察机制,所有观察到的客户都会得到通知。客户端通过打开与API服务器的HTTP连接来观察变化,API服务器以流的方式发出通知。其中一个客户端是部署控制器。部署控制器检测一个部署部署对象,该对象使用部署的当前规范创建一个副本集副本集。资源被发送回API服务器并存储在etcd数据存储中。

步骤4和5

与上一步类似,所有观察者都将被通知API服务器中的变化。这一次,副本集控制器将收到这一更改。控制器知道所需的副本数量和对象规范中定义的pod选择器,创建pod资源,并将信息发送回API服务器以存储在etcd数据存储器中。

步骤6和7

Kubernetes现在拥有了运行pod所需的所有信息,但是pod应该在哪个节点上运行呢?调度程序观察尚未分配给节点的pod,并开始对所有节点进行筛选和排序,以选择运行pod的最佳节点。选择节点后,该信息将被添加到pod规范中。并且它被发送回API服务器并存储在etcd数据存储中。

步骤8、9和10

到目前为止,所有步骤都发生在控制平面本身。工作节点工作节点尚未完成任何工作。然而,pod的创建不由控制平面处理。相反,在所有节点上运行的kubelet服务观察API服务器中的pod规范,以确定它是否需要创建任何pod。在调度器所选择的节点上运行的kubelet服务获得pod的规范,并指示工作节点上的容器在运行时创建容器。此时,将会下载一个容器映像(如果它还不存在的话),并且容器将会真正开始运行。

了解Kubernetes的部署

了解这个大致的过程可以帮助你理解Kubernetes的很多事件。考虑一下Kubernetes中的DaemonSet守护进程集或StatefulSet。除了使用不同的控制器之外,pod创建过程是相同的。

课后作业:如果部署被修改为拥有应用程序的三个副本,导致pod创建的事件链会是什么样子?你可以参考图表或列出的步骤,但你必须有你需要找到的知识。知识就是力量,现在你有了理解Kubernetes的重要部分。

免责声明:本文由用户上传,如有侵权请联系删除!