回顾
上一篇文章我们主要看了下kubeedge模块是如何注册到Beehive通信框架的,这篇文章我们主要看下kubeedge模块是如何基于Beehive进行通信的
消息构造
从上篇文章我们可以看到,模块注册时,会给每个模块绑定一个model.Message类型的channel。这个model.Message就定义了模块间传递消息的具体构造。
接收消息流程(云端edgecontroller模块举例)
在上篇文章结尾我们看到包含模块注册信息的coreContext作为各个模块Start函数的参数,传递到各个模块。edgecontroller是kubeedge云端的其中一个模块,主要负责边缘端与k8s apiserver的交互,这里我们以该模块举例,看消息是如何传递的。
首先coreContext作为edgecontroller的Start函数参数,传递到edgecontroller模块,并赋值到config.Context。然后看到启动了两个实例NewUpstreamController和NewDownstreamController,分别控制边缘端到云端和云端到边缘端的事件消息。这里我们先只看NewUpstreamController,这个函数主要就干了两件事,创建k8s的客户端和MessageLayer.