edged源码分析

edged

在边缘管理容器化的应用程序,edged实际上是kubelet的精简版本,复用了kubelet的主要功能,实现了和其他edgecore组件的通信同步功能

初始化

  • 设置backoff的值

  • 创建podmanager

  • 创建image gc policy

  • 创建事件记录器

  • 初始化edged

  • 创建pods目录

  • 创建livenessmanager

  • 定义noderef

  • 创建StateProvider接口实现,用于在垃圾回收期间获取镜像信息

  • 创建镜像GC策略

  • 如果remote-image-endpoint为空则设置为remote-runtime-endpoint

  • 根据配置创建一个docker shim grpc客户端

  • 设置dns地址及配置

  • 创建一个containerRefManager

  • 创建image和运行时管理程序

  • 创建容器声明周期管理器

  • 创建容器运行时管理器

  • 创建容器管理器

  • 创建image GC管理器

  • 创建容器GC管理器

  • 创建卷插件管理器

启动

  • 创建元数据管理客户端,用于和beehive交互同步消息

  • 创建Clientset 包含kube client(k8s clientset)和MetaClient

  • 创建pod状态管理器

  • 创建、运行volume管理器

  • 创建运行probemanager

  • 运行pod add worker

  • 运行pod delete worker

  • 运行pod状态管理器

  • 启动edge server,10255/pods

  • 启动imageGCmanager

  • 启动容器gc

  • 创建CSI插件管理器

  • sync pod

syncPod

  • 发送消息给metamanager获取register-node-namespace指定的命名空间下的pod列表

  • 从beehive中读取发给自己的消息

  • 获取资源的类型和id

  • 当资源类型为pod

    • 当动作为response切ID为空且来源为metamanager,将pod加入运行队列

    • 当动作为response且ID为空来源为metamanager edgecontroller,将坡道加入队列

    • 其他情况

      • insert 加入队列

      • update 更新pod到指定队列

      • delete 加入删除队列

  • configmap 对cachestore进行增删改

  • secret 对secret进行增删改

  • volume 对volume进行增删改

consumePodAddition

重点看一下consumePodAddition

在edgecore启动的时间发送一个获取pod列表的消息给metamanager,当启动时间,从metamanager获取configmap和secret从而保证离线时间依旧能够运行

Last updated

Was this helpful?