「连载」边缘计算(十九)02-22:边缘部分源码(源码分析篇)

news/2024/5/19 14:54:23 标签: 边缘计算, 人工智能

(接上篇)

从启动函数Start()中可以看到,其以go routine的方式启动很多后台处理服务,具体如下。

1)初始化edged的kubeClient,具体如下所示。

// use self defined client to replace fake kube client

e.kubeClient = fakekube.NewSimpleClientset(e.metaClient)

2) 初始化pod status管理器,具体如下所示。

e.statusManager = status.NewManager(e.kubeClient, e.podManager, utilpod.NewpodDeleteSafety(), e.metaClient)

3)初始化edged节点的模块,具体如下所示。

if err := e.initializeModules(); err != nil {

klog.Errorf("initialize module error: %v", err)

os.Exit(1)

}

其中,e.initializeModules()函数定义如下所示。

func (e *edged) initializeModules() error {

node, _ := e.initialNode()

if err := e.containerManager.Start(node, e.GetActivepods, edgedutil.NewSourcesReady(), e.statusManager, e.runtimeService); err != nil {

klog.Errorf("Failed to start device plugin manager %v", err)

return err

}

return nil

}

可以看出,initializeModules()函数实际上启动了容器管理器。

4)初始化并启动volume管理器,具体如下所示。

e.volumeManager = volumemanager.NewVolumeManager(

...

)

go e.volumeManager.Run(edgedutil.NewSourcesReady(), utilwait.NeverStop)

5)初始化pod生命周期事件生成器,具体如下所示。

e.pleg = edgepleg.NewGenericLifecycleRemote(...)

...

e.pleg.Start()

6)启动pod增加和删除消息队列,具体如下所示。

e.podAddWorkerRun(concurrentConsumers)

e.podRemoveWorkerRun(concurrentConsumers)

7)启动edged的探针管理器,具体如下所示。

e.probeManager.Start()

8)启动监听pod事件的loop,具体如下所示。

go e.syncLoopIteration(e.pleg.Watch(), housekeepingTicker.C, syncWorkQueueCh.C)

9)启动edged的http server,具体如下所示。

go e.server.ListenAndServe()

10)启动镜像和容器的垃圾回收服务,具体如下所示。

e.imageGCManager.Start()

e.StartGarbageCollection()

11)初始化和启动edged的插件服务,具体如下所示。

e.pluginManager = pluginmanager.NewPluginManager(...)

// Adding Registration Callback function for CSI Driver

e.pluginManager.AddHandler(pluginwatcherapi.CSIPlugin, plugincache.PluginHandler(csiplugin.PluginHandler))

// Start the plugin manager

klog.Infof("starting plugin manager")

go e.pluginManager.Run(edgedutil.NewSourcesReady(), utilwait.NeverStop)

12) 启动与metamanager进行事件同步的服务,具体如下所示。

e.syncpod()

到此,edged的具体逻辑剖析就结束了。

edged调用容器运行时剖析

edged与容器运行时的调用关系如图8-3所示。

图 8-3 edged与容器运行时的调用关系

从图8-3可以看出,edged首先启动dockershimgrpc server,然后edged通过调用dockershimgrpc server实现与容器运行时(container runtime)的交互,最后dockershimgrpc server将edged具体操作传递给容器运行时。

未完待续…… 


http://www.niftyadmin.cn/n/5393404.html

相关文章

鸿蒙开发路由跳转踩坑

文章目录 前言常见路由不能跳转问题总结 一、前言 02-25 10:40:10.799 42182-2075594 E C03900/Ace: [manifest_router.cpp(GetPagePath)-(0)] [Engine Log] cant find this page pages 02-25 10:40:10.799 42182-2075594 E C03900/Ace: [page_router_manager.cpp(StartPush…

边缘计算物联网关在生产场景中的应用-天拓四方分享

随着物联网技术的飞速发展,边缘计算物联网关在生产场景中的应用越来越广泛。边缘计算物联网关作为连接物理世界与数字世界的桥梁,能够将传感器、执行器等设备产生的海量数据实时传输到云端进行处理,从而实现生产过程的智能化和自动化。 在生…

突破编程_C++_设计模式(单例模式)

1 单例模式的基础知识 单例模式( Singleton Pattern )是一种常见的设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。这个模式非常有用,尤其是在需要频繁访问某个对象,而且该对象的创…

Python实现力扣经典面试题——删除有序数组中的重复项 II

题目:删除有序数组中的重复项 II 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外…

GPT-4:开启人工智能新纪元的多功能引擎

随着人工智能技术的飞速发展,GPT-4(Generative Pre-trained Transformer 4)作为最新一代的语言模型,已经成为了推动科技创新、优化人机交互体验的关键力量。本文将深入探讨GPT-4的核心作用,以及它如何在各个领域中展现…

如何在 Shopify 中配置产品比较以获得最佳性能

引言 在竞争激烈的电子商务世界中,为在线零售商提供良好的购物体验至关重要。为了增强用户体验并帮助客户做出明智的购买决策,一种方法是提供产品比较功能。Shopify作为领先的电子商务平台,提供了各种工具和功能来以优秀方式配置产品比较。在…

基于Qt实现TCP和UDP客户端与服务端的完整指南

在当今的软件开发领域,网络通信已经成为了不可或缺的一部分。无论是在物联网(IoT)、企业级应用还是简单的客户端与服务端通信场景中,有效且高效的数据传输都是至关重要的。Qt,作为一个跨平台的C框架,不仅提供了丰富的用户界面组件…

【笔记】【电子科大 离散数学】 2.命题

文章目录 数理逻辑定义 命题定义不是命题的例子 原子命题和复合命题定义约定 命题联结词否定联结词定义例子真值表 合取联结词定义例子真值表 析取联结词定义例子 蕴含联结词定义例子真值表 等价联结词定义例子真值表 命题符号化及其应用速查表格优先级复合命题符号化布尔检索演…