edgecontroller原始碼閱讀

2021-10-20 07:32:08 字數 4260 閱讀 4642

上游控制器:

控制器管理員:

1、入口函式

2、結構定義、初始化

3、啟動方法

4、上游控制器:接收來自edgecore的訊息並將更新同步到k8s-api伺服器

5、下游控制器:將新增/更新/刪除事件從k8s api伺服器同步到edgecore

edgecontroller是kubernetes api伺服器和edgecore之間的橋梁

以下是edge控制器執行的功能:

–下游控制器:將新增/更新/刪除事件從k8s api伺服器同步到edgecore

-上游控制器:將監視和更新資源和事件(節點,pod和configmap)的狀態同步到k8s-api伺服器,還訂閱來自edgecore的訊息-控制器管理器:建立管理器介面,該介面實現用於管理configmapmanager,locationcache和podmanager的事件

將新增/更新/刪除事件同步到邊緣

同步監視並更新資源和事件的狀態

以下是podstatus的資訊

建立管理器介面並實現configmapmanager,locationcache和podmanager

// registermodules register all the modules started in cloudcore

func

registermodules

(c *v1alpha1.cloudcoreconfig)

// edgecontroller use beehive context message layer

type edgecontroller struct

func

newedgecontroller

(enable bool

)*edgecontroller

}

// start controller

func

(ec *edgecontroller)

start()

if err := upstream.

start()

; err !=

nil downstream, err := controller.

newdownstreamcontroller()

if err !=

nilif err := downstream.

start()

; err !=

nil}

// newupstreamcontroller create upstreamcontroller from config

func

newupstreamcontroller()

(*upstreamcontroller,

error

) uc :=

&upstreamcontroller

return uc,

nil}

// newcontextmessagelayer create a contextmessagelayer

func

newcontextmessagelayer

() messagelayer

}

啟動upstreamcontroller

// start upstreamcontroller

func (uc *upstreamcontroller) start() error

for i := 0; i < int(config.config.load.updatepodstatusworkers); i++

for i := 0; i < int(config.config.load.queryconfigmapworkers); i++

for i := 0; i < int(config.config.load.querysecretworkers); i++

for i := 0; i < int(config.config.load.queryserviceworkers); i++

for i := 0; i < int(config.config.load.queryendpointsworkers); i++

for i := 0; i < int(config.config.load.querypersistentvolumeworkers); i++

for i := 0; i < int(config.config.load.querypersistentvolumeclaimworkers); i++

for i := 0; i < int(config.config.load.queryvolumeattachmentworkers); i++

for i := 0; i < int(config.config.load.querynodeworkers); i++

for i := 0; i < int(config.config.load.updatenodeworkers); i++

for i := 0; i < int(config.config.load.deletepodworkers); i++

return nil

}

// newdownstreamcontroller create a downstreamcontroller from config

func

newdownstreamcontroller()

(*downstreamcontroller,

error

) cli, err := utils.

kubeclient()

if err !=

nilvar nodename =

""if config.config.edgesiteenable

nodename = config.config.nodename

}podmanager, err := manager.

newpodmanager

(cli, v1.namespaceall, nodename)

if err !=

nil configmapmanager, err := manager.

newconfigmapmanager

(cli, v1.namespaceall)

if err !=

nil secretmanager, err := manager.

newsecretmanager

(cli, v1.namespaceall)

if err !=

nil nodesmanager, err := manager.

newnodesmanager

(cli, v1.namespaceall)

if err !=

nil servicemanager, err := manager.

newservicemanager

(cli, v1.namespaceall)

if err !=

nil endpointsmanager, err := manager.

newendpointsmanager

(cli, v1.namespaceall)

if err !=

nil dc :=

&downstreamcontroller

if err := dc.

initlocating()

; err !=

nilreturn dc,

nil}

odesmanager,

servicemanager: servicemanager,

endpointsmanager: endpointsmanager,

messagelayer: messagelayer.

newcontextmessagelayer()

, lc: lc,

}if err := dc.

initlocating()

; err !=

nilreturn dc,

nil}

官方源 映象源彙總

網易 http 阿里雲 http 上海交通大學 http ftp.sjtu.edu.cn html resources.xml 部分移動運營商出口狀況不佳,無法訪問 華中科技大學 http mirror.hust.edu.cn 當前已用容量估計 4.83t 清華大學 http mirrors.tun...

官方源 映象源彙總

網易 阿里雲 上海交通大學 部分移動運營商出口狀況不佳,無法訪問 華中科技大學 當前已用容量估計 4.83t 清華大學 當前已用容量估計 9.8t 北京理工大學 蘭州大學 中國科技大學 當前已用容量估計 21.32t 大連東軟資訊學院 當前已用容量估計 2.5t 東北大學 大連理工大學 哈爾濱工業大...

官方源 映象源彙總

網易 阿里雲 上海交通大學 部分移動運營商出口狀況不佳,無法訪問 華中科技大學 當前已用容量估計 4.83t 清華大學 當前已用容量估計 9.8t 北京理工大學 蘭州大學 中國科技大學 當前已用容量估計 21.32t 大連東軟資訊學院 當前已用容量估計 2.5t 東北大學 大連理工大學 哈爾濱工業大...