专栏首页用户6775411的专栏HC Bridge:基于L2模式的开源容器网络
原创

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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 卷积神经网络(二) ——LetNet-5、AlexNet、VGG-16、残差网络

    卷积神经网络(二) ——LetNet-5、AlexNet、VGG-16、残差网络 (原创内容,转载请注明来源,谢谢) 一、概述 本文主要介绍几种卷积网络模型,学...

    用户1327360
  • Spring Boot Starters启动器

    Starters是什么? Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring及其他技术,而不需要到处找示例...

    Java技术栈
  • 使用IBM云功能构建无服务器应用程序

    在 Serverlessconf上,IBM 发布了IBM Cloud Functions的一项新功能(作为一个IBM研究预览展示)。通过使用新工具Compose...

    Drake
  • 《白话深度学习与Tensorflow》学习笔记(4)Deep Residual Networks

    深度残差网络:主要应用于计算机视觉——图像分类、语义分割(semantic segmentation)、目标检测(object detection),其主要是使...

    微风、掠过
  • Silverlight 2 和 Deep Zoom

    Steve Clayton 发布了一篇关于 Silverlight 2 演示的文章,其中有提到一项叫作 Deep Zoom 的技术,现部署在 http://me...

    张善友
  • Spring Boot 2.0.0参考手册_中英文对照_Part III_13

    This section goes into more detail about how you should use Spring Boot. It cove...

    Tyan
  • Python生成二维码竟然只要一行代码

    前几天有朋友在朋友圈问我能不能写个生成二维码的文章。感谢这位朋友给的思路。在很多时候,我们有需要二维码的需求,例如我们关注公众号的二维码、支付的二维码等。如何通...

    Python进击者
  • 解读计算机视觉的深度学习模型

    人工智能(AI)不再仅限于研究论文和学术界。业内不同领域的企业和组织正在构建由AI支持的大规模应用程序。这里要考虑的问题是,“我们是否相信AI模型做出的决策?”...

    代码医生工作室
  • 简化 kramdown 列表嵌套内容缩进的 Vim 插件

    kramdown 的列表嵌套内容的缩进规则很「奇葩」,不是使用自然的 Tab 缩进。

    mzlogin
  • 生态和服务之争将成为在线教育决胜关键

    互联网与传统行业正在加速渗透,看上去最为传统的教育行业正在加速互联网化。在线教育也成为2014年最受关注的行业,但随着BAT等互联网巨头、众多创业者入局,以及新...

    罗超频道

扫码关注云+社区

领取腾讯云代金券