Calico 是一套开源的网络和网络安全方案,用于容器、虚拟机、宿主机之前的网络连接,可以用在kubernetes、OpenShift、DockerEE、OpenStrack等PaaS或IaaS平台上。
最初的VXLAN方案(RFC7348)中没有定义控制平面,VXLAN隧道需要手工配置,然后通过流量泛洪的方式进行主机地址的学习。这种方式实现上较为简单,但是会导致网络中存在很多泛洪流量、网络扩展困难。
上回说到了Flood & Learn存在着一些不足,所以,才有了后来的BGP EVPN来实现VXLAN的control-plane。既然说到了这,让我们先看一张对比图:
最近我司业务扩展在机房新开了一个区域,折腾了一段时间的 Calico BGP,为了能将整个过程梳理得更简单明了,我还是决定将这个过程记录下来。不管是对当下的总结还是未来重新审视方案都是值得的。大家都知道,云原生下的网络架构在 Kubernetes 里可以算是百花齐放,各有所长,这无形中也导致网络始终是横在广大 K8S 爱好者面前迈向高阶管理的几座大山之一。通常大家在公有云上使用厂家提供的 CNI 组件可能还感受不到其复杂,但一旦要在 IDC 自建集群时,就会面临 Kubernetes 网络架构选型的问题。Calico 作为目前 Kubernetes 上用途最广的 Kubernetes CNI 之一,自然也有很多追随者。而本篇便是在自建机房内 BGP 组网下的一次总结。
在RFC 7348定义的VXLAN泛洪学习模式下,终端主机信息学习和VTEP发现都是基于数据平面的,没有控制协议在VTEP之间分配终端主机可达性信息。为了克服flood的局限性并学习VXLAN,Cisco VXLAN MP-BGP EVPN spine and leaf架构使用多协议边界网关协议以太网虚拟专用网(MP-BGP EVPN)作为VXLAN的控制平面。该技术为VXLAN覆盖网络中的第2层和第3层转发提供了控制平面和数据平面分离以及统一的控制平面。本节介绍Cisco Nexus硬件交换机(如Cisco Nexus 5600平台交换机和Cisco Nexus 7000和9000系列交换机)上的VXLAN MP-BGP EVPN。
DNS领域的多点部署大多采用IP Anycast+BGP方式,采用这种方式不需要额外采购设备,部署灵活多样。但像其他所有技术一样,IP Anycast+BGP技术只有在适当的领域和范围内才能发挥它的最大优势。
前面介绍Flannel的三层网络解决方案是host-gw,其实还有一个非常出名的单独的三层网络解决方案Calico,它的工作模式和host-gw基本一致,也是会在每台宿主机上添加如下格式的路由规则:
VxLAN是一个非常重要的overlay技术,在SDN的网络场景中应用交广,比如云网一体化的数据中心场景,又如CloudV**中的叠加网络。
host-gw模式就是将每个Flannel子网的下一跳设置成该子网对应宿主机的IP地址,该主机会充当容器通信路径里的网关。
Calico 组件 下图显示了 Kubernetes 的必需和可选 Calico 组件,具有网络和网络策略的本地部署。 Calico 组件 Calico API server Felix BIRD confd Dikastes CNI plugin Datastore plugin IPAM plugin kube-controllers Typha calicoctl 云编排器的插件 Plugins for cloud orchestrators Calico API 服务器 主要任务:让您直接使
calico提供的网络解决方案,基本和flannel的host-gw模式相同,不同的地方在flannel通过etcd和宿主机上的flanneld维护路由信息,而calico是使用bgp(border gateway protocol 边界网关协议)自动的在集群中维护路由信息。如:
编者按:SDN-IP是ONOS上的一个应用程序,允许软件定义网络使用标准的边界网关协议(BGP)连接到外部网络。从BGP角度看,SDN网络表现为单一的自治系统(AS),其行为与任何传统的AS一样。基于
高清视频直播和云计算的蓬勃发展,带来互联网流量持续高速增长,主流云公司的Internet出口带宽都已经达到Tbps级别。 鉴于网络的拥堵大部分发生在出口互联,Edge Peering Fabric的架构设计直接影响到终端客户的用户体验, 2017年Google/Facebook对外发布了两种不同的Edge 设计理念,本文试着以Google Espresso为主详解下一代Cloud Edge的架构,并简单介绍一下Facebook Edge Fabric。
一捧鲜花一个信封 载着我们的感恩之心 为你们奉上感恩节大礼包 拆礼包的分割线 腾讯云大禹 BGP 高防 IP 新品正式发布 1941年,美国国会正式将每年11月第四个星期四定为“
之前详细介绍了calico的ipip、vxlan、bgp模式, 但是所有的k8s节点都是同网段的, 本篇使用ensp和workstation在自己家里就可以模拟测试跨网段k8s集群calico方案的纯bgp模式。
AS号码即自治系统号码,是用来标识独立的自治系统的,在同一个自治系统内,使用相同内部路由协议,自治系统间使用外部路由协议(通常是BGP协议)。 申请AS号码的单位需要与两家以上(包括两家)、有不同AS号码的网络接入商进行网络互联,并计划三个月内与他们同时运行BGP协议进行外部路由。
在这篇文章中,我们讨论了三个开源的负载平衡器控制器,它们可以与任何Kubernetes的发行版一起使用。
在网络中路由器根据所收到的报文的目的地址选择一条合适的路径,并将报文转发到下一个路由器。路径中最后一个路由器负责将报文转发给目的主机。
BGP anycast就是 利用一个(多个) as号码在不同的地区广播相同的一个ip段。 利用bgp的寻路原则,短的as path 会选成最优路径(bgp寻路原则之n),从而优化了访问速度。
官网地址: https://www.tigera.io/project-calico/
问题:Pod是K8S最小调度单元,一个Pod由一个容器或多个容器组成,当多个容器时,怎么都用这一个Pod IP?
当前云计算技术已经成为数据中心基本部署要求,针对云计算中对网络虚拟化的需求,业界厂家提出了各种解决思路,SDN网络技术得到了大力发展,具有资源虚拟化、自动化等特点,成为IT基础架构改革中不可或缺的一部分。早期纯软件的SDN技术虽然可以随云而动实现业务网络自动部署,但在性能、功能、稳定性、可扩展性等方面存在较大的限制。 📷 在数据中心虚拟化多租户环境中部署和配置网络设施是一项复杂的工作,不同租户的网络需求存在差异,且网络租户是虚拟化存在,和物理计算资源位置无固定对应关系。通过传统手段部署物理网络设备
UniCast,即单播,指网络中一个节点与另一个节点之间需要建立一个单独的数据通道,从一个节点发出的信息只被一个节点收到,这种传送方式称为单播。即网络中从源向目的地转发单播流量的过程,IP地址与节点(主机)一一对应,单播流量地址唯一。每个节点必须分别对需要访问的节点发送单独的查询,而被访问节点必须向每个访问节点发送所申请的数据包拷贝。
作者简介:罗华 Juniper大中国区首席架构师 相比Google的SDN流量调度方案,Facebook的Edge Fabric更具备可学习性,通过扩展一些组件来采集路由和流量信息,就可以通过使用标准的BGP来实现自动化的流量调度,对于很多内容服务商来说只是需要添加少量组件就可以实现。 汇总起来的组件如下: · 网络的BGP架构; · 网络内的流量采集(IPFIX或者sFlow); · BGP路由信息采集:BMP; · 服务器端eBPF标识流量、被动测量性能; · 整体控制框架。 大多数互联网公司只是缺最
上周四(6月6日),原本传输到几家欧洲最大的移动服务提供商的流量,通过中国电信重定向到错误的地方长达2小时。这次事件引发了公众对互联网全球路由系统:BGP(边界网关协议)的担忧。
云化数据中心,网络资源通过虚拟化技术形成资源池,实现业务与物理网络解耦,通过网络虚拟化,物理网络资源可以被分成多个虚拟网络资源,从而提高网络资源的使用效率。
底层网络 Underlay Network 顾名思义是指网络设备基础设施,如交换机,路由器, DWDM 使用网络介质将其链接成的物理网络拓扑,负责网络之间的数据包传输。
在Kubernetes中要保证容器之间网络互通,网络至关重要。而Kubernetes本身并没有自己实现容器网络,而是通过插件化的方式自由接入进来。在容器网络接入进来需要满足如下基本原则:
在上期,我们提到,大型云计算平台的容器网络,需要考虑的一个关键因素,是应用调度层(容器)和资源层(虚拟机)的紧密结合。
看到【名副其实举世无双的个人空间-哔哩哔哩】 的计算机三级网络技术知识点,上面配合视频+讲解,找了好久没有找到视频中的word文档,自己将视频截图识别为文字,作为笔记!
IP地址分为网络部分和主机部分,EGP和IGP的关系与IP地址类似,EGP类似IP的网络部分,可以根据EGP在区域网络之间(或ISP之间)进行路由选择;
本文主要分析k8s中网络组件calico的 IPIP网络模式。旨在理解IPIP网络模式下产生的calixxxx,tunl0等设备以及跨节点网络通信方式。可能看着有点枯燥,但是请花几分钟时间坚持看完,如果看到后面忘了前面,请反复看两遍,这几分钟时间一定你会花的很值。
大图 了解 Calico 支持的不同网络选项,以便您可以根据需要选择最佳选项。 价值 Calico 灵活的模块化架构支持广泛的部署选项,因此您可以选择适合您特定环境和需求的最佳网络方法。这包括使用各种 CNI 和 IPAM 插件以及底层网络类型以非覆盖或覆盖模式运行的能力,无论是否使用 BGP。 概念 如果您想全面了解可供您选择的网络,我们建议您确保熟悉并理解以下概念。如果您想跳过学习并直接获得选择和建议,您可以跳到网络选项。 Kubernetes 网络基础知识 Kubernetes 网络模型定义
之前我们解决了跨主机间容器间通信的问题,但是这也只能说我们铺好了路,村里通路了,但是其实作为 k8s 来说,还有好多其他的问题等待着我们解决。今天我们就通过这些问题来看看 k8s 的 CNI 的设计。CNI 到底究竟是个什么东西,到底是不是和你想的一样那么困难。
OSI(Open System Interconnection)是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。
计算、存储和网络是云时代的三大基础服务,作为新一代基础架构的 Kubernetes 也不例外。而这三者之中,网络又是一个最难掌握和最容易出问题的服务;本文通过对Kubernetes网络流量模型进行简单梳理,希望对初学者能够提供一定思路。先看一下kubernetes 总体模型:
步骤1, R2、R3、R4、R5、SW1运行IGP-OSPF,区域请参照图中配置区域0和区域12
边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓扑图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。
可以看到的确收到了来自两个主机的答复,其中 192.168.0.107 是本机地址。
因为引流与回注发生在清洗设备上,为了方便展示,示意图中只画了清洗设备,检测设备未在图中展示。
在Kubernetes中设计了一种网络模型,要求无论容器运行在集群中的哪个节点,所有容器都能通过一个扁平的网络平面进行通信,即在同一IP网络中。需要注意的是:在K8S集群中,IP地址分配是以Pod对象为单位,而非容器,同一Pod内的所有容器共享同一网络名称空间。
本文部分内容译自《An Analysis and Empirical Study of Container Networks》
K8s定义了一个网络模型,目的是给Pod,service等使用者提供一个简单、一致的网络视图和使用体验,对它们屏蔽宿主机环境的网络拓扑的同时,也屏蔽网络模型实现上的细节。
首先需要指出的是,IRB有两种:非对称IRB(Asymmetric Integrated Routing and Bridging),对称IRB(Symmetric Integrated Routing and Bridging)。
EVPN 引入了一种新的以太网服务交付模型,它通过使用 BGP 为 VXLAN 隧道提供可扩展、可互操作的端到端控制平面解决方案,这意味着它为第 3 层路由基础设施上的第 2 层虚拟化提供了更简单的解决方案。
建立数据中心没有单一的方法。同样,没有单一的方法来管理数据中心结构。Cisco、第三方和开源社区提供了许多不同的工具,可用于监视、管理、自动化和排除数据中心结构的故障。
Calico是Kubernetes生态系统中另一种流行的网络选择。虽然Flannel被公认为是最简单的选择,但Calico以其性能、灵活性而闻名。Calico的功能更为全面,不仅提供主机和pod之间的网络连接,还涉及网络安全和管理。Calico CNI插件在CNI框架内封装了Calico的功能。
领取专属 10元无门槛券
手把手带您无忧上云