cloudcore 是 kubeedge 的核心云端部分,包含三个模块:cloudhub,edgecontroller,devicecontroller
cloudhub 是一个负责监听云端改动,缓存和发送消息给 edgehub 的 web 服务器. edgecontroller 是一个 k8s 的扩展控制器,用于管理边缘节点和 pods 元信息,以便数据可以发送到一个特定节点. devicecontroller 是一个扩展的 k8s 控制器,用于管理设备,以便设备元信息/状态可以在云端和边缘端之间同步.
cloud/cmd/cloudcore/cloudcore.go 中
func main() {
command := app.NewCloudCoreCommand()
...
if err := command.Execute(); err != nil {
os.Exit(1)
}
}
cloud/cmd/cloudcore/app/server.go 中
func NewCloudCoreCommand() *cobra.Command {
...
registerModules(config)
...
core.Run()
...
}
func registerModules(c *v1alpha1.CloudCoreConfig) {
cloudhub.Register(c.Modules.CloudHub, c.KubeAPIConfig)
edgecontroller.Register(c.Modules.EdgeController, c.KubeAPIConfig, "", false)
devicecontroller.Register(c.Modules.DeviceController, c.KubeAPIConfig)
synccontroller.Register(c.Modules.SyncController, c.KubeAPIConfig)
cloudstream.Register(c.Modules.CloudStream)
}
vendor/github.com/kubeedge/beehive/pkg/core/core.go 中
func StartModules() {
beehiveContext.InitContext(beehiveContext.MsgCtxTypeChannel)
modules := GetModules()
for name, module := range modules {
beehiveContext.AddModule(name)
beehiveContext.AddModuleGroup(name, module.Group())
go module.Start()
}
}
func GracefulShutdown() {
c := make(chan os.Signal)
signal.Notify(c, syscall.SIGINT, syscall.SIGHUP, syscall.SIGTERM, syscall.SIGKILL,
syscall.SIGQUIT, syscall.SIGILL, syscall.SIGTRAP, syscall.SIGABRT)
select {
case s := <-c:
beehiveContext.Cancel()
modules := GetModules()
for name, _ := range modules {
beehiveContext.Cleanup(name)
}
}
}
func Run() {
StartModules()
GracefulShutdown()
}