近日,谐云发布了基于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主要由以下四个组件:
目前HCBridge已经在github上开源,HCBridge安装虽然比较简单,但是由于需要使用真实IP地址,会导致安装体验会相对其他overlay和路由模式的CNI略显复杂,我们也会致力于优化快速按照体验。近期工作主要实现以下目标:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。