CN112448854B - 一种kubernetes复杂网络策略系统及其实现方法 - Google Patents

一种kubernetes复杂网络策略系统及其实现方法 Download PDF

Info

Publication number
CN112448854B
CN112448854B CN202011447557.1A CN202011447557A CN112448854B CN 112448854 B CN112448854 B CN 112448854B CN 202011447557 A CN202011447557 A CN 202011447557A CN 112448854 B CN112448854 B CN 112448854B
Authority
CN
China
Prior art keywords
strategy
network
controller
policy
chain
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
Application number
CN202011447557.1A
Other languages
English (en)
Other versions
CN112448854A (zh
Inventor
韦克璐
王志雄
赵凯麟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Asean Information Harbor Co ltd
Original Assignee
China Asean Information Harbor Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Asean Information Harbor Co ltd filed Critical China Asean Information Harbor Co ltd
Priority to CN202011447557.1A priority Critical patent/CN112448854B/zh
Publication of CN112448854A publication Critical patent/CN112448854A/zh
Application granted granted Critical
Publication of CN112448854B publication Critical patent/CN112448854B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing 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在网络隔离方面的进展,相较于计算领域显得相对缓慢和初级。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实现;
其中,策略控制器的运行步骤包括:
S3.1:策略控制器与kube-apiserver相连,本系统的数据均通过kube-apiserver存储在etcd数据库中;
S3.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链条命令,触发该策略触发器。
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数据库中;
S3.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链完整信息。
CN202011447557.1A 2020-12-09 2020-12-09 一种kubernetes复杂网络策略系统及其实现方法 Active CN112448854B (zh)

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 CN112448854A (zh) 2021-03-05
CN112448854B true 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)

Citations (4)

* Cited by examiner, † Cited by third party
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的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11579941B2 (en) * 2019-05-05 2023-02-14 Mastercard International Incorporated Control cluster for multi-cluster container environments

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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)

* Cited by examiner, † Cited by third party
Title
https://cloud.tencent.com/developer/article/1718417;踏歌行;《K8S之资源控制器Daemonset详解》;20201015;全文 *
https://www.cnblogs.com/zlw-xyz/p/13183946.html;流年似水 zlw;《kuber netes组件》;20200623;全文 *
https://www.jianshu.com/p/db532b854718;hgjsj;《Kubernetes详解》;20201110;全文 *
云环境下基于Kubernetes集群系统的容器网络研究与优化;刘渊等;《信息网络安全》;20200310(第03期);全文 *
用Flannel配置Kubernetes网络;《电脑编程技巧与维护》;20160403(第07期);全文 *
类Kubernetes扁平化网络模型的研究与实现;李文龙等;《工业控制计算机》;20170425(第04期);全文 *

Also Published As

Publication number Publication date
CN112448854A (zh) 2021-03-05

Similar Documents

Publication Publication Date Title
US10467241B2 (en) Dynamically provisioning instances of a single-tenant application for multi-tenant use
US20180278725A1 (en) Converting a single-tenant application for multi-tenant use
CN107241315B (zh) 银行网关接口的接入方法、装置及计算机可读存储介质
US9442822B2 (en) Providing a visual representation of a sub-set of a visual program
CN109768970A (zh) 一种基于可配置的通用协议生成方法
CN112698838B (zh) 多云容器部署系统及其容器部署方法
CN112527647B (zh) 基于NS-3的Raft共识算法测试系统
WO2024001251A1 (zh) 一种芯片测试系统、方法、设备及介质
CN104899134A (zh) 域名注册服务器自动化测试系统和方法
CN113687858A (zh) 配置文件的检查方法、装置、电子设备及存储介质
CN106126419A (zh) 一种应用程序的调试方法及装置
CN110505071A (zh) 局域网内fpga板卡的远程更新方法、系统及相关装置
CN112559525B (zh) 数据检查系统、方法、装置和服务器
CN104836831B (zh) 一种用于物联网的物体服务方法
CN113360386A (zh) 交换芯片驱动测试方法、装置、电子设备和存储介质
CN112448854B (zh) 一种kubernetes复杂网络策略系统及其实现方法
CN108496157B (zh) 使用扩展接口提供运行时跟踪的系统和方法
CN108089968A (zh) 一种宿主机监控虚拟机数据库状态的方法
CN113760562A (zh) 链路追踪方法、装置、系统、服务器和存储介质
CN111984367A (zh) 一种基于容器云平台的应用部署方法及系统
US5668994A (en) Conversation management routine for co-operative processing applications
US9189370B2 (en) Smart terminal fuzzing apparatus and method using multi-node structure
CN112764995B (zh) 一种服务器硬件资源监控方法、装置和介质
CN115167985A (zh) 一种虚拟化的算力提供方法及系统
CN113835786A (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
GR01 Patent grant
GR01 Patent grant