CN112448854A - 一种kubernetes复杂网络策略系统及其实现方法 - Google Patents
一种kubernetes复杂网络策略系统及其实现方法 Download PDFInfo
- Publication number
- CN112448854A CN112448854A CN202011447557.1A CN202011447557A CN112448854A CN 112448854 A CN112448854 A CN 112448854A CN 202011447557 A CN202011447557 A CN 202011447557A CN 112448854 A CN112448854 A CN 112448854A
- Authority
- CN
- China
- Prior art keywords
- strategy
- network
- controller
- policy
- command
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0893—Assignment of logical groups to network elements
-
- 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种kubernetes复杂网络策略系统及其实现方法,属于云计算技术领域。包括全局网络组,表示IP子网/CIDRs的任意集合;全局网络策略,包含若干个全局网络组或策略内设置的资源选择器;项目网络组,适用于特定的Namespace;项目网络策略,适用于特定的Namespace;命令控制器用于管理员查看或修改上述4种类型的网络策略;策略控制器与kube‑apiserver的连接,保存具体的网络策略;策略控制器以deployment方式运行;策略触发器以daemonset方式运行;策略触发器将策略控制器生成的策略应用到对应的节点上生效,通过在Linux内核数据包处理模块Netfilter中在filter、raw和mangle表中添加自定义链caihcloud‑chains实现。本发明能够简化集群网络策略管理,增强kubernetes的应用服务能力,进而提高kubernetes服务商的服务能力。
Description
技术领域
本发明属于云计算技术领域,尤其是一种kubernetes复杂网络策略系统及其实现方法。
背景技术
近年来,容器技术和Kubernetes平台持续升温,Kubernetes极大地提高了应用部署的速度和可管理性,由于其灵活性、可扩展性和易用性,Kubernetes已成为容器编排器的事实标准,迅速落地并赋能产业,大大提高了资源利用效率和生产力。
作为一项依然处于发展阶段的新技术,Kubernetes在网络隔离方面的进展,相较于计算领域显得相对缓慢和初级。Kubernetes目前默认提供了NetworkPolicy的功能,支持按Namespace和按Pod级别的网络访问控制。利用label指定namespaces或pod。
在Kubernetes平台使用过程中,基于Namespace和Pod级别的网络控制和以label匹配资源的方式,显然难以满足大多数场景的需求。首先,基于label的匹配方式过于单一,无法进行逻辑表达式、复杂的运算符或数组的匹配和配置策略优先级;其次,默认的网络策略无法做到集群级别的通用策略,相同的策略需要对所有Namespace重复配置;再次,kubernetes中其它类型的资源无法匹配,网络策略效果通用性不强;同时,当集群初具规模后,管理人员无法再忽视label的管理成本;最后,默认网络策略无法进行日志记录,对基于网络策略的开发和测试并不友好。
受限于上述问题,面对海量应用和容器时,kubernetes集群无法做到灵活高效的应用隔离策略,而在kubernetes集群规模化后,问题将愈加严重。如果能做到集群级别的通用网络策略,纳入kubernetes所有API资源并灵活分组管理,辅以外部网络资源的管理,将大大简化集群网络策略的开发、管理和运维,增强kubernetes的应用服务能力,进而提高kubernetes服务商的服务能力。
发明内容
本发明的发明目的是提供一种kubernetes复杂网络策略系统及其实现方法,其能够简化集群网络策略管理,增强kubernetes的应用服务能力,进而提高kubernetes服务商的服务能力。
为达到上述目的,本发明所采用的技术方案是:
一种kubernetes复杂网络策略系统,包括4种类型的网络策略和3个系统组件;
4种类型的所述网络策略分别为:
全局网络组,表示IP子网/CIDRs的任意集合,用于整合和管理内外部的网络资源;
全局网络策略,包含若干个全局网络组或策略内设置的资源选择器,和与其相关的规则集合;
项目网络组,适用于特定的Namespace;
项目网络策略,适用于特定的Namespace,包含若干个项目网络组或策略内设置的资源选择器,和与其相关的规则集合;
3个系统组件分别为:
命令控制器,对接策略控制器,用于管理员查看或修改上述4种类型的网络策略,命令控制器以deployment方式运行,默认只运行一个实例;
策略控制器与kube-apiserver的连接,保存具体的网络策略,同时监控pod等资源的创建和销毁,是本系统的核心组件,策略控制器以deployment方式运行,默认运行两个实例,保证系统高可用,可扩展为更多实例;
策略触发器,以daemonset方式运行,在所有kubernetes节点上均运行一个实例;
策略触发器将策略控制器生成的策略应用到对应的节点上生效,通过在Linux内核数据包处理模块Netfilter中在filter、raw和mangle表中添加自定义链caihcloud-chains实现。
一种kubernetes复杂网络策略系统的实现方法,包括以下步骤:
S1.初始化本系统到kubernetes集群中,运行3个所述系统组件,并创建上文4类所述网络策略作为Kubernetes的自定义资源,如果出错则重试,直至没有错误,当三个所述系统组件的容器正常运行时表示本系统正常运行;
S2.运行命令控制器;
S3.运行策略控制器;
S4.策略触发器接收来自策略控制器的Netfilter的链条命令,并主动发送心跳信息至策略控制器.
进一步的,所述步骤S1的具体执行步骤为:
S1.1.策略控制器启动运行,连接kube-apiserver,不断重试直至连接上kube-apiserver;
S1.2.策略控制器检查kubernetes中是否已注册4类所述网络策略,如果未注册则初始化注册4类所述网络策略;
S1.3.策略控制器检查是否有需要应用的网络策略;
S1.4.策略控制器保持运行,等待另外其它组件的交互;
S1.5.策略触发器启动运行,在所有节点上都存在一个副本,所述副本与策略控制器连接;
S1.6.策略触发器一直运行,每分钟向策略控制器上报节点策略情况;
S1.7.命令控制器启动运行,默认只需要一个副本,与策略控制器连接,并在后台一直运行。
进一步的,所述步骤S2中命令控制器运行步骤包括:
S2.1.命令控制器运行后与策略控制器连接,等待管理员或开发者的命令,管理员或开发者进入命令行控制器,可以展示、验证或应用网络策略;
S2.2.网络策略使用yaml格式进行描述,策略内容包括:
策略的版本类型,caihcloud/v1,本系统升级后版本号+1,为caihcloud/v2,以此类推。
策略的类型,其包括全局网络组、全局网络策略、项目网络组或项目网络策略;
策略元数据,其包含策略名字,标签,注释等信息,如果策略类型是项目网络组或项目网络策略,还包含namespace信息;以及
策略的详细内容;
对于全局网络组或项目网络组,包含一个或多个以下形式的内容,用于定义网络资源:
内容1.可用的ipv4或ipv6的CIDRS信息列表,不填则表示匹配所有cidrs;
内容2.Kubernetes资源service account列表,可通过该资源的label同时匹配多个,不填则表示匹配所有;
内容3.Kubernetes资源Namespace列表,可通过该资源的label同时匹配多个,不填则表示匹配所有;
内容4.包含的网络协议列表,TCP,UDP,ICMP,ICMPv6,SCTP,UDPLite,本内容存在时不能包含内容5,默认表示匹配所有网络协议,即包含所有网络协议;
内容5.不包含的网络协议列表,TCP,UDP,ICMP,ICMPv6,SCTP,UDPLite,本内容存在时不能包含内容4。默认表示不匹配任何网络协议,即包含所有网络协议;
对于全局网络策略或项目网络策略,包含一个或多个以下形式的内容,用于定义网络策略:
1.进策略ingress或出策略egress,用于表示外部流量进入kubernetes集群或内部流量流出集群;
2.选择器,全局网络策略的选择器为某一个全局网络组,项目网络策略)选择器为某一个项目网络组。
3.策略动作,允许allow或禁止deny;
4.策略优先级,取值范围为0-99;
S2.3:命令行控制器针对网络组和网络策略进行验证、应用时,调用策略控制器进行进一步验证。
S2.4:命令行控制器列出或删除网络组和网络策略时,直接调用策略控制器获取信息,再显示到命令行界面中。
进一步的,所述步骤S3中策略控制器的运行步骤包括:
S3.1:策略控制器与kube-apiserver相连,本系统的数据均通过kube-apiserver存储在etcd数据库中;
3.2.策略控制器作为服务端,接收来自命令行控制器(Command Controller)和策略触发器的请求,收到的请求主要包括:列出资源列表、验证资源、保存并应用资源、删除资源和策略触发器的心跳请求;
S3.3.策略控制器收到资源列表或资源详情请求,向kube-apiserver获得相关数据,如果存在资源列表或资源详情,返回数据,如果出错则返回错误信息;
S3.4.策略控制器(收到验证策略请求,进行下列步骤:
A1.验证请求格式是否正确,比如缩进有误,缺少字段等,不正确则结束当前步骤,返回格式错误信息,正确则进行下一步。
A2.验证资源请求是否存在逻辑错误,不正确则结束当前步骤,返回逻辑错误信息,正确则进行下一步;
A3.将策略分解为不同节点上的Netfilter的链条命令,并整合压缩;
A4.返回验证成功,并附上压缩后的Netfilter的链条命令;
S3.5.策略控制器收到保存并应用资源请求,进行下列步骤:
B1.进行步骤S3.4,结果不正确则结束当前步骤,返回具体的错误信息,正确则进行下一步;
B2.通过kube-apiserver,将收到的策略和压缩后的Netfilter链条命令写入etcd中,如kube-apiserver返回写入出错,则结束当前步骤,返回具体的错误信息,正确则进行下一步;
B3.响应请求,返回策略处理中,并附上涉及Netfilter的链条命令影响的节点;
B4.触发涉及到的策略触发器,分别发送需要其执行的Netfilter的链条命令。
S3.6.策略控制器收到删除资源请求,进行下列步骤:
C1.进行步骤S3.4,结果不正确则结束当前步骤,返回具体的错误信息,正确则进行下一步。
C2.通过kube-apiserver,将压缩后的Netfilter链条命令写入etcd中,如kube-apiserver返回写入出错,则结束当前步骤,返回具体的错误信息,正确则进行下一步;
C3.响应请求,返回策略处理中,并附上涉及Netfilter的链条命令影响的节点;
C4.触发涉及到的策略触发器,分别发送需要其执行的Netfilter的链条命令;
S3.7.策略触发器的心跳请求用于确认节点的网络策略配置正常,进行下列步骤:
D1.检查传来的触发器节点的Netfilter的链条hash值信息与策略控制器的是否相同,如相同则返回状态正常,否则进行下一步;
D2.将此心跳信息写入etcd中,同时返回状态异常,要求策略触发器发送自定义链caihcloud-chains链条的完整信息;
D3.收到包含完整自定义链caihcloud-chains链条的信息后,策略控制器对比期望链条与实际链条的差异,重新生成Netfilter链条命令,触发该策略触发器。
进一步的,所述步骤S4的具体执行如下:
S4.1.收到策略控制器的Netfilter的链条命令,直接执行;
S4.2.定时发送本节点的Netfilter的自定义链caihcloud-chains链条hash值信息至策略控制器;
S4.3.收到策略控制器要求自定义链caihcloud-chains链完整信息的请求后,返回caihcloud-chains链完整信息。
由于采用上述技术方案,本发明具有以下有益效果:
目前尚未存在针对kubernetes平台集群级别的通用网络策略,传统基于Namespace和Pod级别的网络控制和以label匹配资源的方式,难以满足大多数场景的需求,无法做到集群级别的通用策略,相同的策略需要对所有Namespace重复配置,对内外部网络资源无法分组管理,对相关的开发和测试不友好。本发明提供集群级别的通用网络策略,覆盖更多Kubernetes资源,对网络资源分组管理,提供相应的操作日志,大大简化集群网络策略的开发、管理和运维,增强kubernetes的应用服务能力,进而提高kubernetes服务商的服务能力。
附图说明
图1是本发明的流程图;
图2是本发明的结构流程图。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
如图1-2所示,本发明公开了一种Kubernetes复杂网络策略系统,将原生kubernetes网络策略的定义扩展为4种不同类型的网络策略和3个组件:命令控制器,策略控制器和监听触发器。
4种类型的网络策略为:
全局网络组(Global Network Set),表示IP子网/CIDRs的任意集合,用于整合和管理内外部的网络资源。
全局网络策略(Global Network Policy),包含若干个全局网络组(GlobalNetwork Set)或策略内设置的资源选择器,和与之相关的规则集合。
项目网络组(Namespace Network Set),与全局网络组类似,仅适用于特定的Namespace。
项目网络策略(Namespace Network Policy),与全局网络策略类似,仅适用于特定的Namespace。包含若干个项目网络组(Namespace Network Set)或策略内设置的资源选择器,和与之相关的规则集合。
3个组件在分别为:
命令控制器(Command Controller),对接策略控制器,用于管理员查看或修改上述4类资源资源,和策略调试与开发。命令控制器以deployment方式运行,默认只运行一个实例。
策略控制器(Policy Controller)与kube-apiserver的连接,保存具体的网络策略,同时监控pod等资源的创建和销毁,是本系统的核心组件。策略控制器以deployment方式运行,默认运行两个实例,保证系统高可用,可扩展为更多实例。
策略触发器(Policy Trigger),以daemonset方式运行,在所有kubernetes节点上均运行一个实例。策略触发器(Policy Trigger)将策略控制器(Policy Controller)生成的策略应用到对应的节点上生效,通过在Linux内核数据包处理模块Netfilter中在filter、raw和mangle表中添加自定义链caihcloud-chains实现。
本方案的kubernetes复杂网络策略系统的实现方法包括如下步骤:
步骤1:初始化本系统到kubernetes集群中,运行上文所述的3个系统组件,并创建上文所述的4类资源作为Kubernetes的CRD(自定义资源)。如果出错则重试,直至没有错误。当三个组件的容器正常运行时表示本系统正常运行。
步骤1.1:策略控制器(Policy Controller)启动运行,连接kube-apiserver。不断重试直至连接上kube-apiserver。
步骤1.2:策略控制器(Policy Controller)检查kubernetes中是否已注册上文所述的4类资源:全局网络组(Global Network Set)、全局网络策略(Global NetworkPolicy)、项目网络组(Namespace Network Set)和项目网络策略(Namespace NetworkPolicy)。如果未注册则初始化注册此4类资源。
步骤1.3:策略控制器(Policy Controller)检查是否有需要应用的网络策略,参考步骤3.5。
步骤1.4:策略控制器(Policy Controller)保持运行,等待另外其它组件的交互。
步骤1.5:策略触发器(Policy Trigger)启动运行,在所有节点上都存在一个副本。它们与策略控制器(Policy Controller)连接。
步骤1.6:策略触发器(Policy Trigger)一直运行,每分钟向策略控制器上报节点策略情况。
步骤1.7:命令控制器(Command Controller)启动运行,默认只需要一个副本,与策略控制器(Policy Controller)连接,并在后台一直运行。
步骤2:本步骤为命令控制器(Command Controller)运行步骤。
步骤2.1:命令控制器(Command Controller)运行后与策略控制器(PolicyController)连接,等待管理员或开发者的命令。管理员或开发者进入命令行控制器,可以展示、验证或应用网络策略。
步骤2.2:网络策略使用yaml格式进行描述。策略内容包括:
1.策略的版本类型,caihcloud/v1,本系统升级后版本号+1,为caihcloud/v2,以此类推。
2.策略的类型:全局网络组(Global Network Set)、全局网络策略(GlobalNetwork Policy)、项目网络组(Namespace Network Set)或项目网络策略(NamespaceNetwork Policy)。
3.策略元数据,包含策略名字,标签,注释等信息。如果策略类型是项目网络组(Namespace Network Set)或项目网络策略(Namespace Network Policy),还包含namespace信息。
4.策略的详细内容。
对于全局网络组(Global Network Set)或项目网络组(Namespace NetworkSet),包含一个或多个以下形式的内容,用于定义网络资源:
1.可用的ipv4或ipv6的CIDRS信息列表,例如”192.168.1.128/25”,不填则表示匹配所有cidrs,”0.0.0.0/0”。
2.Kubernetes资源service account列表,可通过该资源的label同时匹配多个。不填则表示匹配所有。
3.Kubernetes资源Namespace列表,可通过该资源的label同时匹配多个。不填则表示匹配所有。
4.包含的网络协议列表,TCP,UDP,ICMP,ICMPv6,SCTP,UDPLite等。本内容存在时不能包含内容5。默认表示匹配所有网络协议,即包含所有网络协议。
5.不包含的网络协议列表,TCP,UDP,ICMP,ICMPv6,SCTP,UDPLite等。本内容存在时不能包含内容4。默认表示不匹配任何网络协议,即包含所有网络协议。
对于全局网络策略(Global Network Policy)或项目网络策略(NamespaceNetwork Policy),包含一个或多个以下形式的内容,用于定义网络策略:
1.进策略ingress或出策略egress,用于表示外部流量进入kubernetes集群/namespace或内部流量流出集群/namespace。
2.选择器,全局网络策略(Global Network Policy)的选择器为某一个全局网络组(Global Network Set),项目网络策略(Namespace Network Policy)选择器为某一个项目网络组(Namespace Network Set)。
3.策略动作,允许allow或禁止deny。
4.策略优先级,取值范围为0-99.
步骤2.3:命令行控制器(Command Controller)针对网络组和网络策略进行验证、应用时,调用策略控制器(Policy Controller)进行进一步验证。
步骤2.4:命令行控制器(Command Controller)列出或删除网络组和网络策略时,直接调用策略控制器(Policy Controller)获取信息,再显示到命令行界面中。
步骤3:本步骤为策略控制器(Policy Controller)运行步骤,策略控制器(PolicyController)是本系统的核心组件。
步骤3.1:策略控制器(Command Controller)与kube-apiserver相连,本系统的数据均通过kube-apiserver存储在etcd数据库中。
步骤3.2:策略控制器(Policy Controller)作为服务端,接收来自命令行控制器(Command Controller)和策略触发器(Policy Trigger)的请求。收到的请求主要包括:
1.列出资源列表,列出资源详情(对应步骤3.3)
2.验证资源(对应步骤3.4)
3.保存并应用资源(对应步骤3.5)
4.删除资源(对应步骤3.6)
5.策略触发器(Policy Trigger)心跳(对应步骤3.7)
步骤3.3:策略控制器(Policy Controller)收到资源列表或资源详情请求,向kube-apiserver获得相关数据。如果存在资源列表或资源详情,返回数据。如果出错则返回错误信息。
步骤3.4:策略控制器(Policy Controller)收到验证策略请求,进行下列步骤:
1.验证请求格式是否正确,比如缩进有误,缺少字段等。不正确则结束当前步骤,返回格式错误信息,正确则进行下一步。
2.验证资源请求是否存在逻辑错误,比如一个网络策略中同时存在包含和不包含的两种网络协议列表。不正确则结束当前步骤,返回逻辑错误信息,正确则进行下一步。
3.将策略分解为不同节点上的Netfilter的链条命令,并整合压缩。
4.返回验证成功,并附上压缩后的Netfilter的链条命令。
步骤3.5:策略控制器(Policy Controller)收到保存并应用资源请求,进行下列步骤:
1.进行步骤3.4,结果不正确则结束当前步骤,返回具体的错误信息,正确则进行下一步。
2.通过kube-apiserver,将收到的策略和压缩后的Netfilter链条命令写入etcd中。如kube-apiserver返回写入出错,则结束当前步骤,返回具体的错误信息,正确则进行下一步。
3.响应请求,返回策略处理中,并附上涉及Netfilter的链条命令影响的节点。
4.触发涉及到的策略触发器(Policy Trigger),分别发送需要其执行的Netfilter的链条命令。
步骤3.6:策略控制器(Policy Controller)收到删除资源请求,进行下列步骤:
1.进行步骤3.4,结果不正确则结束当前步骤,返回具体的错误信息,正确则进行下一步。
2.通过kube-apiserver,将压缩后的Netfilter链条命令写入etcd中。如kube-apiserver返回写入出错,则结束当前步骤,返回具体的错误信息,正确则进行下一步。
3.响应请求,返回策略处理中,并附上涉及Netfilter的链条命令影响的节点。
4.触发涉及到的策略触发器(Policy Trigger),分别发送需要其执行的Netfilter的链条命令。
步骤3.7:策略触发器(Policy Trigger)的心跳请求用于确认节点的网络策略配置正常,进行下列步骤:
1.检查传来的触发器节点的Netfilter的链条hash值信息与策略控制器(PolicyController)的是否相同,如相同则返回状态正常,否则进行下一步。
2.将此心跳信息写入etcd中,同时返回状态异常,要求策略触发器(PolicyTrigger)发送自定义链caihcloud-chains链条的完整信息。
3.收到包含完整自定义链caihcloud-chains链条的信息后,策略控制器(PolicyController)对比期望链条与实际链条的差异,重新生成Netfilter链条命令,触发该策略触发器(Policy Trigger)。
步骤4:策略触发器(Policy Trigger)是网络策略执行的具体组件,接收来自策略控制器(Policy Controller)的Netfilter的链条命令,并主动发送心跳信息至策略控制器(Policy Controller)。具体执行步骤如下:
1.收到策略控制器(Policy Controller)的Netfilter的链条命令,直接执行。
2.定时发送本节点的Netfilter的自定义链caihcloud-chains链条hash值信息至策略控制器(Policy Controller)。
3.收到策略控制器(Policy Controller)要求自定义链caihcloud-chains链完整信息的请求后,返回caihcloud-chains链完整信息。
上述说明是针对本发明较佳实施例的详细说明,但实施例并非用以限定本发明的专利申请范围,凡本发明所提示的技术精神下所完成的同等变化或修饰变更,均应属于本发明所涵盖专利范围。
Claims (6)
1.一种kubernetes复杂网络策略系统,其特征在于,包括4种类型的网络策略和3个系统组件;
4种类型的所述网络策略分别为:
全局网络组,表示IP子网/CIDRs的任意集合,用于整合和管理内外部的网络资源;
全局网络策略,包含若干个全局网络组或策略内设置的资源选择器,和与其相关的规则集合;
项目网络组,适用于特定的Namespace;
项目网络策略,适用于特定的Namespace,包含若干个项目网络组或策略内设置的资源选择器,和与其相关的规则集合;
3个系统组件分别为:
命令控制器,对接策略控制器,用于管理员查看或修改上述4种类型的网络策略,命令控制器以deployment方式运行;
策略控制器与kube-apiserver的连接,用于保存具体的网络策略,同时监控pod等资源的创建和销毁,策略控制器以deployment方式运行;
策略触发器,以daemonset方式运行,在所有kubernetes节点上均运行一个实例;
策略触发器将策略控制器生成的策略应用到对应的节点上生效,通过在Linux内核数据包处理模块Netfilter中在filter、raw和mangle表中添加自定义链caihcloud-chains实现。
2.一种如权利要求1的kubernetes复杂网络策略系统的实现方法,其特征在于,包括以下步骤:
S1.初始化本系统到kubernetes集群中,运行3个所述系统组件,并创建4类所述网络策略作为Kubernetes的自定义资源,如果出错则重试,直至没有错误,当三个所述系统组件的容器正常运行时表示本系统正常运行;
S2.运行命令控制器;
S3.运行策略控制器;
S4.策略触发器接收来自策略控制器的Netfilter的链条命令,并主动发送心跳信息至策略控制器。
3.如权利要求2所述的kubernetes复杂网络策略系统的实现方法,其特征在于,所述步骤S1的具体执行步骤为:
S1.1.策略控制器启动运行,连接kube-apiserver,不断重试直至连接上kube-apiserver;
S1.2.策略控制器检查kubernetes中是否已注册4类所述网络策略,如果未注册则初始化注册4类所述网络策略;
S1.3.策略控制器检查是否有需要应用的网络策略;
S1.4.策略控制器保持运行,等待另外其它组件的交互;
S1.5.策略触发器启动运行,在所有节点上都存在一个副本,所述副本与策略控制器连接;
S1.6.策略触发器一直运行,每分钟向策略控制器上报节点策略情况;
S1.7.命令控制器启动运行,默认只需要一个副本,与策略控制器连接,并在后台一直运行。
4.如权利要求2所述的kubernetes复杂网络策略系统的实现方法,其特征在于,所述步骤S2中命令控制器运行步骤包括:
S2.1.命令控制器运行后与策略控制器连接,等待管理员或开发者的命令,管理员或开发者进入命令行控制器,可以展示、验证或应用网络策略;
S2.2.网络策略使用yaml格式进行描述,策略内容包括:
策略的版本类型,caihcloud/v1,本系统升级后版本号+1,为caihcloud/v2,以此类推。
策略的类型,其包括全局网络组、全局网络策略、项目网络组或项目网络策略;
策略元数据,其包含策略名字,标签,注释等信息,如果策略类型是项目网络组或项目网络策略,还包含namespace信息;以及
策略的详细内容;
对于全局网络组或项目网络组,包含一个或多个以下形式的内容,用于定义网络资源:
内容1.可用的ipv4或ipv6的CIDRS信息列表,不填则表示匹配所有cidrs;
内容2.Kubernetes资源service account列表,可通过该资源的label同时匹配多个,不填则表示匹配所有;
内容3.Kubernetes资源Namespace列表,可通过该资源的label同时匹配多个,不填则表示匹配所有;
内容4.包含的网络协议列表,TCP,UDP,ICMP,ICMPv6,SCTP,UDPLite,本内容存在时不能包含内容5,默认表示匹配所有网络协议,即包含所有网络协议;
内容5.不包含的网络协议列表,TCP,UDP,ICMP,ICMPv6,SCTP,UDPLite,本内容存在时不能包含内容4,默认表示不匹配任何网络协议,即包含所有网络协议;
对于全局网络策略或项目网络策略,包含一个或多个以下形式的内容,用于定义网络策略:
1.进策略ingress或出策略egress,用于表示外部流量进入kubernetes集群或内部流量流出集群;
2.选择器,全局网络策略的选择器为某一个全局网络组,项目网络策略的选择器为某一个项目网络组;
3.策略动作,允许allow或禁止deny;
4.策略优先级,取值范围为0-99;
S2.3:命令行控制器针对网络组和网络策略进行验证、应用时,调用策略控制器进行进一步验证。
S2.4:命令行控制器列出或删除网络组和网络策略时,直接调用策略控制器获取信息,再显示到命令行界面中。
5.如权利要求2所述的kubernetes复杂网络策略系统的实现方法,其特征在于,所述步骤S3中策略控制器的运行步骤包括:
S3.1:策略控制器与kube-apiserver相连,本系统的数据均通过kube-apiserver存储在etcd数据库中;
3.2.策略控制器作为服务端,接收来自命令行控制器(Command Controller)和策略触发器的请求,收到的请求主要包括:列出资源列表、验证资源、保存并应用资源、删除资源和策略触发器的心跳请求;
S3.3.策略控制器收到资源列表或资源详情请求,向kube-apiserver获得相关数据,如果存在资源列表或资源详情,返回数据,如果出错则返回错误信息;
S3.4.策略控制器收到验证策略请求,进行下列步骤:
A1.验证请求格式是否正确,比如缩进有误,缺少字段等,不正确则结束当前步骤,返回格式错误信息,正确则进行下一步。
A2.验证资源请求是否存在逻辑错误,不正确则结束当前步骤,返回逻辑错误信息,正确则进行下一步;
A3.将策略分解为不同节点上的Netfilter的链条命令,并整合压缩;
A4.返回验证成功,并附上压缩后的Netfilter的链条命令;
S3.5.策略控制器收到保存并应用资源请求,进行下列步骤:
B1.进行步骤S3.4,结果不正确则结束当前步骤,返回具体的错误信息,正确则进行下一步;
B2.通过kube-apiserver,将收到的策略和压缩后的Netfilter链条命令写入etcd中,如kube-apiserver返回写入出错,则结束当前步骤,返回具体的错误信息,正确则进行下一步;
B3.响应请求,返回策略处理中,并附上涉及Netfilter的链条命令影响的节点;
B4.触发涉及到的策略触发器,分别发送需要其执行的Netfilter的链条命令。
S3.6.策略控制器收到删除资源请求,进行下列步骤:
C1.进行步骤S3.4,结果不正确则结束当前步骤,返回具体的错误信息,正确则进行下一步。
C2.通过kube-apiserver,将压缩后的Netfilter链条命令写入etcd中,如kube-apiserver返回写入出错,则结束当前步骤,返回具体的错误信息,正确则进行下一步;
C3.响应请求,返回策略处理中,并附上涉及Netfilter的链条命令影响的节点;
C4.触发涉及到的策略触发器,分别发送需要其执行的Netfilter的链条命令;
S3.7.策略触发器的心跳请求用于确认节点的网络策略配置正常,进行下列步骤:
D1.检查传来的触发器节点的Netfilter的链条hash值信息与策略控制器的是否相同,如相同则返回状态正常,否则进行下一步;
D2.将此心跳信息写入etcd中,同时返回状态异常,要求策略触发器发送自定义链caihcloud-chains链条的完整信息;
D3.收到包含完整自定义链caihcloud-chains链条的信息后,策略控制器对比期望链条与实际链条的差异,重新生成Netfilter链条命令,触发该策略触发器。
6.如权利要求2所述的kubernetes复杂网络策略系统的实现方法,其特征在于,所述步骤S4的具体执行如下:
S4.1.收到策略控制器的Netfilter的链条命令,直接执行;
S4.2.定时发送本节点的Netfilter的自定义链caihcloud-chains链条hash值信息至策略控制器;
S4.3.收到策略控制器要求自定义链caihcloud-chains链完整信息的请求后,返回caihcloud-chains链完整信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011447557.1A CN112448854B (zh) | 2020-12-09 | 2020-12-09 | 一种kubernetes复杂网络策略系统及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011447557.1A CN112448854B (zh) | 2020-12-09 | 2020-12-09 | 一种kubernetes复杂网络策略系统及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112448854A true CN112448854A (zh) | 2021-03-05 |
CN112448854B CN112448854B (zh) | 2023-04-18 |
Family
ID=74739407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011447557.1A Active CN112448854B (zh) | 2020-12-09 | 2020-12-09 | 一种kubernetes复杂网络策略系统及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112448854B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138420A (zh) * | 2021-12-08 | 2022-03-04 | 兴业银行股份有限公司 | 在kubernetes环境中动态升级应用的方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110221901A (zh) * | 2019-06-06 | 2019-09-10 | 深圳前海微众银行股份有限公司 | 容器资源创建方法、装置、设备及计算机可读存储介质 |
CN111010340A (zh) * | 2019-12-19 | 2020-04-14 | 华云数据有限公司 | 数据报文转发控制方法、装置及计算装置 |
CN111049796A (zh) * | 2019-10-25 | 2020-04-21 | 中国通信服务股份有限公司 | 一种基于Open vSwitch实现Overlay多租户CNI容器网络的方法 |
CN111371627A (zh) * | 2020-03-24 | 2020-07-03 | 广西梯度科技有限公司 | 一种在Kubernetes中Pod设置多IP的方法 |
US20200348918A1 (en) * | 2019-05-05 | 2020-11-05 | Mastercard International Incorporated | Automated core services bootstrap for on-premises clusters |
-
2020
- 2020-12-09 CN CN202011447557.1A patent/CN112448854B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200348918A1 (en) * | 2019-05-05 | 2020-11-05 | Mastercard International Incorporated | Automated core services bootstrap for on-premises clusters |
CN110221901A (zh) * | 2019-06-06 | 2019-09-10 | 深圳前海微众银行股份有限公司 | 容器资源创建方法、装置、设备及计算机可读存储介质 |
CN111049796A (zh) * | 2019-10-25 | 2020-04-21 | 中国通信服务股份有限公司 | 一种基于Open vSwitch实现Overlay多租户CNI容器网络的方法 |
CN111010340A (zh) * | 2019-12-19 | 2020-04-14 | 华云数据有限公司 | 数据报文转发控制方法、装置及计算装置 |
CN111371627A (zh) * | 2020-03-24 | 2020-07-03 | 广西梯度科技有限公司 | 一种在Kubernetes中Pod设置多IP的方法 |
Non-Patent Citations (6)
Title |
---|
"用Flannel配置Kubernetes网络", 《电脑编程技巧与维护》 * |
HGJSJ: "https://www.jianshu.com/p/db532b854718", 《KUBERNETES详解》 * |
刘渊等: "云环境下基于Kubernetes集群系统的容器网络研究与优化", 《信息网络安全》 * |
李文龙等: "类Kubernetes扁平化网络模型的研究与实现", 《工业控制计算机》 * |
流年似水 ZLW: "https://www.cnblogs.com/zlw-xyz/p/13183946.html", 《KUBER NETES组件》 * |
踏歌行: "https://cloud.tencent.com/developer/article/1718417", 《K8S之资源控制器DAEMONSET详解》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138420A (zh) * | 2021-12-08 | 2022-03-04 | 兴业银行股份有限公司 | 在kubernetes环境中动态升级应用的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112448854B (zh) | 2023-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10356214B2 (en) | Composing monolithic applications based on multi-container applications | |
US20180278725A1 (en) | Converting a single-tenant application for multi-tenant use | |
CN108566290B (zh) | 服务配置管理方法、系统、存储介质和服务器 | |
CN107241315B (zh) | 银行网关接口的接入方法、装置及计算机可读存储介质 | |
US20130152069A1 (en) | Method, apparatus and system for initiating terminal operation | |
CN112698838B (zh) | 多云容器部署系统及其容器部署方法 | |
WO2024001251A1 (zh) | 一种芯片测试系统、方法、设备及介质 | |
KR102210289B1 (ko) | 하드웨어 관리 통신 프로토콜 | |
CN113141405A (zh) | 服务访问方法、中间件系统、电子设备和存储介质 | |
CN115277750A (zh) | 一种多系统智能座舱通信组件 | |
CN112448854B (zh) | 一种kubernetes复杂网络策略系统及其实现方法 | |
CN108496157B (zh) | 使用扩展接口提供运行时跟踪的系统和方法 | |
US10949306B2 (en) | System and method of a cloud service provider virtual machine recovery | |
CN113835786A (zh) | 一种数据对接系统、方法和计算机可读存储介质 | |
US5668994A (en) | Conversation management routine for co-operative processing applications | |
CN111984367A (zh) | 一种基于容器云平台的应用部署方法及系统 | |
CN103034545B (zh) | 基于ace的通信框架和方法、及功能模块间的通信方法 | |
CN113342456A (zh) | 一种连接方法、装置、设备和存储介质 | |
US9189370B2 (en) | Smart terminal fuzzing apparatus and method using multi-node structure | |
CN112764995B (zh) | 一种服务器硬件资源监控方法、装置和介质 | |
CN115167985A (zh) | 一种虚拟化的算力提供方法及系统 | |
CN115048187A (zh) | 一种基于Operator的pvc文件导入方法、设备及存储介质 | |
US20240029015A1 (en) | Equipment tracking for an information handling system | |
CN110879747B (zh) | 资源管理方法及装置 | |
CN116302850B (zh) | 一种Linux套接字连接事件监控方法及装置 |
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 |