CN114285698A - 一种嵌入式操作系统上基于K3s的DDS通信中间件的构建方法 - Google Patents
一种嵌入式操作系统上基于K3s的DDS通信中间件的构建方法 Download PDFInfo
- Publication number
- CN114285698A CN114285698A CN202111620329.4A CN202111620329A CN114285698A CN 114285698 A CN114285698 A CN 114285698A CN 202111620329 A CN202111620329 A CN 202111620329A CN 114285698 A CN114285698 A CN 114285698A
- Authority
- CN
- China
- Prior art keywords
- dds
- pod
- file
- network
- operating system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
DDS(数据分发服务)在分布式系统中可以高效地处理复杂数据流业务。K3s作为容器编排工具,具有完备的集群管理能力。将K3s与DDS结合可以大大简化分布式系统的设计部署,具有巨大的市场应用前景。但是基于K3s的DDS通信是现有技术的盲区。本发明提供一种嵌入式操作系统上基于K3s的DDS通信中间件的构建方法。该方法包括以下步骤:在Linux中交叉编译DDS链接库;将DDS环境及程序构建到Docker镜像文件;在嵌入式开发板上安装K3s服务并进行网络配置;创建管理Pod和DDS应用Pod;通过管理Pod对DDS应用Pod进行状态监测和扩缩容等管理。本发明可实现将容器管理平台K3s与通信中间件DDS结合,为系统的模块化设计、模块间松耦合通信及快速部署提供技术支持。
Description
技术领域
本发明涉及嵌入式操作系统开发、分布式数据分发服务,容器管理服务,具体涉及一种嵌入式操作系统上基于K3s的DDS通信中间件的构建方法。
背景技术
DDS(Data Distribution Service)数据分发服务是对象管理组织(OMG)在HLA及CORBA等标准的基础上制定的新一代通信中间件技术规范。DDS采用了发布/订阅机制,针对系统进行了优化,提供低延迟、高吞吐量的分布式数据交互,可满足各种分布式通信应用需求,从而能够广泛应用于国防、航空、仿真、工业自动化等多个领域,例如宙斯盾开放体系结构(Aegis Open Architecture),舰艇自卫作战系统(Ship Self Defense System),濒海战斗舰(Littoral Combat Ship)等的系统中。
容器是一种沙盒技术,可以将应用程序运行在其中,与外界隔离以及方便这个沙盒可以被转移到其它宿主机器。容器技术具有方便部署,能够快速启动及高效的利用系统资源等优势,得到了广泛的应用。Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。它是容器集群管理系统,是一个开源的平台,提供了容器大规模部署、编排与管理的能力。K3s则是由Rancher Lab在2019年2月推出的轻量级的Kubernetes,适用于在资源有限的环境中运行Kubernetes。相比于Kubernetes,K3s更适合在嵌入式平台部署运行。使用K3s作为容器编排工具,开发者就不需要在传统架构中与业务没有关系的底层代码或者功能模块上花费时间,不必再考虑引入服务监控和故障处理模块。K3s具有完备的集群管理能力,包括多层次的安全防护和准入机制、透明的服务注册和服务发现机制、内建的智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制。使用K3s提供的解决方案,可以大大节省开发成本,还可以将精力更加集中于业务本身。
DDS是一套基于以太网的数据交互协议,仅支持二层网络通信。K3s为了对容器进行高效的管理,在容器的基础上封装出了Pod和Service。Pod是多个容器的集合,包括一个管理容器和至少一个应用容器。Service是多个Pod的集合。使用K3s部署的系统主要存在三种通信模式,分别为:Pod内容器间通信,Pod间通信,Pod与Service间通信。因为Pod内容器可直接进行本地通信,本发明中不予讨论。每个Pod和Service都会被分配一个IP地址,分别被称为Pod IP和Cluster IP。K3s默认的网络模式是flannel网络,flannel是一种虚拟网络技术,可以为每一个Pod分配一个唯一的虚拟IP地址,并构建三层虚拟网络实现Pod间通信,但是无法实现Pod级别的DDS通信。要满足K3s部署的Pod之间能进行DDS通信,所采用的网络必须为二层网络,不能使用NAT,隧道等技术,而Pod访问Service必须依赖NAT转换,不满足DDS通信的需求。K3s支持多种第三方网络插件,但并无法直接解决这一矛盾,要同时满足这两种通信模式,存在巨大的困难,目前基于K3s的DDS通信实现是现有技术的盲区。
随着分布式系统复杂程度的不断增加和研发规模的迅速扩大,系统的通信设计与部署的难度都在大幅提高。DDS“以数据为中心的发布/订阅”模式消除了耦合,具有良好的分布式数据分发特性,在分布式系统中处理复杂数据流业务具有卓越的能力。K3s能够很好地实现应用的快速部署,资源监控,自动调度等,是分布式系统部署的强有力的工具。将K3s与DDS结合可以大大简化分布式系统的设计部署,特别是在即将到来的物联网时代,这一组合在嵌入式终端市场具有巨大的应用前景。
发明内容
为了满足目前市场对于嵌入式平台中基于K3s的DDS数据分发功能的需要,同时解决上述的技术问题,本发明提出一种嵌入式操作系统上基于K3s的DDS通信中间件的构建方法。
本发明中,K3s服务部署在多台嵌入式平台上,K3s服务分为Master服务和Agent服务,安装Master服务的平台为管理节点,安装Agent服务的平台为工作节点。在K3s中使用DDS需要修改K3s的默认网络,安装cni网络插件中的ipvlan网络及针对DDS的通信要求建立相应的网络配置文件。ipvlan是一种虚拟网络技术,可以从一个主机接口虚拟出多个虚拟网络接口,主机接口作为交换机来转发子接口的数据,通过二层网络支持DDS通信。Pod是通过虚拟网络封装的Cluster IP访问Service,但是二层ipvlan不支持使用Cluster IP。K3s自身管理Pod必须依赖于Cluster IP,因此使用ipvlan网络时无法支持K3s自身管理Pod使用Cluster IP进行管理。针对该问题本发明的解决方案是,部署DDS应用的Agent工作节点使用ipvlan网络,而单独让部署管理Pod的Master管理节点使用支持Cluster IP的默认flannel网络。通过使用K3s的NodeSelector定向调度机制将DDS应用Pod调度到使用ipvlan网络的Agent工作节点运行,将管理Pod调度到使用flannel网络的Master管理节点运行。
中间件的构成文件包括DDS静态链接库、DDS头文件、IDL数据定义文件等。以Ubuntu镜像为基础镜像,将DDS中间件和基于DDS中间件开发的应用程序移植到基础镜像内生成DDS应用镜像。在嵌入式平台上安装K3s服务并进行网络配置。在K3s中,使用DDS应用镜像创建DDS应用Pod,Pod之间即可进行DDS通信,并可以通过K3s的管理Pod对部署的DDS应用Pod进行状态监测,扩缩容等管理。
本发明中在嵌入式Linux操作系统上基于K3s利用RTI Connext DDS构建DDS通信中间件,如附图1所示,构建方法包括以下步骤:
步骤S1:对RTI Connext DDS的源码进行编译,生成与Linux嵌入式操作系统相匹配的DDS链接库文件;
步骤S2:完成DDS项目的构建,通过makefile文件定义编译规则对程序进行编译,生成可执行文件。通过Dockerfile模板文件将DDS环境及程序构建到Docker镜像中;
步骤S3:在英伟达TX2平台上安装K3s软件并进行网络配置使Master节点使用默认的flannel网络,Agent节点使用ipvlan网络;
步骤S4:通过YAML格式的Pod定义文件,创建管理Pod,将其调度到使用默认flannel网络的Master节点;
步骤S5:通过YAML格式的Pod定义文件,使用步骤S2创建的Docker镜像创建包含DDS程序的Pod,通过调度器使其运行在部署了ipvlan网络的Agent节点上;
步骤S6:在Master节点通过管理Pod对部署的DDS应用Pod进行状态监测和扩缩容等管理。
至此,通过K3s部署的系统,各个部分可以通过DDS通信中间件进行通信,而且可以通过K3s提供的状态监测、自动调度、自动扩缩容等功能对系统进行有效的管理。
本发明的有益效果是:本发明实现基于K3s的DDS通信,为系统的模块化设计、实现模块间松耦合通信以及部署监测等提供技术基础。本发明提供的技术思路,可以为大规模分布式系统开发设计提供经验方法。
附图说明
附图1嵌入式操作系统上基于K3s的DDS通信中间件的构建方法流程图
附图2stddefs.mk文件字节序修改方法图
附图3本发明实施例所用IDL文件图
附图4makefile文件定义示例图
附图5Dockerfile文件定义示例图
附图6ipvlan网络配置方法图
附图7YAML格式的Pod定义文件示例图
附图8K3s创建的DDS应用Pod使用DDS发送信息界面
附图9K3s创建的DDS应用Pod使用DDS接收信息界面
附图10K3s管理Pod对DDS应用Pod进行状态监测和扩缩容操作界面
具体实施方式
下面参照附图,对本发明的具体实施方式进行描述。
本发明实施例使用至少三台英伟达TX2嵌入式平台,TX2基于ARMV8处理器运行Linux操作系统。在TX2平台安装K3s服务,基于K3s部署DDS应用程序,可实现TX2平台之间进行DDS通信,及使用K3s管理Pod对DDS应用Pod进行管理。
此处描述的具体实施例仅用于解释本发明,不用于对本发明进行限定。
本发明中在Linux嵌入式操作系统上基于K3s利用RTI Connext DDS构建DDS通信中间件,构建方法包括以下步骤:
步骤S1:对RTI Connext DDS的源码进行编译,生成与Linux嵌入式操作系统和英伟达TX2平台相匹配的DDS链接库文件。
步骤S1.1:修改RTI Context DDS根目录下makefile文件。
makefile文件用来编译生成DDS链接库,DDS运行于Linux嵌入式操作系统中,采用的是C语言,在API层处,将MODULES_and_FOLDERS变量中的除dds_c.1.0之外的其他内容注释掉。
步骤S1.2:修改相关配置文件personal.mk。
步骤S1.2.1:环境变量OS_ARCH的值对应的是与链接库匹配的操作系统,默认环境为i86Linux2.6,将其修改为armv8leLinux7.3.1gcc10.2.1。代表适用的硬件CPU架构为armv8,操作系统为Linux7.3.1,gcc版本为10.2.1。
步骤S1.2.2:环境变量WAVEWORKSHOME代表DDS源码所在的路径,将其修改为实际的DDS源码所在路径,如:
export WAVEWORKSHOME=/home/yuan/ndds500-buildsrc
步骤S1.3:修改源代码生成文件armv7leLinux2.6gcc4.4.1.mk。
步骤S1.3.1:将CPU类型修改为与所用的英伟达TX2平台CPU类型,即ARMV8。
步骤S1.3.2:将cplusplusCompiler和cCompiler编译工具修改为aarch64-linux-gnu-gccaarch64-linux-gnu-gcc是交叉编译工具,本实施例中,编译DDS链接库使用的是在X64架构的电脑上搭建的Linux虚拟机,而DDS使用场景是ARM架构的英伟达TX2平台,因此必须使用交叉编译工具编译DDS链接库。
步骤S1.4:修改stddefs.mk文件。
将步骤S1.3.1设置的CPU类型添加到littleEndianCPUs变量中,收发的字节序会被设置成小端字节序,参见附图2。littleEndianCPUs变量中包含了支持小端字节序的CPU,ARM架构的CPU支持小端字节序,但是英伟达TX2使用的ARMV8的CPU并不在littleEndianCPUs变量中,需要手动添加。
步骤S1.5:搭建基于Linux操作系统的交叉编译环境。
在VMware中安装Linux操作系统的发行版Ubuntu系统,将DDS源码解压,然后安装交叉编译工具aarch64-linux-gnu-gcc,即完成了交叉编译环境的搭建。
步骤S1.6:使用make armv7leLinux2.6gcc4.4.1.mk命令开始编译,编译完成后生成的库文件在源码目录下的core.1.0\lib\armv7leLinux2.6gcc4.4.1和/dds_c.1.0/lib/armv7leLinux2.6gcc4.4.1文件夹中。
步骤S2:构建包含DDS环境和应用程序的Docker镜像。
步骤S2.1:通过IDL文件定义通信的数据格式。
IDL(接口定义语言)在文本文件中创建用户类型,不依赖于编程语言。在DDS中,IDL文件可用于定义交互的数据信息,比如数据类型和变量长度等。本实施例使用的IDL文件如附图3所示。文件中定义了用于进行数据交互的结构体,结构体内包含一个长整型的变量和一个字符串变量。
步骤S2.2:使用Code Generator工具由IDL文件生成DDS应用程序。
在Windows系统安装RTI DDS的开发软件rtilauncher,在rtilauncher中,使用Code Generator工具将IDL文件导入,指定文件格式,需要代码的语言,目录等信息后即可自动生成相关代码,其中发送和接收等相关的函数API可以供其他的功能模块调用。
步骤S2.3:在生成的DDS应用程序中给发送数据的结构体赋值。
在步骤S2.2中已自动生成发送,接收函数,且是定时循环发送与接收,只需要在发送函数中给发送数据的结构体赋值,即可实现收发数据,本实施例采用的是发送固定数据,如下所示:
instance->id=1;
instance->message="test";
步骤S2.4:构建makefile文件,除指定使用的编译工具,需要编译的源文件外,指定DDS链接库和头文件的位置,参见附图4。
在本实施例中,DDS应用程序最终运行在以Ubuntu操作系统为基础镜像的容器内,DDS应用程序的编译需要在Linux上进行,使用makefile文件对应用程序进行编译,生成可执行文件。INCLUDES变量指定了DDS头文件的位置,DDS头文件在安装DDS开发软件rtilauncher后会在安装目录下自动生成。LIBS变量指定了DDS链接库的位置。其余部分按照makefile的语法规则定义需要编译的源文件和使用的编译工具即可。
步骤S2.5:通过make命令编译程序生成可执行文件。
步骤S2.6:建立Dockerfile模板文件,将DDS链接库、头文件及程序构建到Docker镜像文件中。
Dockerfile模板文件内容如下所示:
FROM ubuntu:18.04
MAINTAINER dds
COPY example/home/
COPY RTI/home/
FROM命令指定了创建镜像所使用的基础镜像,所有的Docker镜像都起始于一个基础镜像层,当进行修改或增加新的内容时,就会在当前镜像层之上,创建新的镜像层。本实施例所使用的基础镜像为ubuntu:18.04.
MAINTAINER命令用来指定作者。
COPY是一个复制命令,用来将本地文件和文件夹复制到容器内,本实施例需要将DDS应用程序文件夹及RTI链接库复制到容器内的home目录。
步骤S2.7:通过步骤S2.6的Dockerfile文件创建DDS应用镜像,命令为:
sudo docker build-t dockerfile:1.0.
dockerfile:1.0是指定的镜像名称,构建过程参见附图5。在基础镜像之上进行构建,每一条命令对应一个构建步骤。
步骤S3:在英伟达TX2平台上安装K3s服务并进行网络配置。
三台英伟达TX2平台已提前安装Ubuntu:20.04操作系统。
步骤S3.1:完整的CNI二进制插件支持多种网络模式,包括17种二进制组件,将其中的dhcp、host-local、ipvlan、loopback、static五种二进制组件移植到准备部署K3sAgent服务的两台英伟达TX2平台的/opt/cni/bin目录下。
本实施例中两台用来部署K3s Agent服务的TX2平台使用的网络模式为ipvlan网络,dhcp、host-local、loopback、static四种二进制组件用来配合ipvlan组件进行分配ip,设置lo接口等,这四种二进制组件也不可缺少。另外一台部署K3s Master服务的TX2平台使用默认的flannel网络,可以自动进行安装,不需要进行手动配置。
步骤S3.2:在准备部署K3s Agent服务的两台英伟达TX2平台的/etc/cni/net.d目录下创建网络配置文件10-maclannet.conf。在该网络配置文件中指定cni组件的版本,使用的组件类型,父接口名称,及为子网分配的IP地址,参见附图6。其中,cniVersion表示使用的插件版本;name表示网络方案名称;type表示使用的网络方案类型,本实施例使用的是ipvlan网络;master:指定要在哪个网口上通过ipvlan虚拟出网络接口;mode表示桥接方式,有l2和l3两种,本实施例使用的是l2模式,可以通过二层网络满足DDS的通信需求;ipam表示ip分配方案参数;type表示的是使用哪种ip分配方案,本实施例使用的是host-local方案;subnet表示的是分配的子网范围;rangeStart表示的是分配的IP开始的地址;rangeEnd表示的是分配的IP结束的地址;gateway:表示的是容器内部网络的网关;routes表示的是路由。
步骤S3.3:在英伟达TX2平台上分别安装K3s的Master和Agent服务。
步骤S3.3.1:在三个英伟达TX2平台上将K3s的二进制安装文件存放在/usr/local/bin目录下,官方的安装脚本存放在/root目录下。
步骤S3.3.2:将准备部署K3s Master服务的一台英伟达TX2平台启动,在root目录下执行命令:
export INSTALL_K3S_SKIP_DOWNLOAD=true&&sh install.sh
此命令将自动安装K3s的Master服务,且使用的是K3s的默认网络flannel。
步骤S3.3.3:将准备部署K3s Agent服务的两台英伟达TX2平台启动,在root目录下执行命令:
export INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC='--no-flannel'&&sh install.sh
此命令将自动安装K3s的Agent服务,在启动选项中指定的--no-flannel参数关闭了K3s默认的flannel网络,K3s会在/etc/cni/net.d目录下搜寻自定义的网络配置文件,并根据配置文件使用/opt/cni/bin目录下的二进制cni组件,在本实施例中,步骤S3.2创建了ipvlan的网络配置文件,并在步骤S3.1中将ipvlan网络的二进制组件移植到对应的目录下,因此可以将flannel网络更改为ipvlan网络。
步骤S4:通过YAML格式的Pod定义文件,创建管理Pod,将其调度到使用默认flannel网络的Master节点。
步骤S4.1:给Master节点打上标签:zone=south,命令为:
kubectl label nodes nvidia-desktop zone=south
nvidia-desktop是本实施例中Master节点的名称,zone=south标签用于进行label匹配,将Pod调度到对应的节点上。
步骤S4.2:修改管理Pod的YAML定义文件,管理Pod的YAML定义文件位于/var/lib/rancher/k3s/server/manifests目录,包括coredns,metrics-server等,本实施例中仅以metrics-server服务为例,在metrics-server-deployment.yaml文件末添加如下内容:
nodeSelector:
zone:south
zone:south是标签选择器,nodeSelector根据指定的标签选择器过滤符合条件的节点作为可用目标节点。
步骤S4.3:创建管理Pod,命令为:
kubectl create-f metrics-server-deployment.yaml
K3s的label-selector机制根据设定的标签进行节点选择,通过label匹配,调度Pod到目标节点。在本实施例中Mater节点的标签和管理Pod的标签选择器相匹配,调度器将创建的管理Pod都调度到使用flannel网络的Master节点。
步骤S5:在安装Agent服务的TX2平台上,通过YAML格式的Pod定义文件,使用步骤S2创建的Docker镜像创建包含DDS程序的Pod。
步骤S5.1:给所有Agent节点打上标签:zone=north,命令为:
kubectl label nodes ubuntu zone=north
ubuntu是本实施例中一个Agent节点的名称。
步骤S5.2:创建YAML格式的Pod定义文件,参见附图7,主要内容包括,指定使用的控制器类型为Deployment,使用的镜像为创建的DDS应用镜像dockerfile:1.0,并在文件末添加如下内容:
nodeSelector:
zone:north
步骤S5.3:通过YAML格式的Pod定义文件创建包含DDS应用程序的Pod,命令为:
kubectl create-f deployment.yaml
在本实施例中Agent节点的标签和DDS应用Pod的标签选择器相匹配,调度器将创建的DDS应用Pod都调度到使用ipvlan网络的Agent节点。
步骤S5.4:启动DDS应用Pod内发布订阅程序,两个TX2平台即可实现DDS通信,通信过程如附图8,9所示。
步骤S6:在Master节点通过管理Pod对部署的DDS应用Pod进行状态监测和扩缩容等管理。
K3s的管理Pod支持DNS,服务代理,负载均衡,状态监测,自动扩缩容等多种管理功能,本实施例仅通过metrics-server管理Pod对DDS应用Pod进行态监测和扩缩容等管理。
步骤S6.1:查看部署的DDS应用Pod的状态,命令为:
kubectl get pod-n kube-system
步骤S6.2:创建HPA控制器资源,对DDS应用Pod进行自动扩缩容,命令为:
kubectl autoscale deploy demon--min=7--max=10--cpu-percent=60
min的值限定了Pod的最小数量,当Pod的数量小于该值时,HPA控制器自动进行扩容操作,使Pod的数量等于最小值;max的值限定了Pod的最大数量,当Pod的数量大于该值时,HPA控制器自动进行缩容操作,使Pod的数量等于最大值;cpu-percent代表CPU利用率,当Pod的CPU利用率超过该值时,HPA控制器自动进行扩容操作。对Pod进行状态监测和扩容操作如附图10所示。
本发明实施例如上所述,通过在K3s部署的Pod中构建DDS通信中间件,实现Pod之间通过DDS进行通信,并可以通过管理Pod对DDS应用Pod进行状态监测和扩缩容等管理。
基于本发明提供的构建方法,调用DDS应用API开发应用程序,可以提供通讯功能,开发低耦合的分布式系统,再基于K3s进行部署,可以实现快速高效部署,并对部署的系统进行状态监测等管理。
在不偏离本发明的基本技术思路和精神原则的情况下,针对上述细节所做出的任何明显的修改,或等同的替换,或进一步的优化,均应包含在本发明的权利要求范围内。
Claims (6)
1.一种嵌入式操作系统上基于K3s的DDS通信中间件的构建方法,其特征在于,所述的通信中间件利用RTI-DDS产品在Linux嵌入式操作系统中基于K3s构建;所述DDS通信中间件包括DDS链接库和封装的初始化、发送、接收等应用接口;所述的K3s为DDS程序部署,编排提供支持,所述构建方法包括以下步骤:
步骤S1:对RTI Connext DDS的源码进行编译,生成与Linux嵌入式操作系统和英伟达TX2平台相匹配的DDS链接库文件;
步骤S2:完成DDS项目的构建,通过makefile文件定义编译规则对程序进行编译,生成可执行文件,通过Dockerfile模板文件将DDS环境及程序构建到Docker镜像中;
步骤S3:在英伟达TX2平台上安装K3s软件并进行网络配置使Master节点使用默认的flannel网络,Agent节点使用ipvlan网络;
步骤S4:通过YAML格式的Pod定义文件,创建管理Pod,将其调度到使用默认flannel网络的Master节点;
步骤S5:通过YAML格式的Pod定义文件,使用步骤S2创建的Docker镜像创建包含DDS程序的Pod,通过调度器使其运行在部署了ipvlan网络的Agent节点上;
步骤S6:在Master节点通过管理Pod对部署的DDS应用Pod进行状态监测和扩缩容等管理。
2.根据权利要求1所述的嵌入式操作系统上基于K3s的DDS通信中间件的构建方法,其特征在于,所述步骤S1中,具体步骤为:
步骤S1.1:修改RTI Context DDS根目录makefile文件,将MODULES_and_FOLDERS变量中的除dds_c.1.0之外的其他内容注释掉;
步骤S1.2:修改相关配置文件personal.mk,将环境变量OS_ARCH修改为armv8leLinux7.3.1gcc10.2.1,WAVEWORKSHOME修改为/home/yuan/ndds500-buildsrc;
步骤S1.3:将armv7leLinux2.6gcc4.4.1.mk文件中的CPU类型修改为ARMV8,编译工具修改为aarch64-linux-gnu-gcc;
步骤S1.4:修改stddefs.mk文件,将步骤S1.3设置的CPU类型添加到littleEndianCPUs变量中;
步骤S1.5:搭建基于Linux操作系统的交叉编译环境,安装交叉编译工具aarch64-linux-gnu-gcc;
步骤S1.6:使用make armv7leLinux2.6gcc4.4.1.mk命令开始编译源文件,生成链接库。
3.根据权利要求1所述的嵌入式操作系统上基于K3s的DDS通信中间件的构建方法,其特征在于,所述步骤S2中,具体步骤为:
步骤S2.1:通过IDL文件定义通信的数据格式;
步骤S2.2:使用Code Generator工具由IDL文件生成DDS应用程序;
步骤S2.3:在生成的DDS应用程序中给发送数据的结构体赋值;
步骤S2.4:构建makefile文件,除指定使用的编译工具,需要编译的源文件外,指定DDS链接库和头文件的位置;
步骤S2.5:通过make命令编译程序生成可执行文件;
步骤S2.6:建立Dockerfile模板文件,将DDS链接库、头文件及程序构建到Docker镜像文件中;
步骤S2.7:通过步骤S2.6的Dockerfile文件创建DDS应用镜像。
4.根据权利要求1所述的嵌入式操作系统上基于K3s的DDS通信中间件的构建方法,其特征在于,所述步骤S3中,具体步骤为:
步骤S3.1:将CNI二进制网络组件中的ipvlan组件及配合ipvlan组件使用的dhcp、host-local、loopback、static组件移植到准备部署K3s Agent服务的两台英伟达TX2平台的/opt/cni/bin目录下;
步骤S3.2:在准备部署K3s Agent服务的两台英伟达TX2平台的/etc/cni/net.d目录下创建ipvlan网络的配置文件,设置版本号、网络方案类型、IP地址范围等;
步骤S3.3:在一个英伟达TX2平台上安装K3s的Master服务,另外两个英伟达TX2平台上安装K3s的Agent服务,配置Master节点使用默认的flannel网络,Agent节点使用ipvlan网络。
5.根据权利要求1所述的嵌入式操作系统上基于K3s的DDS通信中间件的构建方法,其特征在于所述步骤S4中,具体步骤为:
步骤S4.1:给Master节点打上标签:zone=south;
步骤S4.2:修改管理Pod的YAML定义文件;
步骤S4.3:创建管理Pod,通过NodeSelector定向调度器保证创建的Pod都运行在使用flannel网络的Master节点。
6.根据权利要求1所述的嵌入式操作系统上基于K3s的DDS通信中间件的构建方法,其特征在于,所述步骤S5中,具体步骤为:
步骤S5.1:给所有Agent节点打上标签:zone=north;
步骤S5.2:创建YAML格式的Pod定义文件,在文件中指定本次创建Pod使用的控制器,镜像等内容;
步骤S5.3:创建应用Pod,在YAML文件中通过NodeSelector定向调度器保证创建的Pod都运行在使用ipvlan网络的Agent节点;
步骤S5.4:启动DDS应用Pod内发布订阅程序,两个TX2平台即可实现DDS通信。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111620329.4A CN114285698B (zh) | 2021-12-28 | 2021-12-28 | 一种嵌入式操作系统上基于K3s的DDS通信中间件的构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111620329.4A CN114285698B (zh) | 2021-12-28 | 2021-12-28 | 一种嵌入式操作系统上基于K3s的DDS通信中间件的构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114285698A true CN114285698A (zh) | 2022-04-05 |
CN114285698B CN114285698B (zh) | 2022-09-13 |
Family
ID=80876703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111620329.4A Active CN114285698B (zh) | 2021-12-28 | 2021-12-28 | 一种嵌入式操作系统上基于K3s的DDS通信中间件的构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114285698B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112144A (zh) * | 2023-09-22 | 2023-11-24 | 上海卓悠网络科技有限公司 | 一种在android系统上部署k3s的方法及系统、存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109884915A (zh) * | 2018-12-04 | 2019-06-14 | 中国航空无线电电子研究所 | 一种基于dds的嵌入式软件运行平台设计方法及其仿真平台 |
CN109934402A (zh) * | 2019-03-11 | 2019-06-25 | 北京天润新能投资有限公司西北分公司 | 一种风电场集控中心集中风功率预测系统及其设计方法 |
CN110704070A (zh) * | 2019-09-30 | 2020-01-17 | 北京航空航天大学 | 一种分区实时操作系统下dds通信中间件的构建方法 |
CN112328371A (zh) * | 2020-11-27 | 2021-02-05 | 四川长虹电器股份有限公司 | 基于k3s平台的边云交互管理边缘业务的方法 |
CN113485793A (zh) * | 2021-07-15 | 2021-10-08 | 广东电网有限责任公司中山供电局 | 基于容器技术的多源异构数据接入通道在线弹性扩展方法 |
-
2021
- 2021-12-28 CN CN202111620329.4A patent/CN114285698B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109884915A (zh) * | 2018-12-04 | 2019-06-14 | 中国航空无线电电子研究所 | 一种基于dds的嵌入式软件运行平台设计方法及其仿真平台 |
CN109934402A (zh) * | 2019-03-11 | 2019-06-25 | 北京天润新能投资有限公司西北分公司 | 一种风电场集控中心集中风功率预测系统及其设计方法 |
CN110704070A (zh) * | 2019-09-30 | 2020-01-17 | 北京航空航天大学 | 一种分区实时操作系统下dds通信中间件的构建方法 |
CN112328371A (zh) * | 2020-11-27 | 2021-02-05 | 四川长虹电器股份有限公司 | 基于k3s平台的边云交互管理边缘业务的方法 |
CN113485793A (zh) * | 2021-07-15 | 2021-10-08 | 广东电网有限责任公司中山供电局 | 基于容器技术的多源异构数据接入通道在线弹性扩展方法 |
Non-Patent Citations (10)
Title |
---|
BOYANG SONG; XIAOGUANG HU; JIN XIAO: "Integration of Data Distribution Service into Partitioned Real-time Embedded Systems", 《2020 15TH IEEE CONFERENCE ON INDUSTRIAL ELECTRONICS AND APPLICATIONS (ICIEA)》 * |
TOM GOETHALS: "Extending Kubernetes Clusters to Low-resource Edge Devices using Virtual Kubelets", 《IEEE TRANSACTIONS ON CLOUD COMPUTING ( EARLY ACCESS )》 * |
YONGZHAO HUA; XIWANG DONG: "Robust adaptive time-varying formation control for high-order linear uncertain multi-agent systems", 《2017 36TH CHINESE CONTROL CONFERENCE (CCC)》 * |
ZHUANGWEI KANG: "A Comprehensive Performance Evaluation of Different Kubernetes CNI Plugins for Edge-based and Containerized Publish/Subscribe Applications", 《2021 IEEE INTERNATIONAL CONFERENCE ON CLOUD ENGINEERING (IC2E)》 * |
刘忠: "基于K3s构建面向云原生应用的容器平台设计与实践", 《现代信息科技》 * |
孙文波: "一种基于DDS的快速跳频信号源系统设计", 《电子测量技术》 * |
张德悦等: "二维手性介质层电磁散射问题的积分方程方法", 《数学物理学报》 * |
李丹 胡晓光: "基于VxWorks下PNN故障诊断的冗余容错系统", 《计算机工程与应用》 * |
王海庆等: "基于K3s的边缘计算在泛在电力物联网的技术研究", 《科技资讯》 * |
范林军等: "轻量级服务化仿真中间件SSM的设计与实现", 《计算机应用研究》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112144A (zh) * | 2023-09-22 | 2023-11-24 | 上海卓悠网络科技有限公司 | 一种在android系统上部署k3s的方法及系统、存储介质 |
CN117112144B (zh) * | 2023-09-22 | 2024-03-12 | 上海卓悠网络科技有限公司 | 一种在android系统上部署k3s的方法及系统、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114285698B (zh) | 2022-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106789339B (zh) | 一种基于轻量级虚拟化架构的分布式云仿真方法与系统 | |
Arcangeli et al. | Automatic deployment of distributed software systems: Definitions and state of the art | |
US8589522B2 (en) | Incrementally updatable system software infrastructure for sensor networks | |
CN113687913B (zh) | 一种面向边缘计算异构环境的轻量级应用适配方法 | |
CN111897541B (zh) | 一种云环境下自动化部署资源的软件交互平台及方法 | |
CN111610985B (zh) | 一种国产平台上的kubernetes集群快速部署方法 | |
Da Silva et al. | Internet of things out of the box: using TOSCA for automating the deployment of IoT environments | |
US20190079744A1 (en) | Systems and methods for a policy-driven orchestration of deployment of distributed applications | |
CN113220283A (zh) | 一种基于云编排的物联app开发系统 | |
Kehrer et al. | TOSCA-based container orchestration on Mesos: two-phase deployment of cloud applications using container-based artifacts | |
CN113779477A (zh) | 一种基于PaaS云平台的流水线发布方法及系统 | |
CN114285698B (zh) | 一种嵌入式操作系统上基于K3s的DDS通信中间件的构建方法 | |
Hu et al. | Software-defined edge computing (SDEC): Principles, open system architecture and challenges | |
CN109753302B (zh) | 基于混合云计算平台的无服务函数的服务方法 | |
CN117112122A (zh) | 一种集群部署方法和装置 | |
JPH11312079A (ja) | 携帯形情報処理装置の制御方法 | |
Srirama et al. | Fog computing out of the box with FOGDEFT framework: A case study | |
CN111897551A (zh) | 一种云环境下快速克隆软件环境的平台及方法 | |
CN116192670A (zh) | 环境部署方法、装置、设备及介质 | |
CN103677842A (zh) | 软件工具配置式集成扩展调用方法与系统 | |
Sethi et al. | Rapid deployment of SOA solutions via automated image replication and reconfiguration | |
Padilla | Self-adaptation for Internet of things applications | |
CN114281399A (zh) | 分布式应用打包交付方法、系统、终端及存储介质 | |
Basak et al. | Fog computing out of the box: Dynamic deployment of fog service containers with TOSCA | |
Wang | Research on Using Docker Container Technology to Realize Rapid Deployment Environment on Virtual Machine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |