Pod是怎么诞生的

K8s 本身不提供容器创建的实现,容器的创建是通过 CRI 接口调用外部插件实现的,常见的 CRI 有这几种:

  1. docker
  2. containerd
  3. cri-dockerd

Pod 是如何被创建出来的

  1. 客户端通过 kubectl 等将创建 pod 的请求发送给 kube-apiserver
  2. kube-apiserver 将 pod 信息写入 etcd,etcd 将写入的结果返回给 kube-apiserver,然后 kube-apiserver 再返回给客户端
  3. kube-scheduler 通过 kube-apiserver 的 watch 接口,获取到未被调度的 pod 信息,根据调度算法选择集群内的一个节点,然后将节点信息发送给 kube-apiserver
  4. kube-apiserver 将这个 pod 和节点的绑定信息写入到 etcd,etcd 将结果返回给 kube-apiserver
  5. kubelet 通过 kube-apiserver 的 watch 接口,获取到本节点有创建 pod 的信息,然后会调用 CRI 创建容器,并将 pod 的运行状态发送给 kube-apiserver
  6. kube-apiserver 将 pod 状态信息更新到 etcd

pod创建流程

Author

Warner

Posted on

2024-03-11

Updated on

2024-03-11

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.