第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

kubernetes1.9源碼閱讀 kubernetes的watch包

標(biāo)簽:
Kubernetes

要理解kubernetes的list-watch机制,首先应该熟悉理解kubernetes的watch包中的各种实现以及原理。这篇文章将从代码实现看看kubernetes的watch包实现。从kubernetes1.6之后,kubernetes的watch包抽取到了apimachinery这个项目下。

watch包文件说明

watch包主要包含5个文件:watch.go,mux.go,filter.go,streamwatch.go,util.go。下面是对这五个文件作简单的说明:

1. watch.go 主要是接口定义及对interface的三种实现的封装。

2. mux.go 主要是事件广播器。

3. filter.go 主要是对事件的过滤。

4. streamwatch.go 主要是对decoder接口实现的封装。

5. util.go 主要是对满足条件时间的过滤。

watch.go文件

watch.go定义了接口,k8s中说有的event事件统一都实现了interface接口,interface接口的定义如下:

1. Event结构体,主要包括:事件类型Type和事件发生的对象Object,k8s中所有的对象(比如:pod、service、rc、dp....)都是runtime.Object;

2. watch.Interface中主要有两个方法:分别是对事件的监听结果ResultChan()和停止监听Stop()方法;

webp

3. watch.go还包括对Interface的三种实现的封装:emptyWatch、fakerWatch

、racefreeWatch,fakerWatch和racefreeWatch是线程安全的;

mux.go文件

mux.go文件中主要包括了事件广播器Broadcaster和广播器的观察者broadcasterWatcher;

1. Broadcaster包括watchers,当创建一个Broadcaster时,Broadcaster会开一个协程接收所有的事件及发送事件到所有注册的watcher。保证Broadcaster的所有的watcher一直都能不断的接收到Broadcaster发送过来的事件;

2. broadcastWatcher实现了watch.Interface,包括:resultChan方法和stop方法;

3. 在kube-scheduler中,会创建record.NewBroadcaster(),发送event到logging函数,参见之前的文章:kubernetes1.8 kube-scheduler源码阅读

webp

filter.go文件

filter.go文件也是主要对interface的的实现,加上了事件过滤的方法,这样的话,就可以只watcher满足一定条件的事件了;

webp

同时,filter.go中的Recorder结构体,记录watcher所接收到的所有的事件;

webp



作者:范彬2017
链接:https://www.jianshu.com/p/d0329668f34c


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消