加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 综合聚焦 > 移动互联 > 评测 > 正文

一篇文章带你了解kubernetes各组件间的通信机制

发布时间:2019-11-05 03:04:20 所属栏目:评测 来源:云端密码
导读:副标题#e# 我们对kubernetes有了一定的认识,本文我们将继续深入的对kubernetes在系统层面上进行讨论,一起看看kubernetes的各个基本组件,以及各个组件是如何相互配合来撑起如此复杂的集群系统。下面跟随文章内容,一起来领略kubernetes令人惊叹的设计内幕

watchCache的结构如下所示:

  1. type watchCache struct { 
  2.  sync.RWMutex //同步锁 
  3.  cond *sync.Cond //条件变量 
  4.  capacity int//历史滑动窗口容量 
  5.  keyFunc func(runtime.Object) (string, error)//从storage中获取键值 
  6.  getAttrsFunc func(runtime.Object) (labels.Set, fields.Set, bool, error)//获取一个对象的field和label信息 
  7.  cache []watchCacheElement//循环队列缓存 
  8.  startIndex int//循环队列的起始下标 
  9.  endIndex int//循环队列的结束下标 
  10.  store cache.Store// 
  11.  resourceVersion uint64 
  12.  onReplace func() 
  13.  onEvent func(*watchCacheEvent)//在每次缓存中的数据发生Add/Update/Delete后都会调用该函数,来获取对象的之前版本的值 
  14.  clock clock.Clock 
  15.  versioner storage.Versioner 

cache里面存放的是所有操作事件,而store中存放的是当前最新的事件。

4 cacheWatcher从watchCache中拿到从某个resourceVersion以来的所有数据,即initEvents,然后将数据放到input这个channel里面去,通过filter然后输出到result这个channel里面,返回数据到某个client。

  1. type cacheWatcher struct { 
  2.  sync.Mutex//同步锁 
  3.  input chan *watchCacheEvent//输入管道,Apiserver都事件发生时都会通过广播的形式向input管道进行发送 
  4.  result chan watch.Event//输出管道,输出到update管道中去 
  5.  done chan struct{} 
  6.  filter filterWithAttrsFunc//过滤器 
  7.  stopped bool 
  8.  forget func(bool) 
  9.  versioner storage.Versioner 

从一个pod创建过程看k8s组件通信

我们再回到上面的Pod创建流程图。从图中我们可以看出以下信息:

1 首先各组件也会在初始化时向Apiserver发送watch请求,即在图中标0的指令。Apiserver在创建kubeApiserver并注册各API路由信息时,获取Watch请求的路由信息

2 从Kubectl向Apiserver发送创建pod请求起,每一步创建、更新操作,都会存储到etcd中。

3 各组件向Apiserver发送watch请求,Apiserver从etcd获取最新数据并返回。

注意:当事件发生时,Apiserver会给这些watcher中的通道推送,每个watcher都有自己的Filter过滤,找到自己想要监听的事件则通过管道的方式将该数据发送到相应的组件。

【编辑推荐】

  1. 为什么说Kubernetes的崛起预示着云原生时代到来?
  2. Kubernetes研究:图解Kubernetes网络
  3. Kubernetes研究:网络原理及方案(网络原理基础经典版)
  4. 学习Kubernetes,这些负载均衡知识点得知道!
  5. 十大Kubernetes开源监控工具
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读