HC Bridge:基于L2模式的开源容器网络

举报
谐云科技 发表于 2019/12/10 15:11:52 2019/12/10
【摘要】 近日,谐云发布了基于LinuxBridge的Kubernetes网络组件HCBridge,并正式将其在Github上开源。相比于Overlay网络和三层网络模式,L2的网络模式更加能够适应网络安全监管的要求。

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


1575961802245457.jpg


至于为什么还要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。


1575961835633517.jpg


如图所示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自带的负载均衡方式,增加了运维的工作量。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。