kubernetes API Server
提供了Kubernetes各类资源对象(如pod,re,service等)的增删改查及watch等Http Rest接口,成为集群内各个功能模块之间数据交互和通信的中心枢纽,是整个系统的数据总线和数据中心。
运行下列的curl命令,分别返回集群中Pod列表,service列表,rc列表等。
curl localhost:8080/api/v1/pods
curl localhost:8080/api/v1/services
curl localhost:8080/api/v1/replicationcontrollerss
只暴露部分REST服务,可以在master或者其他任何节点上通过运行kebectl proxy进程启动内部代理
kubectl proxy --reject-path="^/api/v1/replicationcontrollers" --port=8001 --v=2
curl localhost:8001/api/v1/replicationcontrollers <h3>Unauthorized<h3>
独特的kubernetes Proxy API 接口
API里关于Node的相关接口,其中{name}为节点的 名称或IP地址,包括以下几个具体接口。
/api/v1/proxy/nodes/{name}/pods/ 列出指定节点内所有pod的信息
/api/v1/proxy/node/{name}/stats/ 列出指定节点内物理资源的统计信息
/api/v1/proxy/nodes/{name}/spec/ 列出指定节点的概要信息
集群功能模块之间的通信
每个node每隔一个时间周期,就会调用一次API Server 的Rest接口报告自身状态,API Server 接受到这些信息后,将节点状态信息更新到etcd中。
kube-controller-manager进程与API Server交互,kube-controller-manager中的node Controller模块通过API Server提供非watch接口,实时监控Node的信息,并做相应的处理。
Controller Manager原理分析
Controller Manager作为集群内部的管理控制中心,负责集群内的node,pod副本,服务端点(Endpoint),命名空间Namespace,服务账号(ServiceAccount),资源定额(ResourceQuota)等的管理,当某个Node意外宕机时,Controller Manager会及时发现故障并执行自动修复流程,确保集群始终处于预期的工作状态。
Replication Controller
Replication Controller的核心功能是确保在任何时候集群中一个rc所关联的pod副本数量保持预设值,如果发现pod副本数量超过预期值,则replication controller会销毁一些pod副本。