CN113301174B - 数据处理、转换规则部署方法和装置 - Google Patents
数据处理、转换规则部署方法和装置 Download PDFInfo
- Publication number
- CN113301174B CN113301174B CN202010673120.3A CN202010673120A CN113301174B CN 113301174 B CN113301174 B CN 113301174B CN 202010673120 A CN202010673120 A CN 202010673120A CN 113301174 B CN113301174 B CN 113301174B
- Authority
- CN
- China
- Prior art keywords
- network
- address
- container
- deployed
- conversion rule
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2557—Translation policies or rules
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种数据处理、转换规则部署方法和装置,其中,该方法包括:源节点从数据包中提取虚拟地址;通过所述源节点所在容器的网络空间中所部署的网络地址转换规则,将所述虚拟地址转换为实际地址;通过所述实际地址,将所述数据包发送至所述实际地址关联的目标节点。通过上述方案解决了宿主空间与容器空间隔离导致的宿主机中部署的NAT规则无法对Pod数据流产生影响的问题,达到了Pod之间可以简单高效进行相互访问的技术效果。
Description
技术领域
本申请属于互联网技术领域,尤其涉及一种数据处理、转换规则部署方法和装置。
背景技术
Kubernetes Service API是对一组具有相同label Pod(endpoint)集合的抽象(可以简单的理解为集群内的LB)。集群内外的各个服务可以通过Service进行互相通信。Service支持几种类型,常用的主要有:External LB或者Cluster IP Service。其中,Cluster IP(虚拟IP地址)Service通过在host网络上配置NAT(Network AddressTranslation,网络地址转换)规则,使用一个虚拟IP地址(不绑定在具体网络设备上)来支持服务发现。Cluster IP Service有IP-table和IPVS(IP Virtual Server,IP虚拟服务器)两种实现模式。一般情况下,在原生K8s里,IPVS模式的Service实现方式是由kube-proxy这个K8s组件配置来维护Node上的一套IPVS规则。
然而,当Sandbox(用户容器)使用VPC网络(Virtual Private Cloud,专有网络)和ENI(弹性网卡)时,K8s CNI(Container Network Interface,容器网络接口)插件会将ENI网络设备直接放置在容器的网络空间中,与宿主机的网络空间是隔离开的。这样就会导致放置在宿主机网络空间中NAT规则无法影响Pod的数据流。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本申请目的在于提供一种数据处理、转换规则部署方法和装置,可以解决了宿主空间与容器空间隔离导致的宿主机中部署的NAT规则无法对Pod数据流产生影响的问题。
本申请提供一种数据处理、转换规则部署方法和装置是这样实现的:
一种数据处理方法,所述方法包括:
源节点从数据包中提取虚拟地址;
通过所述源节点所在容器的网络空间中所部署的网络地址转换规则,将所述虚拟地址转换为实际地址;
通过所述实际地址,将所述数据包发送至所述实际地址关联的目标节点。
一种转换规则部署方法,所述方法包括:
网络代理模块获取待部署网络地址转换规则;
将所述待部署网络地址转换规则,部署在宿主机的网络空间和节点所在容器的网络空间中。
一种数据处理装置,位于源节点中,包括:
提取模块,用于从数据包中提取虚拟地址;
转换模块,用于通过所述源节点所在容器的网络空间中所部署的网络地址转换规则,将所述虚拟地址转换为实际地址;
发送模块,用于通过所述实际地址,将所述数据包发送至所述实际地址关联的目标节点。
一种转换规则部署装置,包括:
获取模块,用于获取待部署网络地址转换规则;
部署模块,用于将所述待部署网络地址转换规则,部署在宿主机的网络空间和节点所在容器的网络空间中。
一种数据处理设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现如下方法的步骤:
源节点从数据包中提取虚拟地址;
通过所述源节点所在容器的网络空间中所部署的网络地址转换规则,将所述虚拟地址转换为实际地址;
通过所述实际地址,将所述数据包发送至所述实际地址关联的目标节点。
一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现如下方法的步骤:
源节点从数据包中提取虚拟地址;
通过所述源节点所在容器的网络空间中所部署的网络地址转换规则,将所述虚拟地址转换为实际地址;
通过所述实际地址,将所述数据包发送至所述实际地址关联的目标节点。
一种数据处理设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现如下方法的步骤:
网络代理模块获取待部署网络地址转换规则;
将所述待部署网络地址转换规则,部署在宿主机的网络空间和节点所在容器的网络空间中。
一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现如下方法的步骤:
网络代理模块获取待部署网络地址转换规则;
将所述待部署网络地址转换规则,部署在宿主机的网络空间和节点所在容器的网络空间中。
本申请提供的数据处理、转换规则部署方法和装置,通过在源节点所在容器的网络空间中部署网络地址转换规则,使得在源节点存在服务请求的时候,在源节点所在容器内部就可以完成从虚拟地址到实际地址的转换,不需要依赖宿主机网络空间的地址转换,解决了宿主空间与容器空间隔离导致的宿主机中部署的NAT规则无法对Pod数据流产生影响的问题,达到了Pod之间可以简单高效进行相互访问的技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的K8s的架构示意图;
图2是本申请提供的规则同时部署在宿主机和容器内的示意图;
图3是本申请提供的服务对应的虚拟地址与Pod的实际地址之间的对应关系示意图;
图4是本申请提供的租户与Pod之间的关系示意图;
图5是本申请提供的在容器中部署规则示意图;
图6是本申请提供的数据处理方法的方法流程图;
图7是本申请提供的服务器的架构图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
为了更好地说明本申请,对K8s集群网络说明如下,如图1所示,为K8s集群网络示意图,下面对一些概念说明如下:
Node:是工作负载节点,在Kubernetes集群中除了Master节点外的机器都可以被称为Node。每个Node都会被Master分配一些工作负载(Docker容器),当某个Node宕机时,其上的工作负载会被Master自动转移到其他Node节点上。
Pod:是一组容器(也可以是一个容器),容器本身就是一个小盒子了,Pod相当于在容器上又包了一层小盒子,Pod是Kubernetes的最小调度单位。
Service:是一组逻辑Pod的抽象,为一组Pod提供统一入口,用户只需与service打交道,service提供DNS解析名称,负责追踪Pod动态变化并更新转发表,通过负载均衡算法最终将流量转发到后端的Pod。Kubernetes里的每个Service都可以理解为微服务架构中的一个微服务。Service会在集群的每个Node上都启动一个端口,通过NodeIP:NodePort访问后端的Pod。
Label:标签,一个Label是一个key=value的键值对。Label可以被附加到各种资源对象上,例如:Node、Pod、Service、RC等,一个资源对象可以定义任意数量的Label。
在Kubernetes集群里有三种IP地址,分别为:
1)Node IP:Node节点的IP地址,即物理网卡的IP地址,可以是物理机的IP(也可能是虚拟机IP)。每个Service都会在Node节点上开通一个端口,外部可以通过NodeIP:NodePort即可访问Service里的Pod。
2)Pod IP:Pod的IP地址,即docker容器的IP地址,此为虚拟IP地址,Pod IP是每个Pod的IP地址,是Docker Engine根据docker网桥的IP地址段进行分配的,通常是一个虚拟的二层网络。
3)Cluster IP:Service的IP地址,此为虚拟IP地址。Cluster IP仅仅作用于Kubernetes Service这个对象,并由Kubernetes管理和分配地址,Cluster IP无法被ping,他没有一个“实体网络对象”来响应,Cluster IP只能结合Service Port组成一个具体的通信端口,单独的Cluster IP不具备通信的基础,并且他们属于Kubernetes集群这样一个封闭的空间。在不同Service下的Pod节点在集群间相互访问可以通过Cluster IP。
对于上述三种IP网络间的通信,service地址和Pod地址在不同网段,service地址为虚拟地址,外部访问时,先到Node节点网络,再转到service网络,最后代理给Pod网络。
CNI是用于连接容器管理系统和网络的插件,用于从容器管理系统处获取运行时信息,包括network namespace的路径,容器ID以及network interface name,再从容器网络的配置文件中加载网络配置信息,再将这些信息传递给对应的插件,由插件进行具体的网络配置工作,并将配置的结果再返回到容器管理系统中。
对于K8S系统而言,在多租户场景下,因为网络强隔离的需要,用户部署的容器网卡和宿主机本身的网卡,通常都处于不同的网络空间中。这样即使得K8s CNI插件将ENI网络设备直接放置在容器的网络空间中,与宿主机网络是隔离开的。这样就使得Cluster IPService的这些NAT规则,如果放置在宿主机网络空间中不会发生作用,无法影响Pod的数据流。
为此,发明人考虑到既然这些规则放置在宿主机中无法发生作用,那么可以如图2所示,同时将规则部署在容器和宿主机中。例如:规则有规则1和规则2,对于宿主机器而言是所有规则都部署的,即,在宿主机中部署规则1和2,在Pod1、Pod2中部署规则1,Pod,3、Pod4和Pod5中部署规则2。其中,容器是请求发出的源头,通过将规则部署在容器中,那么在容器内就可以完成NAT(Network Address Translation,网络地址转换),即,在容器中就可以完成从Cluster IP到Pod IP(即,Endpoint IP,实际服务后端IP)的转换,而不需要再通过宿主机进行NAT转换。
具体的,在实现的时候,可以由kube-proxy监控Pod和Service的生命周期,kube-proxy将所需规则注入到Pod内。如果容器是安全容器,那么可以增加同步机制,以便将信息传递到安全容器内部。其中,kube-proxy是在Node节点上实现Pod网络代理,实现Kubernetes Service的通信和负载均衡机制的重要组件。
在完成规则的部署之后,对于数据包(请求指令)而言,数据包中携带有所请求的服务,基于所请求的服务,可以关联到该服务的VIP。通过在容器中已经部署的NAT规则,在容器中就可以实现从VIP(即,Cluster IP)到RIP(即,Pod IP)的转换。也就是说,数据包在离开Sandbox guest Nets时,已经变成了正常的容器间访问,通过正常容器网络链路就可以进行通讯。
其中,上述配置的NAT规则可以是如图3所示,例如:
Service1(CIP1)—Pod1 IP、Pod2 IP
Service2(CIP2)—Pod2 IP、Pod3 IP
Service3(CIP3)—Pod1 IP、Pod2 IP、Pod3 IP
……
即,服务1对应的Pod(endpoints)为Pod1和Pod2,服务2对应的Pod(endpoints)为Pod2和Pod3,服务3对应的Pod(endpoints)为Pod1、Pod2和Pod3。相应的,应该将CIP1转换为Pod1IP或Pod2 IP,将CIP2转换为Pod2 IP或Pod3 IP,将CIP3转换为Pod1 IP(RPI1)、Pod2IP(RIP2)或Pod3 IP(RIP3)。即,client1请求得到服务Service2,那么通过client1内部被配置的规则,就可以直接在容器内部转换为提供Service2服务的Pod2 IP、Pod3 IP。
举例而言:
Node1]#ipvsadm–Ln
IP Virtual Server version 1.2.1(size=4096)
Prot LocalAddress:Port Scheduler Flags
->RemoteAddress:Port forward Weight ActiveConn InActConn
TCP 192.168.1.177:80rr
->25.15.16.132:80 Route 1 0 0
->12.15.16.142:80 Route 1 0 0
通过上述NAT规则的设置,就可以将192.168.1.177:80的目的地址换成后面的,25.15.16.132的80端口,或者12.15.16.142的80端口。
因为需要在每个容器中配置规则,因此配置的工作量是很大的,为了可以减少配置规则的工作量,可以采用批量配置的方式。具体的,在多租户的情况下,Pod内的规则是不一样的,但是对于同样的租户而言,规则是相同的,因此,可以使用eBPF内核扩展技术,为同租户的Pod配置一套同样的规则,attach到每个Pod的网卡上生效,从而减少规则数量。其中,eBPF是一种内核扩展技术,方便在不修改内核的情况下,扩展内核功能。即,如图4所示,A租户的所有Pod规则是一样的,B租户的所有Pod规则是一样的,可以对A租户的Pod配置一套相同的规则,B租户的Pod配置一套相同的规则。
通过在容器内配置规则,可以实现Pod之间的访问和通信,在这种情况下,还是有必要在宿主机器上部署规则的,因为,还有从主机去访问VIP的需求,例如:各种主机进程访问虚拟域名服务等,就需要依靠在宿主机内部署的规则。
即,为了解决Cluster IP Service的这些NAT规则,如果放置在宿主机网络空间中不会发生作用,无法影响Pod的数据流,为了解决在VPC(Virtual Port Channel,虚拟链路聚合)环境下同VPC的Service访问,和跨VPC的Service访问(仅能访问Service endpoints)的问题,在本例中,Kube-proxy配置Service的规则时,对配置的作用域进行调整,从仅仅部署于宿主机网络空间,改为同时部署于容器+宿主机内。也就是说,同时将规则放置在容器里面,这是请求发出的源头,也是ENI/VF的必经的道路上第一环,从而使得地址转换规则与外部拓扑、以及用什么形式的容器网络都无关。这样就使得所有访问虚拟Service的数据流,在容器内(请求源)已可完成从Cluster IP(虚拟服IP)到Endpoint IP(实际服务后端IP)的转换,可支持任何容器网络方案(直通网卡类+普通宿主机虚拟网卡类等),对原始容器网络功能毫无影响,可以完全保持原有性能。
在实现的过程中,Kube-proxy负责监控Pod、Service的生命周期,将所需规则注入到Pod内,普通runC直接操作Netns即可,对于安全容器而言,需要增加同步机制,以将信息传达到安全容器内部。如图5所示,数据包在Sandbox guest Netns空间由APP生成,经过规则改写目的IP,从VIP变为RIP,RIP一般为服务Pod的IP;数据包在离开Sandbox guestNetns的时候,已经变成正常容器间访问,走正常容器网络链路即可通讯。
且,因为这些Service和后端endpoints(Pods),本来就是Pod里container需要调用的,租户仅对自己配置的Service规则可见,不构成信息过多披露,Kubernets虽然允许用户登入Pod的guest执行cmd line,但登入的user可以不赋予net admin的权限,用户无法更改这些规则。
在上例中,突破了Kubernetes对于Service规则的既有边界,将规则部署在容器内,与请求源同一空间作用,从而完全与容器的网络方案解耦,使得直通类的容器网络路径不变,可以在不影响性能的情况下支持Cluster IP等K8s高级功能。且不需要修改容器缺省的网络方案,Pod间网络没有任何损失,规则直接下达到Pod网络空间中,这样既可以实现Service NAT导流功能,也不会影响原有的容器网络性能,Endpoint可以看到真实的ClientIP,可支持与宿主机不同VPC的场景。
图6是本申请所述一种种数据处理方法一个实施例的方法流程图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例描述及附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构连接进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至分布式处理环境)。
具体的,如图6所示,本申请一种实施例提供的一种数据处理方法可以包括如下步骤:
步骤601:源节点从数据包中提取虚拟地址;
步骤602:通过所述源节点所在容器的网络空间中所部署的网络地址转换规则,将所述虚拟地址转换为实际地址;
其中,所谓源节点所在容器就是源节点的容器的概念,因为节点一般由一个或多个容器组成,源节点所在容器就是源节点的一个或多个容器的概念。
步骤603:通过所述实际地址,将所述数据包发送至所述实际地址关联的目标节点。
在上例中,通过在源节点所在容器的网络空间中部署网络地址转换规则,使得在源节点存在服务请求的时候,在源节点的容器内部就可以完成从虚拟地址到实际地址的转换,不需要依赖宿主机网络空间的地址转换,解决了宿主空间与容器空间隔离导致的宿主机中部署的NAT规则无法对Pod数据流产生影响的问题,达到了Pod之间可以简单高效进行相互访问的技术效果。
具体的,上述的源节点所在容器的网络空间中所部署的网络地址转换规则,可以是在将规则部署在宿主机的网络空间的时候一起部署的,即,获取网络地址转换规则;将所述网络地址转换规则部署在宿主机的网络空间和节点容器的网络空间中。例如:Kube-proxy配置Service的规则时,对配置的作用域进行调整,从仅仅部署于宿主机网络空间,改为同时部署于容器+宿主机内。也就是说,同时将规则放置在容器里面,这是请求发出的源头,这样就使得所有访问虚拟Service的数据流,在容器内(请求源)已可完成从Cluster IP(虚拟服IP)到Endpoint IP(实际服务后端IP)的转换,可支持任何容器网络方案(直通网卡类+普通宿主机虚拟网卡类等),对原始容器网络功能毫无影响,可以完全保持原有性能。
考虑到需要对每个Pod都部署规则,规则部署的压力比较大,为了减少规则部署压力,可以对于同租户进行同样的部署,具体的,将所述网络地址转换规则部署在节点容器的网络空间中,可以包括:通过内核扩展技术,为同租户下各节点的容器配置一套相同的网络地址转换规则;将该网络地址转换规则部署到各节点的直通网卡中。即,考虑到多租户情况下,Pod内的规则不一样,但是同样租户的是一样的;因此,为了优化流程,可以使用eBPF内核扩展技术,为同租户的Pod配置一套同样的规则,attach到每个Pod的网卡上生效,以减少规则数量。
因为在宿主机和Pod中都部署了规则,那么宿主机的规则可以用于对从主机去访问VIP的需求,比如各种主机进程访问虚拟域名服务等的时候使用。例如,可以接收宿主机的服务请求;响应于所述服务请求,通过宿主机的网络空间中部署的网络地址转换规则将所述服务请求对应的虚拟地址转换为实际地址。
上述的源节点和所述目标节点可以是属于同一租户的。
上述的源节点和所述目标节点可以为Kubernetes的最小调度单位,由一个或多个容器组成。上述的数据包可以为服务请求,其中,服务通过Kubernetes中的一组最小调度单位提供。
具体的,还提供了一种转换规则部署方法,可以包括如下步骤:
步骤1:网络代理模块获取待部署网络地址转换规则;
步骤2:将所述待部署网络地址转换规则,部署在宿主机的网络空间和节点容器的网络空间中。
其中,上述的网络代理模块可以是为Kube-Proxy,相应的,将所述待部署网络地址转换规则,部署在节点容器的网络空间中,可以包括:将所述待部署网络地址转换规则,部署在属于同一租户的多个节点中的各个节点容器的网络空间中。
本申请上述实施例所提供的方法实施例可以在服务器、计算机终端或者类似的运算装置中执行。以运行在服务器端为例,图7是本发明实施例的一种数据处理方法的服务器的硬件结构框图。如图7所示,服务器10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。本领域普通技术人员可以理解,图7所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器10还可包括比图7中所示更多或者更少的组件,或者具有与图7所示不同的配置。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的数据处理方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的数据处理方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至服务器10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输模块106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
在软件层面,上述数据处理装置可以位于源节点中可以包括::
提取模块,用于从数据包中提取虚拟地址;
转换模块,用于通过所述源节点所在容器的网络空间中所部署的网络地址转换规则,将所述虚拟地址转换为实际地址;
发送模块,用于通过所述实际地址,将所述数据包发送至所述实际地址关联的目标节点。
在一个实施方式中,上述源节点和所述目标节点可以属于同一租户。
在一个实施方式中,上述源节点和所述目标节点可以是Kubernetes的最小调度单位,由一个或多个容器组成。
在一个实施方式中,上述数据包可以是服务请求,其中,服务通过Kubernetes中的一组最小调度单位提供。
在本例中,还提供了一种转换规则部署装置,可以包括:
获取模块,用于获取待部署网络地址转换规则;
部署模块,用于将所述待部署网络地址转换规则,部署在宿主机的网络空间和节点容器的网络空间中。
在一个实施方式中,上述部署模块具体可以用于将所述待部署网络地址转换规则,部署在属于同一租户的多个节点中的各个节点容器的网络空间中。
在一个实施方式中,上述部署模块具体可以用于通过内核扩展技术,为同租户下各节点的容器配置一套相同的网络地址转换规则;将该网络地址转换规则部署到各节点的直通网卡中。
在一个实施方式中,因为在宿主机的网络空间中部署了地址转换规则,因此,可以接收宿主机的服务请求;响应于所述服务请求,通过宿主机的网络空间中部署的网络地址转换规则将所述服务请求对应的虚拟地址转换为实际地址。
本申请的实施例还提供能够实现上述实施例中的数据处理方法中全部步骤的一种电子设备的具体实施方式,所述电子设备具体包括如下内容:处理器(processor)、存储器(memory)、通信接口(Communications Interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的数据处理方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤1:网络代理模块获取待部署网络地址转换规则;
步骤2:将所述待部署网络地址转换规则,部署在宿主机的网络空间和节点容器的网络空间中。
步骤3:源节点从数据包中提取虚拟地址;
步骤4:通过所述源节点容器的网络空间中所部署的网络地址转换规则,将所述虚拟地址转换为实际地址;
步骤5:通过所述实际地址,将所述数据包发送至所述实际地址关联的目标节点。
从上述描述可知,本申请实施例通过在源节点容器的网络空间中部署网络地址转换规则,使得在源节点存在服务请求的时候,在源节点的容器内部就可以完成从虚拟地址到实际地址的转换,不需要依赖宿主机网络空间的地址转换,解决了宿主空间与容器空间隔离导致的宿主机中部署的NAT规则无法对Pod数据流产生影响的问题,达到了Pod之间可以简单高效进行相互访问的技术效果。
本申请的实施例还提供能够实现上述实施例中的数据处理方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的数据处理方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤1:网络代理模块获取待部署网络地址转换规则;
步骤2:将所述待部署网络地址转换规则,部署在宿主机的网络空间和节点容器的网络空间中。
步骤3:源节点从数据包中提取虚拟地址;
步骤4:通过所述源节点容器的网络空间中所部署的网络地址转换规则,将所述虚拟地址转换为实际地址;
步骤5:通过所述实际地址,将所述数据包发送至所述实际地址关联的目标节点。
从上述描述可知,本申请实施例通过在源节点容器的网络空间中部署网络地址转换规则,使得在源节点存在服务请求的时候,在源节点的容器内部就可以完成从虚拟地址到实际地址的转换,不需要依赖宿主机网络空间的地址转换,解决了宿主空间与容器空间隔离导致的宿主机中部署的NAT规则无法对Pod数据流产生影响的问题,达到了Pod之间可以简单高效进行相互访问的技术效果。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书实施例的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。
Claims (13)
1.一种数据处理方法,其特征在于,所述方法包括:
获取网络地址转换规则;
将所述网络地址转换规则部署在宿主机的网络空间和源节点所在容器的网络空间中;
源节点从数据包中提取虚拟地址;
通过所述源节点所在容器的网络空间中所部署的网络地址转换规则,将所述虚拟地址转换为实际地址;
通过所述实际地址,将所述数据包发送至所述实际地址关联的目标节点。
2.根据权利要求1所述的方法,其特征在于,将所述网络地址转换规则部署在源节点所在容器的网络空间中,包括:
通过内核扩展技术,为同租户下各节点所在容器配置一套相同的网络地址转换规则;
将该网络地址转换规则部署到各节点的直通网卡中。
3.根据权利要求1所述的方法,其特征在于,还包括:
接收宿主机的服务请求;
响应于所述服务请求,通过宿主机的网络空间中部署的网络地址转换规则将所述服务请求对应的虚拟地址转换为实际地址。
4.根据权利要求1所述的方法,其特征在于,所述源节点和所述目标节点属于同一租户。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述源节点和所述目标节点为Kubernetes的最小调度单位。
6.根据权利要求5所述的方法,其特征在于,所述数据包为服务请求,其中,服务通过Kubernetes中的一组最小调度单位提供。
7.一种转换规则部署方法,其特征在于,所述方法包括:
网络代理模块获取待部署网络地址转换规则;
将所述待部署网络地址转换规则,部署在宿主机的网络空间和源节点所在容器的网络空间中。
8.根据权利要求7所述的方法,其特征在于,所述网络代理模块为Kube-Proxy。
9.根据权利要求7所述的方法,其特征在于,将所述待部署网络地址转换规则,部署在节点所在容器的网络空间中,包括:
将所述待部署网络地址转换规则,部署在属于同一租户的多个节点中的各个节点所在容器的网络空间中。
10.一种数据处理装置,其特征在于,位于源节点中,包括:
提取模块,用于从数据包中提取虚拟地址;
转换模块,用于通过所述源节点所在容器的网络空间中所部署的网络地址转换规则,将所述虚拟地址转换为实际地址;
发送模块,用于通过所述实际地址,将所述数据包发送至所述实际地址关联的目标节点;
其中,在从数据包中提取虚拟地址之前还包括:获取网络地址转换规则;将所述网络地址转换规则部署在宿主机的网络空间和源节点所在容器的网络空间中。
11.一种转换规则部署装置,其特征在于,包括:
获取模块,用于获取待部署网络地址转换规则;
部署模块,用于将所述待部署网络地址转换规则,部署在宿主机的网络空间和源节点所在容器的网络空间中。
12.一种数据处理设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至6中任一项所述方法的步骤。
13.一种计算机可读存储介质,其上存储有计算机指令,所述指令被处理器执行时实现权利要求1至6中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010673120.3A CN113301174B (zh) | 2020-07-14 | 2020-07-14 | 数据处理、转换规则部署方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010673120.3A CN113301174B (zh) | 2020-07-14 | 2020-07-14 | 数据处理、转换规则部署方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113301174A CN113301174A (zh) | 2021-08-24 |
CN113301174B true CN113301174B (zh) | 2023-04-28 |
Family
ID=77318266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010673120.3A Active CN113301174B (zh) | 2020-07-14 | 2020-07-14 | 数据处理、转换规则部署方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113301174B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113746930A (zh) * | 2021-09-09 | 2021-12-03 | 上海格尔安全科技有限公司 | 网络负载均衡方法、装置、计算机设备和存储介质 |
CN117439854A (zh) * | 2022-07-15 | 2024-01-23 | 中兴通讯股份有限公司 | 数据处理方法、设备及存储介质 |
CN116233135B (zh) * | 2023-05-06 | 2023-07-11 | 华控清交信息科技(北京)有限公司 | 一种数据传输方法、系统、装置和可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109451084A (zh) * | 2018-09-14 | 2019-03-08 | 华为技术有限公司 | 一种服务访问方法及装置 |
CN111314450A (zh) * | 2020-02-06 | 2020-06-19 | 恒生电子股份有限公司 | 数据的传输方法、装置、电子设备和计算机存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10812374B2 (en) * | 2018-09-21 | 2020-10-20 | Cisco Technology, Inc. | Segment routing with fast reroute for container networking |
CN111262784B (zh) * | 2020-01-13 | 2022-05-17 | 杭州朗和科技有限公司 | 报文转发方法、报文转发装置、存储介质及电子设备 |
-
2020
- 2020-07-14 CN CN202010673120.3A patent/CN113301174B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109451084A (zh) * | 2018-09-14 | 2019-03-08 | 华为技术有限公司 | 一种服务访问方法及装置 |
CN111314450A (zh) * | 2020-02-06 | 2020-06-19 | 恒生电子股份有限公司 | 数据的传输方法、装置、电子设备和计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113301174A (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113301174B (zh) | 数据处理、转换规则部署方法和装置 | |
US11895577B2 (en) | Network slice selection method and apparatus | |
CN109194502B (zh) | 多租户容器云计算系统的管理方法 | |
US9384030B2 (en) | System and method for deploying a dynamic virtual network address translation appliance | |
WO2015031512A1 (en) | System and method for mobile network function virtualization | |
KR20140057553A (ko) | 가상화된 네트워크와 비-가상화된 네트워크 간 가상화 게이트웨이 | |
CN112104499B (zh) | 一种容器网络模型构建方法、装置、设备及介质 | |
CN114064206A (zh) | 一种访问边缘节点的pod方法、系统、设备及存储介质 | |
CN115086166B (zh) | 计算系统、容器网络配置方法及存储介质 | |
CN115086330A (zh) | 跨集群负载均衡系统 | |
CN114124714B (zh) | 一种多层级网络部署方法、装置、设备及存储介质 | |
CN116800616B (zh) | 虚拟化网络设备的管理方法及相关装置 | |
CN108270856B (zh) | 基于Docker技术的逻辑CPE设备的虚拟化管理系统及其配置方法 | |
JP2024501005A (ja) | コンテナクラスタのための管理方法および装置 | |
KR20220104241A (ko) | 네트워크 작업 방법, 장치, 설비 및 저장매체 | |
CN111355602B (zh) | 一种资源对象的管理方法及装置 | |
CN116760834A (zh) | 一种负载均衡方法、系统、设备以及存储介质 | |
CN113992721B (zh) | 一种智能终端管控方法、系统、设备及存储介质 | |
CN112583740B (zh) | 网络通信方法及装置 | |
US10075304B2 (en) | Multiple gateway operation on single operating system | |
CN114816651A (zh) | 一种通信方法、装置以及系统 | |
CN105591922A (zh) | 一种报文的传输方法和装置 | |
US11785445B1 (en) | Wireless communication service over a network exposure function and multiple unified data elements | |
Maciocco et al. | Edge cloud: An essential component of 5G networks | |
CN117032905B (zh) | 容器集群与块存储的关联方法、系统及虚拟机 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40057999 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |