K8S核心组件交互原理

API server作为集群的核心,负责各个功能模块之间的通信。集群中各个模块通过API server将信息存入etcd,当需要获取和操作这些数据时,则通过API server提供的REST接口来实现,从而实现各模块之间的信息交互。

常见的一个交互场景是kubelet与API server交互。每个node节点上的kubelet每隔一个时间周期,会调用一次API server的REST接口报告自身状态。API server接受到这些信息,更新至etcd中,此外,kubelet也通过server的watch接口监听pod信息,若监听到新的pod副本被调度绑定到本节点,则执行pod对应的容器创建和启动。如果监听到pod对象被删除,则删除本节点上对应的pod容器。

另一个交互场景是kube-controller-manager进程与API server的交互。前者的Node controller模块通过API server提供的watch接口。实时监控Node的信息。

还有一个比较重要的交互场景就是kube-scheduler与api server交互,当前者通过server的watch接口监听到新建pod副本的信息后,它会检索所有符合该pod要求的Node列表,开始执行pod调度逻辑,调度成功后将pod绑定到目标节点上。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!