Kubernetes--集群功能模块之间的通信

Kubernets API Server作为集群的核心,负责集群各功能模块之前的通信。集群内的各个功能模块通过API Server将信息存储到etcd中,当需要获取和操作这些数据时,则通过API Server提供的REST接口(用Get、LIST或Watch方法)来实现,从而实现各个模块之前的信息交互。

交互场景一

    kubelet进程与API Server的交互。每个Node上的kubelet每隔一个时间周期就会调用一次API Server的REST接口报告自身状态,API Server在接收到这些信息后,会将节点状态信息更新到etcd中。此外,kubelet也通过API Server的Watch接口监听Pod信息,如果监听到新的Pod副本被调度绑定到本节点,则执行Pod对应的容器创建和启动逻辑;如果监听到Pod对象被删除,则删除节点上相应的Pod容器;如果监听到修改Pod信息,kubelet就会相应的修改本节点的Pod容器。

交互场景二

  kube-controller-manager进程与API Server的交互。kubet-controller-manager中的Node Controller 模块通过API Server提供的Watch接口实时监控Node信息,并做相应的处理。

交互场景三

kube-scheduler与API Server的交互。Scheduler在通过API Server的Watch接口监听到新建Pod副本的信息后,会检索所有符合该Pod要求的Node列表,开始执行Pod调度逻辑,在调度成功后将Pod绑定到目标节点上。

    为了缓解集群各个模块对API Server的访问压力,各个模块都采用缓存机制来缓存数据。各个模块定时从API Server上获取指定的资源对象信息(通过LIST-Watch方法),将这些信息保存到本地缓存中,功能模块在某些情况下不直接访问API Server,而是通过访问缓存数据来间接访问API Server。

   在Kubernetes集群中,Node上的kublet和kube-proxy组件都需要与kube-apiserver通信,为了增加传输的安全性而采用https方式时,需要为每个Node组件都生成kube-apiserver用的CA签发的客户端证书,但规模较大时,颁发需要大量工作,同样会增加集群扩展的复杂度。为了简化流程,kubernetes引入了TLS Boostraping机制来字段颁发客户端证书,为此增加了一种名为Bootstrap Token的特殊Token.

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值