cloudhub源码分析
edgecontroller
initConfig
NewDownstreamController
用于watch k8s apiserver 同步消息到edge
创建kubeclient
NewPodManager
通过配置创建了pod 管理器
NewCommonResourceEventHandler注册了一系列的回调函数,当有对应的事件时,将事件写入realEvents 然后启动一个shardinformer 用于同步apiserver到cache
接着调用了podmanager的merge方法, 从realEvents中读取事件,根据动作操作pods这个字典,并将信息发送给mergedEvents
NewConfigMapManager
创建一个map chan,watch apiserver,将事件写入,其他manager也一样
initLocating
用于判断configmap和secret发送到哪个节点
根据标签过滤 "node-role.kubernetes.io/edge": ""
将节点的状态缓存到本地cache
获取所有pods
如果pod的节点是边缘节点则执行AddOrUpdatePod
AddOrUpdatePod
获取pod的configmap和secret
根据configmap获取节点,如果原本有节点则添加,没有则新建
srecret同上,最终维护了一个configmap/secret 到节点的映射
Start
syncPod
从mergedEvents获取pod
判断是否为边缘节点
根据不同的动作构建消息发送resource消息
发送消息到beehive
syncConfigMap
syncSecret
不同动作决定动作
构建消息
发送消息
syncEdgeNodes
syncService
syncEndpoints
NewUpstreamController
用于从边缘同步消息给k8s apiserver
updateNodeStatus
updatePodStatus
queryConfigMap
queryEndpoints
queryPersistentVolume
queryPersistentVolumeClaim
queryVolumeAttachment
queryNode
updateNode
Last updated