容器服务的访问控制方法、装置、设备及计算机存储介质与流程

文档序号:31339386发布日期:2022-08-31 09:42阅读:114来源:国知局
容器服务的访问控制方法、装置、设备及计算机存储介质与流程

1.本发明实施例涉及互联网技术领域,具体涉及一种容器服务的访问控制方法、装置、设备以及计算机存储介质。


背景技术:

2.现有技术在使用容器集群管理器如kubernetes部署业务服务时,容器集群可以通过第三方组件将业务服务监听的相应端口暴露到集群外,以供集群外的客户端访问,其共同点是需要在业务服务部署时声明自己监听的一个或几个网络端口,由容器集群通过nat或第三方组件暴露到集群外。业务服务运行时必须按照部署时的声明监听相应的端口才能接收到外部的请求。
3.而对于需要在运行过程中与客户端进行协商才能确定的监听端口的容器化服务,由于运行时kubernetes等容器集群无法参与并且运行过程中协商所确定的监听端口是动态变化的,因此现有的部署方法存在无法将动态协商的端口暴露到容器集群集群外的问题。


技术实现要素:

4.鉴于上述问题,本发明实施例提供了一种容器服务的访问控制方法,用于解决现有技术中存在的运行过程中协商所确定的容器端口无法被集群外访问的问题。
5.根据本发明实施例的一个方面,提供了一种容器服务的访问控制方法,所述方法包括:
6.获取发送至目标主机端口的访问请求;
7.根据端口映射关系确定所述目标主机端口对应的目标容器端口;其中,所述目标容器端口为目标服务实例所监听的端口;所述端口映射关系根据所述目标服务实例对应的动态端口段确定;所述动态端口段为所述目标服务实例预先声明的;
8.将所述访问请求转发至所述目标容器端口。
9.在一种可选的方式中,所述动态端口段包括容器动态端口段以及主机动态端口段;所述方法还包括:
10.根据所述目标服务实例发送的端口监听请求确定待监听容器端口;所述目标容器端口为所述待监听容器端口中的一个;
11.当确定所述待监听容器端口与所述容器动态端口段匹配时,根据所述主机动态端口段确定可选主机端口;所述目标主机端口为所述可选主机端口中的一个;
12.在所述可选主机端口与所述待监听端口之间建立映射关系。
13.在一种可选的方式中,所述方法还包括:
14.将所述主机动态端口段中任一空闲的主机端口确定为所述可选主机端口。
15.在一种可选的方式中,所述方法还包括:
16.当确定针对linux系统中内核函数的调用请求中包括所述目标服务实例对应的目
标网络命名空间标识时,对所述内核函数进行拦截,得到所述待监听容器端口;其中,所述内核函数用于实现所述目标服务实例对所述待监听容器端口的监听。
17.在一种可选的方式中,所述方法还包括:
18.当确定所述目标服务实例对应的所述动态端口段不为空时,获取所述目标服务实例的所述目标网络命名空间标识;
19.将所述目标网络命名空间标识发送至拦截器;所述拦截器部署于所述linux系统的内核模块中;所述拦截器用于对所述内核函数进行拦截。
20.在一种可选的方式中,所述容器集群中包括多个主机节点;一个主机节点上部署有多个可选服务实例;所述目标服务实例为所述可选服务实例中的一个;所述动态端口段包括主机动态端口段;所述方法还包括:
21.当确定同一所述主机节点上的多个所述可选服务实例对应的所述主机动态端口段存在交集时,将所述可选服务实例迁移部署到其他主机节点上。
22.在一种可选的方式中,所述方法还包括:
23.获取各个所述主机节点的流量统计信息以及所述可选服务实例的流量调度规则和流量预估信息;
24.根据所述流量统计信息、流量调度规则以及流量预估信息确定各个所述服务实例所部署于的所述主机节点。
25.根据本发明实施例的另一方面,提供了一种容器服务的访问控制装置,包括:
26.获取发送至目标主机端口的访问请求;
27.根据端口映射关系确定所述目标主机端口对应的目标容器端口;其中,所述目标容器端口为目标服务实例所监听的端口;所述端口映射关系根据所述目标服务实例对应的动态端口段确定;所述动态端口段为所述目标服务实例预先声明的;
28.将所述访问请求转发至所述目标容器端口。
29.根据本发明实施例的另一方面,提供了一种容器服务的访问控制设备,包括:
30.获取发送至目标主机端口的访问请求;
31.根据端口映射关系确定所述目标主机端口对应的目标容器端口;其中,所述目标容器端口为目标服务实例所监听的端口;所述端口映射关系根据所述目标服务实例对应的动态端口段确定;所述动态端口段为所述目标服务实例预先声明的;
32.将所述访问请求转发至所述目标容器端口。
33.根据本发明实施例的又一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使容器服务的访问控制设备执行以下操作:
34.获取发送至目标主机端口的访问请求;
35.根据端口映射关系确定所述目标主机端口对应的目标容器端口;其中,所述目标容器端口为目标服务实例所监听的端口;所述端口映射关系根据所述目标服务实例对应的动态端口段确定;所述动态端口段为所述目标服务实例预先声明的;
36.将所述访问请求转发至所述目标容器端口。
37.本发明实施例通过获取发送至目标主机端口的访问请求;根据端口映射关系确定所述目标主机端口对应的目标容器端口;其中,所述目标容器端口为目标服务实例所监听的端口;所述端口映射关系根据所述目标服务实例对应的动态端口段确定;所述动态端口
段为所述目标服务实例预先声明的;从而实现了将目标实例在运行过程中所动态监听的容器端口与对外的主机端口进行网络规则的映射,从而通过该映射将集群外的所述访问请求转发至集群外的目标服务实例所新监听的目标容器端口,实现服务运行过程中的动态端口的对外暴露。
38.上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
39.附图仅用于示出实施方式,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
40.图1示出了本发明实施例提供的容器服务的访问控制方法的流程示意图;
41.图2示出了本发明再一实施例提供的容器服务的访问控制方法的流程示意图;
42.图3示出了本发明实施例提供的容器服务的访问控制装置的结构示意图;
43.图4示出了本发明实施例提供的容器服务的访问控制设备的结构示意图。
具体实施方式
44.下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。
45.在进行本发明实施例的说明之前,先对现有技术进行说明。
46.使用kubernetes部署业务服务程序时,常常需要将外部流量路由到业务服务程序。现有的kubernetes支持clusterip、nodeport、loadbalancer、ingress等第三方控件的方式暴露集群中的服务,供集群外的客户端访问。以上每种方式分别适用于不同场景,其共同点是需要在业务服务部署时就声明自己监听的一个或几个网络端口,由kubernetes通过nat或第三方组件暴露到集群外。业务服务运行时必须按照部署时的声明监听相应的端口才能接收到外部的请求。
47.但kubernetes只在服务部署阶段通过部署脚本的内容实现端口的对外暴露。在服务运行过程中,kubernetes并没有机制感知到端口暴露的需求,因此,若是服务运行过程中产生了需要对外暴露新端口的需求,现有技术中的kubernetes的端口部署方法是无法实现的,由此就导致无法通过新端口对外提供服务。因此,现有的容器服务的访问控制方法存在运行过程中服务与客户端协商得到的动态容器端口无法对集群外暴露,从而客户端无法从集群外访问该协商得到的容器端口的问题。
48.图1示出了本发明实施例提供的容器服务的访问控制方法的流程图,该方法由计算机处理设备执行。该计算机处理设备可以包括手机、笔记本电脑等。如图1所示,该方法包括以下步骤:
49.步骤10:获取发送至目标主机端口的访问请求。
50.在本发明的一个实施例中,目标主机端口是目标服务实例所部署于的主机上的一个端口,目标主机端口用于访问者从外部访问容器集群,其中,容器集群可以是
kubernetes,容器集群由多个主机节点组成,各个主机节点上部署有多个容器。一个目标服务实例一般对应于一个容器。
51.步骤20:根据端口映射关系确定所述目标主机端口对应的目标容器端口;其中,所述目标容器端口为目标服务实例所监听的端口;所述端口映射关系根据所述目标服务实例对应的动态端口段确定;所述动态端口段为所述目标服务实例在部署到主机节点上时所声明的。
52.在本发明的一个实施例中,为了为集群外的客户端提供容器服务,目标服务实例需要与客户端进行协商,从而确定通过哪一个容器端口对外提供服务,目标服务实例在和请求容器服务的客户端协商成功之后,会向linux的网络命名空间的内核函数发送调用请求,请求对协商得到的目标容器端口启动监听。因此通过对内核函数的调用的拦截就可以获取目标容器端口。
53.与此同时,考虑到一个主机节点上一般部署有多个服务实例,而各个服务实例在运行过程中与客户端所协商得到的容器端口可能存在冲突。因此可以在目标服务实例创建时,即为其分配一段专用的主机端口段以及容器端口段,以用于后续过程中的协商得到的端口的对外映射,从而使得一个主机上的各个服务实例之间的对外服务不会相互影响。具体地,当目标服务实例部署在主机节点上时,可以声明其所需占用的主机端口段以及容器端口段,以用于后续服务运行过程中对外提供服务使用。端口映射关系用于将集群内部的容器端口与集群对外的主机端口进行映射。
54.在本发明的一个实施例中,所述动态端口段包括容器动态端口段以及主机动态端口段。其中,容器动态端口段包括可用于对外提供服务的容器端口的端口号区间,主机动态端口段包括可用于被集群外访问的主机端口的端口号区间。
55.在步骤20之前还包括:
56.步骤201:根据所述目标服务实例发送的端口监听请求确定待监听容器端口;所述目标容器端口为所述待监听容器端口中的一个。
57.在本发明的一个实施例中,要实现对容器端口的监听需要调用linux系统中的网络命名空间的内核函数,并将待监听容器端口以及监听者的传递给该内核函数,因此可以对内核函数进行监听,当检测到目标服务实例调用内核函数以监听新的容器端口时,则获取内核函数的端口监听的参数,得到待监听容器端口。
58.在本发明的一个实施例中,步骤201还包括:
59.步骤2011:当确定针对linux系统中内核函数的调用请求中包括所述目标服务实例对应的目标网络命名空间标识时,对所述内核函数进行拦截,得到所述待监听容器端口;其中,所述内核函数用于实现所述目标服务实例对所述待监听容器端口的监听。
60.在本发明的一个实施例中,为了实现对新端口的监听,目标服务实例需要调用内核函数,调用请求中包括待监听容器端口以及目标服务实例自身的目标网络命名空间标识。其中,内核函数可以是如:func(port,..,..),其中,port即为目标服务实例所发送的待监听容器端口字段。具体地,可以采用linux中的tracing(追踪)技术实现对内核函数的拦截。
61.步骤2011还包括:步骤210:当确定所述目标服务实例对应的所述动态端口段不为空时,获取所述目标服务实例的所述目标网络命名空间标识。
62.在本发明的一个实施例中,目标服务实例在创建或部署到目标主机节点上时,可以声明其所需占用的动态端口段,当所述目标服务实例对应的所述动态端口段不为空时,说明目标服务实例配置了动态端口段信息,从而需要对目标服务实例启动新容器端口的监听时间进行监听,获取目标服务实例所新监听的容器端口,从而将该新监听的容器端口对集群外暴露。目标网络命名空间标识用于linux系统特异性标识目标服务实例。
63.步骤211:将所述目标网络命名空间标识发送至拦截器;所述拦截器部署于所述linux系统的内核模块中;所述拦截器用于对所述内核函数进行拦截。
64.在本发明的一个实施例中,拦截器对目标网络命名空间标识对内核函数发起的调用请求进行拦截,得到该调用请求中包括的待监听容器端口参数。
65.在本发明的再一个实施例中,还可以创建一个节点监听(pod-watch)服务,pod-watch服务预先在kubernetes集群的每个节点中部署。pod-watch服务用于监听kubernetes容器调度事件,检查调度到本节点的pod是否与dynamicportservice(动态端口服务)的实例选择器匹配,若匹配则收集其信息并发送到内核模块port-watch。
66.其中,dynamicportservice是在kubernetes中自定义的资源对象,用于存储业务服务名称、实例选择器、通讯协议、容器动态端口段、主机动态端口段、网络流量预估(单位可为兆/秒)、网络流量调度规则(最空闲优先、主机流量负载低于某阈值等)信息。
67.实例选择器即为一组标签(每个标签包含一个名称和对应的值,即key:value),服务实例也有一组标签,实例选择器的作用是为了查找dynamicportservice需要负责的服务实例(标签组相同)。若匹配,则说明服务实例是由当前的dynamicportservice所负责处理的,再获取当前的dynamicportservice的动态端口端,与正在部署的dynamicportservice比较,确认是否重复。
68.在本发明的再一个实施例中,在pod-watch服务的基础上还可以创建一个linux内核模块的端口监听(port-watch)服务,port-watch服务预先在kubernetes集群每个节点中部署。port-watch服务用于接收并存储前述的pod-watch服务发送的服务实例信息,拦截创建服务端监听的内核函数调用,并为符合预设条件的端口设置映射关系。其中,预设条件可以包括待监听容器端口位于所述容器动态端口段内。
69.步骤202:当确定所述待监听容器端口与所述容器动态端口段匹配时,根据所述主机动态端口段确定可选主机端口;所述目标主机端口为所述可选主机端口中的一个。
70.在本发明的一个实施例中,当确定待监听容器端口位于所述容器动态端口段内时,确定两者匹配。将匹配的待监听容器端口对外暴露,而不会影响其他服务实例的对外服务。可以从主机动态端口段中任选一个空闲的主机端口作为可选主机端口。
71.在本发明的一个实施例中,步骤202还包括:
72.步骤2021:将所述主机动态端口段中任一空闲的主机端口确定为所述可选主机端口。
73.步骤203:在所述可选主机端口与所述待监听端口之间建立映射关系。
74.在本发明的一个实施例中,映射关系用于在可选主机端口与待监听端口之间建立路由,从而可以将可选主机端口接收到的集群外访问请求按照映射关系转发至对应的待监听端口上,实现对集群内的容器服务的访问。
75.在本发明的一个实施例中,所述容器集群中包括多个所述主机节点;一个所述主
机节点上部署有多个可选服务实例;所述目标服务实例为所述可选服务实例中的一个;所述动态端口段包括主机动态端口段。
76.在步骤20之前还包括:步骤204:当确定同一所述主机节点上的多个所述可选服务实例对应的所述主机动态端口段存在交集时,将所述可选服务实例迁移部署到其他主机节点上。
77.在本发明的一个实施例中,为了避免同一主机上的不同服务实例之间的对外的主机端口冲突,即无法将客户端发送的访问请求发送至对应的主机端口,可以对服务实例在多个主机上的部署进行调度。
78.具体地,可以遍历集群中的全部节点,对于每个节点,调度器从kubernetes apiserver获取到所有在其上部署的dynamicportservice信息,将各个节点已部署的dynamicportservice信息与新增的dynamicportservice的主机动态端口段比较,检查是否存在交集,如果不存在交集则将此节点作为预选节点,否则遍历下一个节点。对于预选节点,从指标库(如prometheus等)获取其网络流量统计信息,并结合新增dynamicportservice的流量预估、流量调度规则,计算节点是否满足部署要求,如果满足,则发布将此dynamicportservice对应的业务服务部署到当前节点的部署信息到kubernetes apiserver,并最终有当前节点的kubelet组件执行服务部署,否则遍历下一个节点。
79.在本发明的再一个实施例中,可以通过对kubernetes的资源调度器可进行扩展来完成资源调度,扩展后的资源调度器用于检查新增dynamicportservice服务通讯协议、主机动态端口段与调度备选主机已部署dynamicportservice服务通讯协议、主机动态端口段存在交集;以及根据主机网络流量统计信息、服务网络流量预估、流量调度规则判断主机空闲网络流量是否满足要求。
80.在步骤204之前还包括:
81.步骤205:获取各个所述主机节点的流量统计信息以及所述可选服务实例的流量调度规则和流量预估信息。
82.在本发明的一个实施例中,流量统计信息包括主机节点的总网络流量。流量调度规则用于表征根据主机的流量负载情况来对服务部署于的主机进行调度的规则。流量调度规则可以包括最空闲优先部署、网络流量低于某阈值情况下优先集中部署到相同主机、网络流量低于某阈值情况下优先分散部署到不同主机中的至少一种。流量预估信息包括各个可选服务实例的预计流量。
83.步骤206:根据所述流量统计信息、流量调度规则以及流量预估信息确定各个所述服务实例所部署于的所述主机节点。
84.在本发明的一个实施例中,首先将流量预估信息与流量统计信息进行匹配,得到各个主机节点的预计负载情况,根据预计负载情况按照流量调度规进行服务的调度。
85.如当流量调度规则为最空闲优先部署时,则将当前待部署的服务实例部署到空闲的主机节点上。
86.当流量调度规则为网络流量低于某阈值情况下优先集中部署到相同主机时,将当前待部署的服务实例部署于上一部署完成的服务实例所部署于的主机,或者当流量调度规则为网络流量低于某阈值情况下优先分散部署到不同主机,将当前待部署的服务实例部署
于与上一部署完成的服务实例所部署于的主机不同的其他主机。
87.步骤30:将所述访问请求转发至所述目标容器端口。
88.在本发明的再一个实施例中,进行容器服务的访问控制的过程还可以如图2所示。
89.如图2所示,步骤a,对于每个需要启用动态端口暴露的业务服务,创建一个kubernetes资源对象dynamicportservice(动态端口服务)。
90.其中,dynamicportservice主要包括如下信息:服务名称、实例选择器、通讯协议(可以是如tcp、udp等)、容器动态端口段、主机动态端口段。
91.通过在kubernetes中声明业务服务的各种信息及规则,即用户对kubernetes提出的要求,后续步骤中调度器及其他组件需要按此资源对象的数据解释执行。
92.步骤2,通过扩展的kubernetes调度器执行端口冲突检查。
93.本发明实施例中使用的是扩展功能后的kubernetes调度器,在完成原有调度功能之外,首先执行端口重复检查,具体包括如下:
94.首先,获取服务实例标签,验证是否匹配某一个dynamicportservice的实例选择器;若匹配,则检查此dynamicportservice服务的通讯协议、主机动态端口段与集群某个节点已部署所有dynamicportservice服务集合的通讯协议、主机动态端口段是否存在重叠;若没有重叠则继续以下步骤,否则对集群中其他节点作以上检查。
95.通过对kubernetes调度器进行扩展,实现避免端口段相同的多个服务部署到同一个节点,导致端口互相冲突,从而影响对外提供服务。
96.步骤c:扩展的kubernetes调度器获取主机流量统计信息,根据服务网络流量预估及网络流量调度规则判断是否可在当前主机部署。
97.网络流量调度规则包含但不限于以下方式:最空闲优先部署、网络流量低于某阈值情况下优先集中部署到相同主机、网络流量低于某阈值情况下优先分散部署到不同主机。调度器选取最符合流量调度规则的主机部署新服务。
98.步骤d:完成调度之后,新服务实例在所调度的节点上启动。
99.所在节点的pod-watch服务从kubernetes apiserver监听容器调度事件,若服务实例调度到本节点并且设置了动态端口段,则等待实例创建,获取实例网络命名空间标识,将网络命名空间标识、通讯协议、容器动态端口段、主机动态端口段发送给当前节点的内核模块port-watch。
100.pod-watch是沟通kubernetes apiserver和内核模块port-watch的桥梁,实现端口段、网络命名空间标识等信息获取及传递。
101.步骤5:通过内核模块port-watch为容器端口、主机端口生成nat规则,使其能通过所部署的集群节点主机端口访问。
102.首先,内核模块port-watch接收并存储网络命名空间标识、通讯协议、容器动态端口段、主机动态端口段,并创建对服务网络命名空间内核函数调用的拦截器。
103.然后,当服务实例启动对某个端口的监听时,内核模块port-watch获取到其所监听的通讯协议、端口,并判断是否在动态端口范围内,若是动态端口,则计算此端口对应的主机端口,并为容器端口、主机端口生成nat规则,使其能通过所部署的集群节点主机端口访问,从而使其暴露到集群外。
104.可选地,当服务实例停止、删除或迁移到其他节点部署时,pod-watch监听到以上
变化,传送所停止容器的网络命名空间标识给内核模块port-watch,port-watch停止对服务网络命名空间的拦截器,清除服务相关nat规则,并删除所存储的服务动态端口段相关记录。通过图2所示出的过程,实现了感知业务服务运行过程中是否新监听了某个容器端口,进而实现对新监听的容器端口的集群外暴露。
105.本发明实施例通过获取发送至目标主机端口的访问请求;根据端口映射关系确定所述目标主机端口对应的目标容器端口;其中,所述目标容器端口为目标服务实例所监听的端口;所述端口映射关系根据所述目标服务实例对应的动态端口段确定;所述动态端口段为所述目标服务实例预先声明的;从而实现了将目标实例在运行过程中所动态监听的容器端口与对外的主机端口进行网络规则的映射,从而通过该映射将集群外的所述访问请求转发至集群外的目标服务实例所新监听的目标容器端口,实现服务运行过程中的动态端口的对外暴露。
106.图3示出了本发明实施例提供的容器服务的访问控制装置的结构示意图。如图3所示,该装置40包括:获取模块401、确定模块402和转发模块403。
107.其中,获取模块401,用于获取发送至目标主机端口的访问请求;
108.确定模块402,用于根据端口映射关系确定所述目标主机端口对应的目标容器端口;其中,所述目标容器端口为目标服务实例所监听的端口;所述端口映射关系根据所述目标服务实例对应的动态端口段确定;所述动态端口段为所述目标服务实例预先声明的;
109.转发模块403,用于将所述访问请求转发至所述目标容器端口。
110.本发明实施例提供的容器服务的访问控制装置所用于执行的操作过程与前述方法实施例大体一致,不再赘述。
111.本发明实施例提供的容器服务的访问控制装置通过获取发送至目标主机端口的访问请求;根据端口映射关系确定所述目标主机端口对应的目标容器端口;其中,所述目标容器端口为目标服务实例所监听的端口;所述端口映射关系根据所述目标服务实例对应的动态端口段确定;所述动态端口段为所述目标服务实例预先声明的;从而实现了将目标实例在运行过程中所动态监听的容器端口与对外的主机端口进行网络规则的映射,从而通过该映射将集群外的所述访问请求转发至集群外的目标服务实例所新监听的目标容器端口,实现服务运行过程中的动态端口的对外暴露。
112.图4示出了本发明实施例提供的容器服务的访问控制设备的结构示意图,本发明具体实施例并不对容器服务的访问控制设备的具体实现做限定。
113.如图4所示,该容器服务的访问控制设备可以包括:处理器(processor)502、通信接口(communications interface)504、存储器(memory)506、以及通信总线508。
114.其中:处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。通信接口504,用于与其它设备比如客户端或其它服务器等的网元通信。处理器502,用于执行程序510,具体可以执行上述用于容器服务的访问控制方法实施例中的相关步骤。
115.具体地,程序510可以包括程序代码,该程序代码包括计算机可执行指令。
116.处理器502可能是中央处理器cpu,或者是特定集成电路asic(application specific integrated circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。容器服务的访问控制设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个cpu;也可以是不同类型的处理器,如一个或多个cpu以及一个或多个asic。
117.存储器506,用于存放程序510。存储器506可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
118.程序510具体可以被处理器502调用使容器服务的访问控制设备执行以下操作:
119.获取发送至目标主机端口的访问请求;
120.根据端口映射关系确定所述目标主机端口对应的目标容器端口;其中,所述目标容器端口为目标服务实例所监听的端口;所述端口映射关系根据所述目标服务实例对应的动态端口段确定;所述动态端口段为所述目标服务实例预先声明的;
121.将所述访问请求转发至所述目标容器端口。
122.本发明实施例提供的容器服务的访问控制设备所用于执行的操作过程与前述方法实施例大体一致,不再赘述。
123.本发明实施例提供的容器服务的访问控制设备通过获取发送至目标主机端口的访问请求;根据端口映射关系确定所述目标主机端口对应的目标容器端口;其中,所述目标容器端口为目标服务实例所监听的端口;所述端口映射关系根据所述目标服务实例对应的动态端口段确定;所述动态端口段为所述目标服务实例预先声明的;从而实现了将目标实例在运行过程中所动态监听的容器端口与对外的主机端口进行网络规则的映射,从而通过该映射将集群外的所述访问请求转发至集群外的目标服务实例所新监听的目标容器端口,实现服务运行过程中的动态端口的对外暴露。
124.本发明实施例提供了一种计算机可读存储介质,所述存储介质存储有至少一可执行指令,该可执行指令在容器服务的访问控制设备上运行时,使得所述容器服务的访问控制设备执行上述任意方法实施例中的容器服务的访问控制方法。
125.可执行指令具体可以用于使得容器服务的访问控制设备执行以下操作:
126.获取发送至目标主机端口的访问请求;
127.根据端口映射关系确定所述目标主机端口对应的目标容器端口;其中,所述目标容器端口为目标服务实例所监听的端口;所述端口映射关系根据所述目标服务实例对应的动态端口段确定;所述动态端口段为所述目标服务实例预先声明的;
128.将所述访问请求转发至所述目标容器端口。
129.本发明实施例提供的计算机存储介质所存储的指令所用于执行的操作过程与前述方法实施例大体一致,不再赘述。
130.本发明实施例提供的计算机存储介质所存储的指令通过获取发送至目标主机端口的访问请求;根据端口映射关系确定所述目标主机端口对应的目标容器端口;其中,所述目标容器端口为目标服务实例所监听的端口;所述端口映射关系根据所述目标服务实例对应的动态端口段确定;所述动态端口段为所述目标服务实例预先声明的;从而实现了将目标实例在运行过程中所动态监听的容器端口与对外的主机端口进行网络规则的映射,从而通过该映射将集群外的所述访问请求转发至集群外的目标服务实例所新监听的目标容器端口,实现服务运行过程中的动态端口的对外暴露。
131.本发明实施例提供一种容器服务的访问控制装置,用于执行上述容器服务的访问控制方法。
132.本发明实施例提供了一种计算机程序,所述计算机程序可被处理器调用使容器服务的访问控制设备执行上述任意方法实施例中的容器服务的访问控制方法。
133.本发明实施例提供了一种计算机程序产品,计算机程序产品包括存储在计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令在计算机上运行时,使得所述计算机执行上述任意方法实施例中的容器服务的访问控制方法。
134.在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
135.在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
136.类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。
137.本领域技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
138.应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1