通过kubectl命令创建的ReplicaSet复制集会在多个组件上触发复杂的事件消息链,如图所示。
(1)使用kubectl工具向API服务器发送指令来创建一个新的复制集。API服务器将这个新资源保存到etcd中。
(2)控制管理器监视复制集的创建和修改,收到一个关于新的复制集被创建的通知。
(3)控制管理器将集群当前的状态与新的状态进行比较,判断出是否需要创建新的pod。它会根据提供给kubectl工具的模板来通过API服务器创建这些pod资源。
(4)调度器接收到新pod创建的通知,并将其分配给合适的节点,然后通过API服务器更新pod的定义。此时,还没有运行任何真正的应用——控制器和调度器只是更新了API服务器所存储的状态。
(5)一旦pod被分配给某个节点,API服务器就会通知对应的Kubelet,然后Kubelet就会指示Docker运行容器。下载镜像和容器启动后,Kubelet开始监控它们的运行情况。这时,pod才真正运行起来。
尽管每个组件独立运行,但放到一起,它们就可以编排完成复杂的部署工作。
摘取自 摩根·布鲁斯和保罗·A.佩雷拉的《微服务实战》
网友评论