一种多容器网络接口的容器通信方法及系统与流程

文档序号:35208745发布日期:2023-08-24 02:13阅读:30来源:国知局
一种多容器网络接口的容器通信方法及系统与流程

本发明涉及通信,尤其涉及一种多容器网络接口的容器通信方法及系统。


背景技术:

1、容器网络接口(container network interface,cni)是kubernetes定义的进行容器网络配置的接口标准,cni插件是指服务cni标准的网络配置工具。服务资源(service)是kubernetes集群实现微服务的核心资源,用于为一组提供服务的pod抽象出一个稳定的网络访问地址。在kubernetes集群中,一般是使用多个cni插件为pod配置多个容器网络接口,而由于pod针对ip地址并不敏感,pod在重建之后ip地址会发生变化,因此通常使用服务资源为pod提供统一的访问入口。在kubernetes集群的多cni插件应用场景下,在pod和服务资源的创建过程中,服务资源的后端一般匹配pod默认网络,而不同网络模型的不匹配则容易造成pod无法访问服务资源。

2、虽然现有技术中提供了指定服务资源后端网络的解决方案,但存在一定的局限性,不能对pod访问服务资源的流量作精细化管理,也存在pod无法访问服务资源的问题。举例而言,kubernetes集群中部署两个pod和一个服务资源,分别通过calico插件与ipvlan插件为pod配置两个容器网络接口(即,eth0接口与eth1接口),服务资源匹配其中一个pod并指定其后端网络(以eth0接口为例)。在另一个pod访问服务资源时,若请求的流量默认从eth1接口发送,而服务资源后端网络指定为eth0接口,由于发送方和接收方的网络模型不一致,进而导致pod无法访问服务资源。另外,若ipvlan插件没有pod访问服务资源的能力,即使发送方和接收方的网络模型一致,也会导致pod无法访问服务资源。

3、有鉴于此,有必要对现有技术中的多容器网络接口下pod访问服务资源的实现方法予以改进,以解决上述问题。


技术实现思路

1、本发明的目的在于解决现有技术中服务资源后端通常匹配pod的默认网络以及不能对pod访问服务资源的流量作精细化管理所导致的影响pod访问服务资源能力的问题。

2、为实现上述目的,本发明提供了一种多容器网络接口的容器通信方法,包括:

3、由部署于集群的准入控制模块对部署于集群所含控制节点的api服务器执行监听操作,于集群所含工作节点的预配置标签所属命名空间对应的pod内创建服务代理,监听工作节点内服务资源变化,获取服务资源对应的配置信息,并判断配置信息是否包含自定义转发注解;

4、若是,基于轮询算法从服务资源对应的多个pod中选举出目标pod,以由目标pod直接响应外部请求;

5、若否,从纳管服务代理的pod对应的多个容器网络接口中确定与配置信息所包含的后端网络对象匹配的目标容器网络接口,以基于所述目标容器网络接口由纳管服务代理的pod间接响应外部请求。

6、作为本发明的进一步改进,所述pod内创建服务代理包括:

7、准入控制模块对api服务器执行监听操作,当监听到pod处理请求时,拦截所述pod处理请求,并获取pod处理请求对应的pod所属命名空间,在pod所属命名空间被标记为预配置标签时,对pod处理请求执行修改操作,由api服务器基于修改后的pod处理请求于pod内创建服务代理。

8、作为本发明的进一步改进,所述服务代理以边车模式部署于pod内;

9、所述对pod处理请求执行修改操作,包括:

10、向pod对应的规范所包含的容器列表中添加服务代理容器,以形成修改后的pod处理请求。

11、作为本发明的进一步改进,所述监听工作节点内服务资源变化由部署于集群的服务管理模块对api服务器执行监听操作予以实现,并由所述服务管理模块获取服务资源对应的配置信息。

12、作为本发明的进一步改进,还包括:

13、服务管理模块对api服务器执行监听操作,在监听到服务资源处理请求时,基于服务资源处理请求是否携带指定网络注解确定服务资源对应的后端网络对象。

14、作为本发明的进一步改进,所述基于服务资源处理请求是否携带指定网络注解确定服务资源对应的后端网络对象,包括:

15、判断所述服务资源处理请求是否携带指定网络注解;

16、若是,将服务资源对应的后端网络对象更新为指定网络注解对应的指定网络对象;

17、若否,拒绝对服务资源对应的后端网络对象进行更新,以由默认网络对象确定服务资源对应的后端网络对象。

18、作为本发明的进一步改进,在所述服务管理模块获取服务资源对应的配置信息之后,还包括:

19、所述服务管理模块将所述配置信息下发至用于判断配置信息中是否包含自定义转发注解并部署于集群的服务接口模块,所述服务接口模块根据判断结果生成开启流量代理指令或者更新静态路由指令并下发至部署于pod的服务代理。

20、作为本发明的进一步改进,

21、若配置信息包含自定义转发注解,服务接口模块向服务代理下发开启流量代理指令,服务代理开启负载均衡服务,以基于轮询算法从服务资源对应的多个pod中选举出目标pod,以由目标pod直接响应外部请求;

22、若配置信息不包含自定义转发注解,服务接口模块向服务代理下发更新静态路由指令,服务代理从纳管服务代理的pod对应的多个容器网络接口中确定与配置信息所包含的后端网络对象匹配的目标容器网络接口,以基于所述目标容器网络接口由纳管服务代理的pod间接响应外部请求。

23、作为本发明的进一步改进,服务接口模块与服务代理之间通过远程过程调用协议建立远程过程调用连接,服务代理基于所述远程过程调用连接接收服务接口模块所下发的开启流量代理指令与更新静态路由指令。

24、基于相同发明思想,本发明还提供了一种多容器网络接口的容器通信系统,包括:

25、获取模块,所述获取模块由部署于集群的准入控制模块对部署于集群所含控制节点的api服务器执行监听操作,于集群所含工作节点的预配置标签所属命名空间对应的pod内创建服务代理,监听工作节点内服务资源变化,获取服务资源对应的配置信息,并判断配置信息中是否包含自定义转发注解;

26、执行模块,若是,所述执行模块基于轮询算法从服务资源对应的多个pod中选举出目标pod,以由目标pod直接响应外部请求;若否,所述执行模块从纳管服务代理的pod对应的多个容器网络接口中确定与配置信息所包含的后端网络对象匹配的目标容器网络接口,以基于所述目标容器网络接口由纳管服务代理的pod间接响应外部请求。

27、与现有技术相比,本发明的有益效果是:

28、由部署于集群的准入控制模块对部署于集群所含控制节点的api服务器执行监听操作,于集群所含工作节点的预配置标签所属命名空间对应的pod内创建服务代理,监听工作节点内服务资源变化,获取服务资源对应的配置信息,并判断配置信息是否包含自定义转发注解;若是,基于轮询算法从服务资源对应的多个pod中选举出目标pod,以由目标pod直接响应外部请求,以弥补现有技术中有些cni插件缺乏pod访问服务资源能力的不足;若否,从纳管服务代理的pod对应的多个容器网络接口中确定与配置信息所包含的后端网络对象匹配的目标容器网络接口,以基于目标容器网络接口由纳管服务代理的pod间接响应外部请求,以实现了从服务资源的后端网络对象匹配的容器网络接口访问,以最终达到对pod访问服务资源的流量作精细化管理的目的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1