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

(接上篇)

从启动函数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.hqwc.cn/news/486692.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[hgame 2024 week3] crypto/pwn

第2周作完了不知道扔哪去了,先记录下第3周,因为官方WP已经出来,顺便把没出的题复现一下。最近的比赛都比较不错,相当于近期知识点的总结,有点心经的意思。 Crypto matrix_equation 题目很短,结了一个式子…

linux---防火墙拓展

目录 一、iptables 1.基本语法 2.四表五链——重点记忆 2.1四表 2.2五链 2.3总结 3.iptables选项示例 3.1 -Z 清空流量计数 3.2 -P 修改默认规则 3.3 -D 删除规则 3.4 -R 指定编号替换规则 4.白名单 5.通用匹配 6.示例 6.1添加回环网卡 6.2可以访问端口 6.3 主…

悄悄话花费的时间(C语言)

题目描述 给定一个二叉树,每个节点上站着一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。 初始时,根节点所在位置的人有一个悄悄话想要传递给其他人,求二叉树所有节点上的人都接收到悄悄话花费的时间。 输入描述 …

基于java+springboot+vue实现的美食信息推荐系统(文末源码+Lw)23-170

1 摘 要 使用旧方法对美食信息推荐系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在美食信息推荐系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发…

第九节HarmonyOS 常用基础组件28-Select

1、描述 提供下拉选择菜单&#xff0c;可以让用户在多个选项之间选择。 2、接口 Select(options:Array<SelectOption>) 3、SelectOption对象说明 参数名 参数类型 必填 描述 value ResourceStr 是 下拉选项内容。 icon ResourceStr 否 下拉选项图标。 4…

在Mac上搭建MongoDB环境

最近工作中需要装MongoDB环境&#xff0c;搭建过程中遇到了一些问题&#xff0c;在这里记录一下安装MongoDB环境的方法以及问题的解决方法。有两种安装MongoDB的方法&#xff1a;brew安装和手动安装。 目录 使用Homebrew安装MongoDB 手动安装MongoDB&#xff08;不使用Homebr…

4G模块获取多个基站信息

获取多个基站信息&#xff0c;需要将其模块注网上不同的频段 以下使用ATQCFG"band" 配置频段 验证一 ATQENG"SERVINGCELL" 获取注网信息解析说明 在没锁频之前查询注网信息 [2024-02-23_11:22:41:108]ATCPIN? [2024-02-23_11:22:41:108]CPIN: R…

最简单方式把jar打包成Windows服务

废话 &#x1f622; 将JAR文件转化为Windows服务是一种高效且常见的Java应用部署策略。这种转变赋予了Java应用程序在Windows操作系统上以无界面后台服务模式运行的能力&#xff0c;从而实现了持续、稳定且可靠的功能提供。这种部署方式不仅提升了应用的可用性&#xff0c…

你真的了解nsight compute中的Roofline Charts吗?

此文章是之前看nsight-compute官网的时候做的笔记。因为这个记笔记的时候使用的文档记录下来会更直观好看&#xff0c;所以本次的笔记采用了截图的方式。中英文是方便沟通记忆&#xff0c;概念对齐。

【计算机毕业设计】541鲜花商城系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

D 咖智能饮品机:现代生活的便捷与品质之选

D 咖智能饮品机将便捷与品质完美融合&#xff0c;为现代人的生活带来了全新的体验。这款智能饮品机以其先进的技术和出色的设计&#xff0c;成为了逛街人群和办公室职员的理想选择。 该饮品机拥有智能化的操作系统&#xff0c;只需轻轻一按&#xff0c;你就可以享受到各种美味的…

alist修改密码(docker版)

rootarmbian:~# docker exec -it [docker名称] ./alist admin set abcd123456 INFO[2024-02-20 11:06:29] reading config file: data/config.json INFO[2024-02-20 11:06:29] load config from env with prefix: ALIST_ INFO[2024-02-20 11:06:29] init logrus..…