KubeEdge源码学习2:框架细分

本文仅为个人的学习笔记(速记),不具任何参考意义。
根据文档理解整个框架。

总述

kubeedge本身不提供k8s apiserver功能,因此需要额外部署k8s主节点。但其实现了apiserver的一些操作,也因此原因,kubeedge可以无缝融入到k8s中。
用户通过kubectl操作,apiserver向 edgecontroller 发送请求,如node、pod状态等,最终通过websocket与边缘端通信。

edgecontroller

内有 downstream 、upstream 和 manager。downstream 负责将将信息下发到边缘,upstream 负责上传。
CommonResourceEventHandler,有OnAdd、OnUpdate、OnDelete事件实现,通过 NewCommonResourceEventHandler 创建,添加:

1
2
3
4
events := make(chan watch.Event)
rh := NewCommonResourceEventHandler(events)
si := cache.NewSharedInformer(lw, &v1.Node{}, 0)
si.AddEventHandler(rh)

适用:service secret node endpoint configmap,等。

NewListWatchFromClient:似乎是监听 kubectl 运作的(存疑)
NewSharedInformer:涉及到 k8s 的机制,暂不明其理。
ListWatch是一种很重要的机制,待研究。

##