登录
立即咨询

语言选择

谐云 谐云
开源项目
HC Bridge:基于L2模式的开源容器网络

近日,谐云发布了基于LinuxBridge的Kubernetes网络组件HCBridge,并正式将其在Github上开源。相比于Overlay网络和三层网络模式,L2的网络模式更加能够适应网络安全监管的要求。项目地址为 https://github.com/harmonycloud/hcbridge

至于为什么还要HCBridge?相比于Kubernetes自带的BridgeCNI,HC Bridge完善了VLAN的功能,使得容器网络能够按照Namespaces、Servic划分不同的VLAN和IP地址范围,细化IP地址监控和管理。虽然一些BGP的容器网络也具备ServiceSpecIPPool的功能,但是需要精细管理服务IP地址和提高资源的使用率,IP地址分配不能够影响资源的调度,最后会导致Pod路由会分散在不同的主机,路由条目无法聚合,路由条目数量是成为集群的规模的瓶颈。

社区overlay和路由的三层CNI较多,而L2相关的容器网络较少被提及,而在实际的应用过程中,L2由于对底层物理环境和网络环境有依赖,遇到问题也更加难以排查,希望通过开源HCBridge容器网络,一起分享和讨论谐云科技在实践L2容器网络遇到的问题和解决方法。

对于高可用物理组网结构,当物理主机双网卡运行在bond1模式,在双上联主机连接不同的交换机设备时,发生主备网络切换,会导致外部无法正常的访问Pod;HCBridge通过利用Linuxnotify的机制,通过内核模块监听主备网卡切换时间,然后通知应用进程,在Bridge所连接Pod所在的ns发送GratuitousARP,更新交换机Mac:Port映射关系,使得容器网络在出现物理网线故障、交换机掉电的情况下能够实现故障秒级切换。

对于ClusterIP,由于ClusterIP主要是使用IPVS或者IPTABLES实现的,在启用LinuxBridge开启VLANfilter之后,在经过Netfilter的DNAT之后是会导致VLANtag、目的Mac和交换机的端口匹配不上,所以需要ClusterIP时,无法使用VLANfilter。

如图所示HCBridge主要由以下四个组件:

HC-bridgecni-负责在主机上创建和配置linux网桥的CNI插件。
HC-ipam-负责分配IP地址的组件,使用ETCD存储。
network-controller-组件提供IP池配置restfulapi,监听kubernetes APIServer事件以回收异常的IP。
HADaemon–监控高可用组网结构下的主备网卡切换,能够让容器网络能够感知物理主备网卡故障切换。

目前HCBridge已经在github上开源,HCBridge安装虽然比较简单,但是由于需要使用真实IP地址,会导致安装体验会相对其他overlay和路由模式的CNI略显复杂,我们也会致力于优化快速按照体验。近期工作主要实现以下目标:

在CNI层面支持IPv6双栈,由于公网IPv4地址已经耗尽,为了平滑过渡到IPv6,双栈无疑是最好的选择;

丰富IPAM的功能,支持浮动IP,随着有状态服务也逐渐迁移到容器浮动IP的需求也越来越多;

在启用VLANfilter的情况下支持ClusterIP,对于使用Dubbo、SpringCloud的应用,对ClusterIP需求虽然不强烈,但是就需要其他方式来替代Kubernetes自带的负载均衡方式,增加了运维的工作量。

申请合作咨询
您可以通过此表单填写您的合作意向,我们将会尽快与您取得联系!
或拨打电话0571-87607309
*姓名:
*手机:
*邮箱:
备注:
备注:
登录
登录
注册账号 忘记密码
注册
{{ code.btn }}
注册
立即登录 忘记密码?
忘记密码
{{ code.btn }}
确定
立即登录 忘记密码?
立即咨询