H3C SeerEngine-DC对接Kubernetes容器网络技术白皮书

Copyright © 2020 新华三技术有限公司 版权所有,保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。

除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。

本文档中的信息可能变动,恕不另行通知。



概述

1.1  技术背景

随着云计算的快速发展和不断演进,容器技术因为其资源利用率高、易于迁移等特点得到了广泛的应用,在容器管理编排领域,由Google开源的Kubernetes发展迅速,成为了该领域的事实标准。

Kubernetes使用CNI (Container Network Interface) 作为其开放网络接口,不同厂商和个人可以通过开发遵循CNI规范的网络插件对接Kubernetes,实现其容器网络方案。

CNI (Container Network Interface) Google CoreOS 主导制定的容器网络标准,CNI 设计模型简单,仅关注容器的网络连接,在容器创建时分配网络资源,并在删除容器时删除分配的资源。

容器网络相比传统的IaaS网络,存在以下新的技术难点,并提出了相应的挑战:

·              容器数量庞大,一台计算主机可以虚拟上千个容器,主机间的ARP泛洪占用大量带宽

·              容器生命周期短,需要有效地对容器进行IP地址管理(IPAM

为了攻克以上技术难点,提高容器网络的安全性和灵活性,我们推出了基于SeerEngine-DCCNI接口规范的容器网络方案对接Kubernetes容器网络。

1.2  技术优点

SeerEngine-DC容器网络方案主要有以下技术优点:

·              基于VXLAN的多租户网络隔离

·              统一的IP地址管理

·              支持不同VXLANIP地址重叠

·              基于主机的动态VLAN-VXLAN映射,突破4K网络限制

·              提供容器、虚机、裸机之间的二层、三层互访

·              安全组、QoS功能

·              提供IPv6支持

·              支持访问ClusterIP类型Service

·              支持使用第三方DNS(如CoreDNS)进行服务发现

·              支持Pod健康检测

·              SeerEngine-DC提供的其他网络功能

技术介绍

2.1  网络模型

SeerEngine-DC容器网络方案提供主机Overlay、网络Overlay和混合Overlay三种网络模型。

2.1.1  主机Overlay

主机Overlay模型如1所示:

图1 主机Overlay

 

Kubernetes Node节点安装H3C S1020V虚拟交换机,并作为一个独立的VTEP,容器报文在出Node节点时进行VXLAN封装。

SeerEngine-DC管控S1020V虚拟交换机,并通过OpenFlowOVSDBS1020V下发容器网络、安全组和QoS相关配置。

2.1.2  网络Overlay

网络Overlay模型如2所示:

图2 网络Overlay

 

Kubernetes Node节点安装Open vSwitch虚拟交换机,并通过物理网卡连接到Leaf交换机,Leaf交换机作为一个VTEP,容器报文在出Node节点时进行VLAN封装,进入Leaf交换机后根据动态的VLAN-VXLAN映射进行转发。

Net Master分配基于主机的动态VLAN,并通知SeerEngine-DC VLAN-VXLAN映射配置和端口创建消息,SeerEngine-DC给容器分配IP地址。

Net Agent根据分配的动态VLANIP地址向节点的Open vSwitch虚拟交换机下发容器网络、安全组和QoS相关配置。

2.1.3  混合Overlay

混合Overlay模型如3所示:

图3 混合Overlay

 

在主机Overlay和网络Overlay的混合组网下实现互通。

2.2  业务场景

2.2.1  Node容器互通

Net Agent下发容器网络配置,实现跨Node容器互通,如4所示,位于Node1Pod1访问Node2Pod2时,Net Agent将向OVS下发流表指导报文通过Uplink口转发,流量在Node上经过安全组,并通过VXLAN Fabric实现跨Node通信。

图4 Node流量

 

2.2.2  访问ClusterIP类型Service

ServiceKubernetes提供的集群内负载均衡服务,其中ClusterIP是分配的集群内虚拟IP

Service后端成员可以是集群内的Pod(容器网络),也可以是集群外部服务(非容器网络),下面对这两种业务场景进行描述。

1. 容器后端ClusterIP类型Service

访问容器后端ClusterIP类型Service流量走向如5所示:

图5 容器后端Service

 

 

访问容器后端ClusterIP类型Service场景下,目的地址为ClusterIP的报文通过OpenFlow packet-in上送到Net Agent Net Agent根据负载策略选择到对应的后端Pod,下发相关流表实现负载均衡。

2. 集群外服务后端ClusterIP类型Service

访问集群外服务后端ClusterIP类型Service流量走向如6所示:

图6 集群外服务后端Service

 

 

访问集群外服务后端ClusterIP类型Service场景下,目的地址为ClusterIP的报文通过OpenFlow packet-in上送到Net Agent Net Agent根据负载策略选择到对应的集群外服务地址,下发相关流表实现负载均衡,容器通过NAT规则访问到集群外服务。

2.2.3  Pod网络健康检测

Kubelet可通过Probe检测Pod网络状态,其流量走向如7所示:

图7 Node访问容器

 

 

Pod网络健康检测场景下,Node发起对容器的访问匹配到相应的自学习流表,生成相关放行回程流量的规则。

总结

SeerEngine-DC容器网络方案对接SeerEngine-DCKubernetes容器网络,提供基于VXLAN的多租户网络隔离和容器、虚机、裸机之间的网络互通,并且支持Service负载均衡和Node节点访问PodKubernetes容器网络特性,在保留容器网络原有设计理念的前提下实现了容器网络和SDN网络相结合,大大提高了容器网络的安全性和灵活性。

联系我们