KUBERNETES01_部署方式的变迁、为什么用Kubernetes、工作原理、组件交互原理、动画演示(四)

⑨. 程序员:调用CLI(命令行)告诉master,我们现在要部署一个tomcat应用步骤如下: 掌握


程序员的所有调用都先去master节点的网关api-server。这是matser的唯一入口(mvc模式中的c层)


收到的请求先交给master的api-server。由api-server交给controller-mannager进行控制


controller-mannager进行应用部署


controller-mannager会生成一次部署信息。 tomcat --image:tomcat6 --port 8080,真正不部署应用


部署信息被记录在etcd中


scheduler调度器从etcd数据库中,拿到要部署的应用,开始调度。看哪个节点合适

scheduler把算出来的调度信息再放到etcd中


每一个node节点的监控kubelet,随时和master保持联系的(给api-server发送请求不断获取最新数据),所有节点的kubelet就会从master


假设node2的kubelet最终收到了命令,要部署。其他的node节点也会收到命令,但是node2最终部署,所以其他node节点丢弃这次部署的操作


kubelet就自己run一个应用在当前机器上,随时给master汇报当前应用的状态信息,分配ip

node和master是通过master的api-server联系的


每一个机器上的kube-proxy能知道集群的所有网络。只要node访问别人或者别人访问node,node上的kube-proxy网络代理自动计算进行流量转发


KUBERNETES01_部署方式的变迁、为什么用Kubernetes、工作原理、组件交互原理、动画演示(四)


⑤. 部署组件交互原理


想让k8s部署一个tomcat?


0开机默认所有节点的kubelet、master节点的scheduler(调度器)、controller-manager(控制管理器)一直监听master的api-server发来的事件变化(while)


1.程序员使用命令行工具:kubectl

kubectl create deploy tomcat --image=tomcat8(告诉master让集群使用tomcat8镜像,部署一个tomcat应用)


2.kubectl命令行内容发给api-server,api-server保存此次创建信息到etcd


3etcd给api-server上报事件,说刚才有人给我里面保存一个信息。(部署Tomcat[deploy])


4controller-manager监听到api-server的事件,是 (部署Tomcat[deploy])


5controller-manager 处理这个 (部署Tomcat[deploy])的事件。controller-manager会生成Pod的部署信息pod信息


6controller-manager 把Pod的信息交给api-server,再保存到etcd


7etcd上报事件pod信息给api-server。


8scheduler专门监听 pod信息 ,拿到 pod信息的内容,计算,看哪个节点合适部署这个Podpod调度过后的信息(node: node-02)


9scheduler把 pod调度过后的信息(node: node-02)交给api-server保存给etcd


10etcd上报事件pod调度过后的信息(node: node-02),给api-server


11其他节点的kubelet专门监听 pod调度过后的信息(node: node-02) 事件,集群所有节点kubelet从api-server就拿到了 pod调度过后的信息(node: node-02) 事件


12每个节点的kubelet判断是否属于自己的事情;node-02的kubelet发现是他的事情


13node-02的kubelet启动这个pod。汇报给master当前启动好的所有信息


KUBERNETES01_部署方式的变迁、为什么用Kubernetes、工作原理、组件交互原理、动画演示(四)

上一篇:KUBERNETES01_部署方式的变迁、为什么用Kubernetes、工作原理、组件交互原理、动画演示(三)


下一篇:RabbitMQ03_Springboot整合RabbitMQ实现发布与订阅模式、路由模式、通配符模式(四)