简介
所有的Kubernetes组件Controller, Scheduler, Kubelet都使用Watch机制来监听API Server,来获取对象变化的事件
- 用户通过Kubectl提交Pod Spec给API Server;
- API Server将Pod对象的信息存入Etcd中
- Pod的创建会生成一个事件,返回给API Server
- Controller监听到这个事件
- Controller知道这个Pod要mount一个盘,于是查看是否有能够满足条件的PV
- 假设有满足条件的PV,就将Pod和PV绑定在一起,将绑定关系告知API Server
- API Server将绑定信息写入Etcd中
- 生成一个Pod Update事件
- Scheduler监听到了这个事件
- Scheduler需要为Pod选择一个Node
- 假设有满足条件的Node,就讲Pod和Node绑定在一起,将绑定关系告知API Server
- API Server将绑定信息写入Etcd中
- 生成一个Pod Update事件
- Kubelet监听到了这个事件,开始创建Pod
- Kubelet告知CRI去下载镜像
- Kubelet告知CRI去运行容器
- CRI调用Docker运行容器
- Kubelet告知Volume Manager,将盘挂载到Node上,然后mount到Pod中
- CRI调用CNI给容器配置网络
- Kubelet是一切容器 feature的落地点
- 所有的组件只与apiserver交互,不直接互通,更不直接控制kubelet 做某事