create a new pods


创建一个新的pods,具体的流程

  1. 客户端向api server 发送请求创建新的pods
  2. api server 收到请求后把pods信息存到etcd
  3. api server 将etcd的内容暴露 这个内容被kube scheduler 监听到
  4. scheduler 开始尝试给pods 调度到node上, 先是 过滤(各种affinity 和 什么taint之类的) 然后 打分 (ranking)
  5. scheduler 把结果返回给api server, apiserver会更新信息到etcd , 更新了一个字段
    - lastProbeTime: null
      lastTransitionTime: "2023-06-27T07:17:19Z"
      status: "True"
      type: PodScheduled
  6. 然后节点的kubelet监听api server 发现有pods 该创建,就跟容器运行时去交互,创建对应容器,并且把结果返回给api server
  7. api server 存储这个信息到etcd , 这里有个问题, 写到etcd后, “API Server将确认信息发送至Kubelet。” 这句话说的对不对啊。。。

上边的节点收到了创建pods的的请求之后,的过程
https://zhuanlan.zhihu.com/p/438357910

  1. kubelet监控到有pods 需要创建
  2. kubelet (grpc client)与cri (grpc server)进行沟通, (如果不能直接沟通,就需要cri shim)
  3. 这里cri会调用到真正的容器服务,一般就是docker或者containerd这里 然后创建真正的容器

流程图

参考文章
https://blog.csdn.net/weixin_40228200


文章作者: Felix Li
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Felix Li !
  目录