CN113596159B - 基于k8s云容器平台的集群通信方法及装置 - Google Patents
基于k8s云容器平台的集群通信方法及装置 Download PDFInfo
- Publication number
- CN113596159B CN113596159B CN202110871407.1A CN202110871407A CN113596159B CN 113596159 B CN113596159 B CN 113596159B CN 202110871407 A CN202110871407 A CN 202110871407A CN 113596159 B CN113596159 B CN 113596159B
- Authority
- CN
- China
- Prior art keywords
- cluster
- port
- pod
- host
- communication
- 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
- 238000004891 communication Methods 0.000 title claims abstract description 71
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000003068 static effect Effects 0.000 claims abstract description 28
- 230000004044 response Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 241000322338 Loeseliastrum Species 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种基于k8s云容器平台的集群通信方法及装置,该k8s云容器平台的集群外部主机和集群内部pod属于同一局域网,该方法包括以下步骤:在集群外部主机上添加需要访问的集群内部pod的IP段对应的静态路由;设置集群外部主机可以访问集群内部的端口范围;结合iptables和iptables‑services软件配置端口规则;根据端口范围创建端口池并将端口放入端口池中;当集群外部主机作为服务端,集群内部pod作为客户端,进行TCP通信时,在集群内部pod建立socket之前,从端口池中获取未占用的端口,集群内部pod绑定该端口建立socket连接和集群外部主机进行socket通讯。本发明实现了k8s集群外的主机作为TCP服务端,集群内的pod作为TCP客户端的TCP正常通信。
Description
技术领域
本发明涉及通信领域,尤其涉及一种基于k8s云容器平台的集群通信方法及装置。
背景技术
Kubernetes是Goole开源的容器集群管理系统,它是一个开源的、用于管理云平台中多个主机上的容器化的应用。它是一种工业级的编排平台,主要提供服务的部署、弹性和管理,具有可以部署应用、扩展机制和维护等多种功能,使得跨机器运行的容器化的应用可以更加方便管理,Kubernetes的核心功能包括:服务发现和负载均衡,服务自动装箱,容器存储编排,容器故障恢复,自动发布和回滚,配置和密钥存储,服务水平伸缩,批量执行以及守护进程任务,探针。
在k8s集群部署完毕后,若外部主机和内部pod(容器)属于同一局域网,当容器云平台和外部网络需要通过Socket实现TCP通信时,就会面临一个问题,外部主机无法访问内部pod的地址,双方不能通信。当容器云平台和外部网络需要通过Socket实现TCP通信时,服务端响应数据给客户端时,客户端接收数据的端口是随机的。而若此时云平台的内部某个pod是客户端的话,pod能向服务端发送数据,但是服务端向pod发送数据时,由于端口随机,可能会遇到随机分配的端口受限,不能访问集群内部的客户端,导致不能正常通讯。
发明内容
本发明的目的在于提供一种基于k8s云容器平台的集群通信方法及装置,旨在用于保证k8s云容器平台和外部网络进行正常的TCP通信,并且保证其安全,不受外部攻击。
本发明是这样实现的:
第一方面,本发明提供一种基于k8s云容器平台的集群通信方法,该k8s云容器平台的集群外部主机和集群内部pod属于同一局域网,该方法包括以下步骤:
在集群外部主机上添加需要访问的集群内部pod的IP段对应的静态路由;
设置集群外部主机可以访问集群内部的端口范围;
结合iptables和iptables-services软件配置端口规则,对集群外部主机可以访问集群内部的端口范围以及集群内部pod访问集群外部主机的端口进行配置;
根据端口范围创建端口池并将对应的的端口放入端口池中;
当集群外部主机作为服务端,集群内部pod作为客户端,进行TCP通信时,在集群内部pod建立socket之前,从端口池中随机获取一个端口,检查是否已占用,若占用了,则重新获取端口,若没被占用,则集群内部pod绑定该端口建立socket连接,开始和集群外部主机进行socket通讯。
进一步地,所述在集群外部主机上添加需要访问的集群内部pod的IP段对应的静态路由具体包括:
获取各需要访问的集群内部pod访问集群外部主机时的出口IP地址,根据获取的出口IP地址在集群外部主机上添加对应的静态路由。
进一步地,在集群外部主机上添加集群内所有pod的IP段对应的静态路由。
进一步地,所述结合iptables和iptables-services软件配置端口规则具体包括:
首先添加默认拒绝访问的规则;
然后添加放行访问对应端口请求报文和响应报文规则。
进一步地,所述通过设置iptables端口规则来配置集群外部主机可以访问的集群内部的端口范围具体如下:
首先添加默认拒绝访问的规则;
然后添加放行访问端口的请求报文规则以及放行所有响应报文的规则。
进一步地,对设置的端口规则执行保存命令。
第二方面,本发明提供一种基于k8s云容器平台的集群通信方法,该k8s云容器平台的集群外部主机和集群内部pod属于同一局域网,该方法包括以下步骤:
在集群外部主机上添加需要访问的集群内部pod的IP段对应的静态路由;
结合iptables和iptables-services软件配置端口规则,对集群内部pod访问集群外部主机的端口范围以及集群外部主机访问集群内部的端口进行配置;
根据端口范围创建端口池并将对应的的端口放入端口池中;
当集群外部主机作为客户端,集群内部pod作为服务端,进行TCP通信时,在集群外部主机建立socket之前,从端口池中随机获取一个端口,检查是否已占用,若占用了,则重新获取端口,若没被占用,则集群外部主机绑定该端口建立socket连接,开始和集群内部pod进行socket正常通讯。
第三方面,本发明提供一种基于k8s云容器平台的集群通信装置,该k8s云容器平台的集群外部主机和集群内部pod属于同一局域网,该装置包括:
静态路由添加模块,用于在集群外部主机上添加需要访问的集群内部pod的IP段对应的静态路由;
端口范围设置模块,用于设置集群外部主机可以访问集群内部的端口范围;
端口规则配置模块,用于结合iptables和iptables-services软件配置端口规则,对集群外部主机可以访问集群内部的端口范围以及集群内部pod访问集群外部主机的端口进行配置;
端口池创建模块,用于根据端口范围创建端口池并将对应的的端口放入端口池中;
socket通讯建立模块,用于当集群外部主机作为服务端,集群内部pod作为客户端,进行TCP通信时,在集群内部pod建立socket之前,从端口池中随机获取一个端口,检查是否已占用,若占用了,则重新获取端口,若没被占用,则集群内部pod绑定该端口建立socket连接,开始和集群外部主机进行socket通讯。
第四方面,本发明提供一种基于k8s云容器平台的集群通信装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上任一所述方法的步骤。
第五方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述方法的步骤。
与现有技术相比,本发明具有以下有益效果:
本发明提供的这种基于k8s云容器平台的集群通信方法及装置,针对k8s集群外部主机和内部pod所属同一局域网时,双方无法进行TCP通信的问题,首先在集群外的主机上做调整,在集群外部主机上添加需要访问的集群内部pod的IP段对应的静态路由,实现了外部主机与集群内的多个pod的通信;其次,本发明利用iptables和iptables-services软件相结合的方式管理端口,配置端口规则,并根据端口范围创建端口池并将对应的的端口放入端口池中;最后,当集群外部主机作为客户端,集群内部pod作为服务端,进行TCP通信时,在集群外部主机建立socket之前,从端口池中随机获取一个端口,检查是否已占用,若占用了,则重新获取端口,若没被占用,则集群外部主机绑定该端口建立socket连接,开始和集群内部pod进行socket正常通讯。实现了k8s集群外的主机作为TCP服务端,集群内的pod作为TCP客户端的TCP正常通信,并且能保证其安全,不受外部攻击。
附图说明
图1为本发明实施例提供的一种基于k8s云容器平台的集群通信方法的流程图;
图2为本发明实施例提供的一种k8s云容器平台的架构图;
图3为本发明实施例提供的一种k8s云容器平台的网络结构简图;
图4为本发明实施例提供的基于k8s云容器平台的集群通信装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供一种基于k8s云容器平台的集群通信方法,图2为k8s云容器平台的架构图,本发明实施例的前提是k8s云容器平台的集群外部主机和集群内部pod属于同一局域网,即集群内部pod能访问集群外部主机,但是集群外部主机无法访问集群内部pod。
该方法包括以下步骤:
S101、在集群外部主机上添加需要访问的集群内部pod的IP段对应的静态路由;
该步骤具体包括:获取各需要访问的集群内部pod访问集群外部主机时的出口IP地址,根据获取的出口IP地址在集群外部主机上添加对应的静态路由。
具体的实施步骤如下:
①通过tcpdump获取pod访问集群外主机时的出口IP地址。
先在一个Pod中去telnet外部主机的地址,然后在外部主机上抓包:
#进入pod中
kubectl exec–it user-api-764d68b678-54kt2 bash
#telnet一个设置好的端口,并且没有被占用,目的是防止抓包时被其他信息干扰
telnet 192.168.31.6712345
外部主机上抓包
#外部主机上抓包,指定端口12345即可
tcpdump–nni any port 12345
Telnet结果
#telnet 192.168.31.6712345
Trying 192.168.31.67…
telnet:connect to address 192.168.31.67:Connection refused
tcpdump抓包结果
#tcpdump-nni any port 12345
tcpdump:verbose output suppressed,use-v or-vv for full protocoldecode
listening on any,link-type LINUX_SLL(Linux cooked),capture size262144bytes
12:52:28.644112IP 192.168.31.17.35066>192.168.31.67.12345:Flags[S],seq 3592146803,win 28000,options[mss 1400,sackOK,TS val 780676435ecr0,nop,wscale 7],length 0
12:52:28.644169IP 192.168.0.31.67>192.168.31.17.35066:Flags[R.],seq0,ack 3592146804,win 0,length 0
由此可以看出,在pod中进行telnet时,访问外部主机的源地址为node节点的IP地址,即192.168.31.17
②外部主机上添加静态路由
用如下命令查看pod的IP地址:
kubectl get pod–o wide|grep user-api
user-api-764d68b678-54kt21/1Running 03d17h 10.200.1.91alpha-node-01<none><none>
由此可看出pod的IP地址为:10.200.1.91
当获取到pod的IP地址后,即可利用如下命令去外部主机上添加路由了
route add–host 10.200.1.91gw 192.168.31.17
添加完毕后,可以验证如下所示:
#ping下是否能通
#ping 10.200.1.91
PING 10.200.1.91(10.200.1.91)56(84)bytes of data.
64bytes from 10.200.1.91:icmp_seq=1ttl=63time=0.296ms
64bytes from 10.200.1.91:icmp_seq=2ttl=63time=0.258ms
#再访问下服务是否可以通
#curl 10.200.1.91:8088/api/healthy/check
{"code":0,"message":"success"}
由上述验证完毕后,可以发现是可行的。因此,本发明实施例通过增加一条静态路由解决了同一局域网的外部主机和内部的pod的通信问题。但是,实际的k8s集群环境中,有上百个类似的pod,可以在集群外部主机上添加需要访问的集群内部pod的IP段对应的静态路由。优选地,在集群外部主机上添加集群内所有pod的IP段对应的静态路由。
针对多pod添加静态路由,本发明采用如下方法:
当集群使用的calico网络插件时,每一台节点分配的子网各不相同,比如node1分配的IP网段为10.200.1.0/24,node2的IP段为10.200.36.0/24,因此,本发明实施例添加整个IP段到外部主机的路由表中,如下所示:
route add–net 10.200.1.0/24gw 192.168.31.17
route add–net 10.200.36.0/24gw 192.168.31.45
S102、设置集群外部主机可以访问集群内部的端口范围;
当在同一局域网的集群外部主机和集群内部pod可以通信后,开始设计集群外部和内部的端口问题。本发明的设计前提是,容器云平台中对外可以访问的端口号是有一定的范围的,这个可以在配置文件/etc/kubernetes/manifests/kube-apiserver.yaml中进行修改。
S103、结合iptables和iptables-services软件配置端口规则,对集群外部主机可以访问集群内部的端口范围以及集群内部pod访问集群外部主机的端口进行配置;
iptables,在Linux下就是指Linux内置的防火墙。如果不指定端口范围,iptables很难对任意端口开放的,如果iptables允许任意端口访问,那和不设置防火墙就没有区别,所以需要指定数据传输端口的一个范围。本发明结合iptables和iptables-services软件管理端口规则,配置范围内的端口,
所述结合iptables和iptables-services软件配置端口规则具体包括:
首先添加默认拒绝访问的规则;
然后添加放行访问对应端口请求报文和响应报文规则。
具体的端口管理规则如下:
如图3所示,假设圆形表示的网络为集群内部网络,假设内部网络的网段为10.200.1.0/24,此内部网络中存在pod主机C,主机C的IP地址为10.200.1.1。
图3中主机B作为网络防火墙的角色,也属于集群内部网络,主机A充当了集群外部网络主机的角色,A主机的IP地址为192.168.31.67,我们在步骤S101中已经设置了静态路由,所以,此时,主机A能够访问集群内部的主机C服务了。接下来,我们通过iptables规则设置端口,保证集群外部和集群内部在设置的端口范围内才可以正常通信。
由于iptables作为"网络防火墙"角色,所以需要在filter表中的FORWARD链中设置规则。可以使用"白名单机制",先添加一条默认拒绝的规则,然后再为需要放行的报文设置规则。配置规则时需要考虑"方向问题",针对请求报文与回应报文,考虑报文的源地址与目标地址,源端口与目标端口等。
在主机B上,我们开始设置iptables端口规则。首先,添加默认拒绝的规则:
iptables-A FORWARD-j REJECT
其次,为放行的报文添加规则:
假如我们设置TCP客户端(集群外部)的端口为60001,则在主机B中,执行如下命令:
在主机B上放行集群内部主机访问60001端口的请求
iptables-I FORWARD-s 10.200.1.0/24-p tcp--dport 60001-j ACCEPT
在主机B上放行集群外部主机的回应报文
iptables-I FORWARD-d 10.200.1.0/24-p tcp--sport 60001-j ACCEPT
同理,设置TCP服务端(集群内部)的端口为40002,则在主机B上,执行如下命令:
在主机B上放行集群外部主机访问40002端口的请求
iptables-I FORWARD-s 192.168.31.67-p tcp--dport 40002-j ACCEPT
在主机B上放行集群内部主机的回应报文
iptables-I FORWARD-d 192.168.31.67-p tcp--sport 40002–j ACCEPT
为了优化上述规则,我们可以不管是由内而外还是由外而内,只要是“响应报文”,统统放行,即所述通过设置iptables端口规则来配置集群外部主机可以访问的集群内部的端口范围具体如下:
首先添加默认拒绝访问的规则;
然后添加放行访问对应端口请求报文和响应报文规则。
具体设置如下:
首先删除B主机上的配置的回应报文的两条规则,然后执行如下命令:
iptables-I FORWARD-m state-state ESTABLISGED,RELATED,-j ACCEPT
只需要在网络防火墙主机的FORWARD链中添加如上一条规则,就可以将绝大多数响应报文放行了,不管是外部响应内部,还是内部响应外部,一条规则就能搞定,当iptables作为网络防火墙时,每次配置规则时都要考虑“双向”的问题,但是配置完上述规则后,我们只要考虑请求报文的方向就行了,而回应报文,上述一条规则就能搞定,这样配置,即使以后有更多服务的响应报文需要放行,我们也不用再去针对响应报文设置规则了,这样简单方便。
若我们想放行的集群内部的端口是一个范围,比如集群外部的主机的端口范围为60001~80001,则可以利用如下命令:
iptables-I FORWARD-s 10.200.1.0/24-p tcp--dport 60001:80001-j ACCEPT
同理,可以配置集群外部的端口范围。
使用iptables命令配置的防火墙规则会在系统下一次重启时失效,如果想让配置的防火墙策略永久生效,需要对设置的端口规则执行保存命令;service iptables save。这样可以避免服务器重启,配置的端口规则丢失的现象发生。
S104、根据端口范围创建端口池并将对应的的端口放入端口池中;
在端口范围规定好且配置好规则之后,我们可以在socket建立之前,首先获取容器云平台服务通信所用端口范围,然后创建端口池,接着对端口池放入端口,放入完毕之后,端口池会保存设置范围内的一定数量的随机端口号。
S105、当集群外部主机作为服务端,集群内部pod作为客户端,进行TCP通信时,在集群内部pod建立socket之前,从端口池中随机获取一个端口,检查是否已占用,若占用了,则重新获取端口,若没被占用,则集群内部pod绑定该端口建立socket连接,开始和集群外部主机进行socket通讯。
本发明中k8s集群内部的pod作为tcp客户端,若要正常接收外部主机服务端的数据,需将外部TCP通信的客户端端口固定,而该端口即是从步骤S104中的端口池中取出的未被占用的端口。具体实现如下:当云容器平台的客户端在绑定固定端口时,将会从端口池中随机获取一个端口,然后先检查该端口是否已被占用,若被占用,继续从端口池中取出另外的端口,若没有被占用,则可以用该端口进行绑定,与外部服务端开始正常通信。
正常情况下,客户端流程为:
新建一个socket,然后连接服务器connect,接着开始read/write,最后close。
服务器流程为:
新建一个socket,然后绑定端口号bind,接着监听端口listen,然后接受客户端的连接accept,成功之后开始read/write,最后关闭close。
如果按照上述流程,就是随机生成一个客户端的端口,然后去连接服务器,会遇到随机端口没有开放的话,通讯无法正常进行的问题。
但在本发明中,客户端的端口不再是随机而是由iptables和iptablse-services共同管理的方式,设置的安全端口。为了指定客户端的端口号,需要对客户端的流程做改进,具体改进方法如下:
新建一个socket,然后去绑定端口号bind,接着连接服务器connect,再去read/write,最后close即可。
而具体到代码里,对比原来的随机端口代码,需在其基础上增加部分代码,如下所示:
升级了上述代码后,当客户端连接服务器时,服务器显示连接的客户端端口号就是我们设置的端口号,而不是随机的端口号了。
本发明实施例提供的这种基于k8s云容器平台的集群通信方法,针对k8s集群外部主机和内部pod所属同一局域网时,双方无法进行TCP通信的问题,首先在集群外的主机上做调整,在集群外部主机上添加需要访问的集群内部pod的IP段对应的静态路由,实现了外部主机与集群内的多个pod的通信;其次,本发明利用iptables和iptables-services软件相结合的方式管理端口,配置端口规则,并根据端口范围创建端口池并将对应的的端口放入端口池中;最后,当集群外部主机作为客户端,集群内部pod作为服务端,进行TCP通信时,在集群外部主机建立socket之前,从端口池中随机获取一个端口,检查是否已占用,若占用了,则重新获取端口,若没被占用,则集群外部主机绑定该端口建立socket连接,开始和集群内部pod进行socket正常通讯。实现了k8s集群外的主机作为TCP服务端,集群内的pod作为TCP客户端的TCP正常通信,并且能保证其安全,不受外部攻击。
基于同一发明构思,本发明实施例还提供了一种基于k8s云容器平台的集群通信装置,由于该装置所解决问题的原理与前述实施例的方法相似,因此该装置的实施可以参见前述方法的实施,重复之处不再赘述。
如图4所示,为本发明实施例提供的一种基于k8s云容器平台的集群通信装置,可以用于执行上述方法实施例,该装置包括:
静态路由添加模块401,用于在集群外部主机上添加需要访问的集群内部pod的IP段对应的静态路由;
端口范围设置模块402,用于设置集群外部主机可以访问集群内部的端口范围;
端口规则配置模块403,用于结合iptables和iptables-services软件配置端口规则,对集群外部主机可以访问集群内部的端口范围以及集群内部pod访问集群外部主机的端口进行配置;
端口池创建模块404,用于根据端口范围创建端口池并将对应的的端口放入端口池中;
socket通讯建立模块405,用于当集群外部主机作为服务端,集群内部pod作为客户端,进行TCP通信时,在集群内部pod建立socket之前,从端口池中随机获取一个端口,检查是否已占用,若占用了,则重新获取端口,若没被占用,则集群内部pod绑定该端口建立socket连接,开始和集群外部主机进行socket通讯。
本发明实施例还提供一种提高谐波检测精度的自适应VMD检测装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上任一所述方法的步骤。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述方法的步骤。
针对集群外部主机作为客户端,集群内部pod作为服务端的情况,本发明实施例还提供一种基于k8s云容器平台的集群通信方法,该k8s云容器平台的集群外部主机和集群内部pod属于同一局域网,该方法包括以下步骤:
在集群外部主机上添加需要访问的集群内部pod的IP段对应的静态路由;
结合iptables和iptables-services软件配置端口规则,对集群内部pod访问集群外部主机的端口范围以及集群外部主机访问集群内部的端口进行配置;
根据端口范围创建端口池并将对应的的端口放入端口池中;
当集群外部主机作为客户端,集群内部pod作为服务端,进行TCP通信时,在集群外部主机建立socket之前,从端口池中随机获取一个端口,检查是否已占用,若占用了,则重新获取端口,若没被占用,则集群外部主机绑定该端口建立socket连接,开始和集群内部pod进行socket正常通讯。
该实施例由于集群外部主机不需要对端口范围进行设置,因此相对于上述集群外部主机作为服务端,集群内部pod作为客户端情况下的基于k8s云容器平台的集群通信方法实施例少了该步骤,其他步骤是类似的,具体可以参照上述方法实施例,在此不再赘述。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于k8s云容器平台的集群通信方法,该k8s云容器平台的集群外部主机和集群内部pod属于同一局域网,其特征在于,该方法包括以下步骤:
在集群外部主机上添加需要访问的集群内部pod的IP段对应的静态路由;
设置集群外部主机可以访问集群内部的端口范围;
结合iptables和iptables-services软件配置端口规则,对集群外部主机可以访问集群内部的端口范围以及集群内部pod访问集群外部主机的端口进行配置;
根据端口范围创建端口池并将对应的的端口放入端口池中;
当集群外部主机作为服务端,集群内部pod作为客户端,进行TCP通信时,在集群内部pod建立socket之前,从端口池中随机获取一个端口,检查是否已占用,若占用了,则重新获取端口,若没被占用,则集群内部pod绑定该端口建立socket连接,开始和集群外部主机进行socket通讯。
2.如权利要求1所述的基于k8s云容器平台的集群通信方法,其特征在于,所述在集群外部主机上添加需要访问的集群内部pod的IP段对应的静态路由具体包括:
获取各需要访问的集群内部pod访问集群外部主机时的出口IP地址,根据获取的出口IP地址在集群外部主机上添加对应的静态路由。
3.如权利要求1所述的基于k8s云容器平台的集群通信方法,其特征在于:在集群外部主机上添加集群内所有pod的IP段对应的静态路由。
4.如权利要求1所述的基于k8s云容器平台的集群通信方法,其特征在于,所述结合iptables和iptables-services软件配置端口规则具体包括:
首先添加默认拒绝访问的规则;
然后添加放行访问对应端口请求报文和响应报文规则。
5.如权利要求1所述的基于k8s云容器平台的集群通信方法,其特征在于,所述通过设置iptables端口规则来配置集群外部主机可以访问的集群内部的端口范围具体如下:
首先添加默认拒绝访问的规则;
然后添加放行访问端口的请求报文规则以及放行所有响应报文的规则。
6.如权利要求1所述的基于k8s云容器平台的集群通信方法,其特征在于:
对设置的端口规则执行保存命令。
7.一种基于k8s云容器平台的集群通信方法,该k8s云容器平台的集群外部主机和集群内部pod属于同一局域网,其特征在于,该方法包括以下步骤:
在集群外部主机上添加需要访问的集群内部pod的IP段对应的静态路由;
结合iptables和iptables-services软件配置端口规则,对集群内部pod访问集群外部主机的端口范围以及集群外部主机访问集群内部的端口进行配置;
根据端口范围创建端口池并将对应的的端口放入端口池中;
当集群外部主机作为客户端,集群内部pod作为服务端,进行TCP通信时,在集群外部主机建立socket之前,从端口池中随机获取一个端口,检查是否已占用,若占用了,则重新获取端口,若没被占用,则集群外部主机绑定该端口建立socket连接,开始和集群内部pod进行socket正常通讯。
8.一种基于k8s云容器平台的集群通信装置,该k8s云容器平台的集群外部主机和集群内部pod属于同一局域网,其特征在于,该装置包括:
静态路由添加模块,用于在集群外部主机上添加需要访问的集群内部pod的IP段对应的静态路由;
端口范围设置模块,用于设置集群外部主机可以访问集群内部的端口范围;
端口规则配置模块,用于结合iptables和iptables-services软件配置端口规则,对集群外部主机可以访问集群内部的端口范围以及集群内部pod访问集群外部主机的端口进行配置;
端口池创建模块,用于根据端口范围创建端口池并将对应的的端口放入端口池中;
socket通讯建立模块,用于当集群外部主机作为服务端,集群内部pod作为客户端,进行TCP通信时,在集群内部pod建立socket之前,从端口池中随机获取一个端口,检查是否已占用,若占用了,则重新获取端口,若没被占用,则集群内部pod绑定该端口建立socket连接,开始和集群外部主机进行socket通讯。
9.一种基于k8s云容器平台的集群通信装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-7任一所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110871407.1A CN113596159B (zh) | 2021-07-30 | 2021-07-30 | 基于k8s云容器平台的集群通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110871407.1A CN113596159B (zh) | 2021-07-30 | 2021-07-30 | 基于k8s云容器平台的集群通信方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113596159A CN113596159A (zh) | 2021-11-02 |
CN113596159B true CN113596159B (zh) | 2023-10-13 |
Family
ID=78252642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110871407.1A Active CN113596159B (zh) | 2021-07-30 | 2021-07-30 | 基于k8s云容器平台的集群通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113596159B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114338820A (zh) * | 2021-12-31 | 2022-04-12 | 中国电信股份有限公司 | 网络访问方法、装置、电子设备及存储介质 |
CN114785761B (zh) * | 2022-03-22 | 2023-07-18 | 杭州指令集智能科技有限公司 | 物联网操作系统中一种先进的k8s集群互相通信方法 |
CN114827017B (zh) * | 2022-03-31 | 2024-01-30 | 北京声智科技有限公司 | Kafka集群的通信方法、装置、电子设备和存储介质 |
CN114979286B (zh) * | 2022-05-11 | 2023-09-19 | 咪咕文化科技有限公司 | 容器服务的访问控制方法、装置、设备及计算机存储介质 |
CN114866467B (zh) * | 2022-05-27 | 2024-07-02 | 济南浪潮数据技术有限公司 | 一种集群通信方法、装置、系统、设备及可读存储介质 |
CN116896499B (zh) * | 2023-06-12 | 2024-03-19 | 中国铁道科学研究院集团有限公司电子计算技术研究所 | kubernetes Pod网络错误排查系统及方法 |
CN117834205B (zh) * | 2023-12-13 | 2024-08-16 | 长江信达软件技术(武汉)有限责任公司 | 一种docker容器防火墙配置方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111182089A (zh) * | 2019-12-31 | 2020-05-19 | 北京金山云网络技术有限公司 | 容器集群系统和访问大数据组件的方法、装置及服务器 |
CN112671860A (zh) * | 2020-12-15 | 2021-04-16 | 杭州溪塔科技有限公司 | 用于kubernetes集群的服务访问方法、系统、电子设备及介质 |
CN112769621A (zh) * | 2021-01-15 | 2021-05-07 | 苏州浪潮智能科技有限公司 | 一种基于Kubernetes集群的批量端口配置方法、装置及设备 |
CN113079207A (zh) * | 2021-03-26 | 2021-07-06 | 重庆紫光华山智安科技有限公司 | 一种实现端口或网络高可用的方法、系统、终端及介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3577067B2 (ja) * | 2002-12-24 | 2004-10-13 | 一 福嶋 | 動的ipアドレス割当てを受けた機器を管理する方法およびシステム |
US10673840B2 (en) * | 2018-05-10 | 2020-06-02 | Jayant Shukla | Cloud-based identity management and authentication system for containers and applications |
US11012408B2 (en) * | 2018-08-22 | 2021-05-18 | International Business Machines Corporation | Configuring virtual machine instances using one-to-one mappings |
-
2021
- 2021-07-30 CN CN202110871407.1A patent/CN113596159B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111182089A (zh) * | 2019-12-31 | 2020-05-19 | 北京金山云网络技术有限公司 | 容器集群系统和访问大数据组件的方法、装置及服务器 |
CN112671860A (zh) * | 2020-12-15 | 2021-04-16 | 杭州溪塔科技有限公司 | 用于kubernetes集群的服务访问方法、系统、电子设备及介质 |
CN112769621A (zh) * | 2021-01-15 | 2021-05-07 | 苏州浪潮智能科技有限公司 | 一种基于Kubernetes集群的批量端口配置方法、装置及设备 |
CN113079207A (zh) * | 2021-03-26 | 2021-07-06 | 重庆紫光华山智安科技有限公司 | 一种实现端口或网络高可用的方法、系统、终端及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113596159A (zh) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113596159B (zh) | 基于k8s云容器平台的集群通信方法及装置 | |
US9979605B2 (en) | Virtualization mapping | |
US9888010B2 (en) | System and method for providing an integrated firewall for secure network communication in a multi-tenant environment | |
US9853942B2 (en) | Load balancing among a cluster of firewall security devices | |
US9825911B1 (en) | Security policy check based on communication establishment handshake packet | |
US9959132B2 (en) | Managing virtual computing nodes using isolation and migration techniques | |
US9871854B2 (en) | Interaction with a virtual network | |
US10445124B2 (en) | Managing virtual computing nodes using isolation and migration techniques | |
US10205698B1 (en) | Source-dependent address resolution | |
JP2020162146A (ja) | 仮想ネットワークにおける分散型フロー状態p2p設定のためのシステムおよび方法 | |
CN103997414B (zh) | 生成配置信息的方法和网络控制单元 | |
CA2699314A1 (en) | Failover in a host concurrently supporting multiple virtual ip addresses across multiple adapters | |
CN109743197B (zh) | 一种基于优先级配置的防火墙部署系统和方法 | |
US11329959B2 (en) | Virtual routing and forwarding (VRF)-aware socket | |
Li et al. | SDN-based stateful firewall for cloud | |
CN114143258B (zh) | 一种在Kubernetes环境下基于Open vSwitch的服务代理方法 | |
CN106657053B (zh) | 一种基于端状态迁移的网络安全防御方法 | |
CN112887330B (zh) | 一种网络acl隔离浮动ip的实现装置及方法 | |
CN106878302B (zh) | 一种云平台系统及设置方法 | |
CN116208600A (zh) | 文件传输协议请求处理方法、装置、设备及存储介质 | |
CN113852658B (zh) | 一种OpenStack IPv6部署方法及系统 | |
CN115865601A (zh) | 一种跨云数据中心的sdn网络通信系统 | |
Li et al. | One-pass in-band automatic bootstrapping for OpenFlow switches | |
CN115941455A (zh) | 数据中心的云网络和运营商网络互通的方法和通信装置 | |
CN101170544A (zh) | 一种高可用群集系统采用单一实ip地址的通讯方法 |
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 | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: Cluster communication method and device based on k8s cloud container platform Granted publication date: 20231013 Pledgee: Industrial Commercial Bank of China Ltd. Beijing Fengtai branch Pledgor: BEIJING NANKAI AUTOMATION SYSTEM ENGINEERING Co.,Ltd. Registration number: Y2024110000324 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |