Pod是怎么诞生的
K8s 本身不提供容器创建的实现,容器的创建是通过 CRI 接口调用外部插件实现的,常见的 CRI 有这几种:
- docker
- containerd
- cri-dockerd
Pod 是如何被创建出来的
- 客户端通过 kubectl 等将创建 pod 的请求发送给 kube-apiserver
- kube-apiserver 将 pod 信息写入 etcd,etcd 将写入的结果返回给 kube-apiserver,然后 kube-apiserver 再返回给客户端
- kube-scheduler 通过 kube-apiserver 的 watch 接口,获取到未被调度的 pod 信息,根据调度算法选择集群内的一个节点,然后将节点信息发送给 kube-apiserver
- kube-apiserver 将这个 pod 和节点的绑定信息写入到 etcd,etcd 将结果返回给 kube-apiserver
- kubelet 通过 kube-apiserver 的 watch 接口,获取到本节点有创建 pod 的信息,然后会调用 CRI 创建容器,并将 pod 的运行状态发送给 kube-apiserver
- kube-apiserver 将 pod 状态信息更新到 etcd
You need to set
install_url
to use ShareThis. Please set it in _config.yml
.