0
点赞
收藏
分享

微信扫一扫

Kubernetes底层原理 七 各组件协作流程

月白色的大狒 2024-03-12 阅读 8

一、协作流程总结

     当我们创建一个Deployment资源,通过kubectl发送HTTP POST请求到Kubernetes api-server后,controller、schedule、kubelet就开始通过api-server监听他们各自监听的资源类型的变化了。下面看看各个组件到底是如何协作的

Kubernetes底层原理 七  各组件协作流程_Deployment

  1. 在我们部署任何资源前,集群中的Scheduler、Controller-Manager、Kubelet都一直监听Master的Api-Server发来的事件变化(for ::)
  2. 当我们通过kubectl apply提交一个Deployment资源到Api-Server后,Api-Server首先会进行资源验证。
  3. 验证通过后将Deployment存储到Etcd中。
  4. 接着Controller-Manager(中的Deployment控制器)会监听到Api-Server中创建Deployment的事件,然后他会处理这个事件。
  5. Deployment控制器会按照这个Department资源定义创建一个ReplicaSet资源,并交给Api-Server。(Api-Server会交给Etcd保存)前面我们了解到Deployment控制ReplicaSet,ReplicaSet管理Pod。
  6. 新创建ReplicaSet的事件会被ReplicaSet控制器监听到,ReplicaSet控制器会检查看正在运行的Pod(需要标签是匹配的)的数量有没有达到ReplicaSet中期望的副本数。
  7. 如果正在运行的Pod没有达到它预期的数量,则ReplicaSet控制器会基于ReplicaSet的Pod模板创建Pod资源,并交给Api-Server。(Api-Server会交给Etcd保存)
  8. 接着Schedule会监控Api-Server中新创建的且nodeName属性还没有被设置的Pod。
  9. 每发现一个,Schedule就会为这个Pod计算看他应该被部署到哪个节点上,然后将要部署的节点信息写到Pod定义中,发送给Api-Server再保存到Etcd中。
  10. 所有工作节点的Kubelet会专门监听Api-Server,判断看有没有Pod被调度到了自己的节点上。
  11. 如果有那就会在自己的Node上部署这个Pod,部署成功后将信息返回给Api-Server。


举报

相关推荐

0 条评论