首页 > 解决方案 > Kubernetes 中的 cbr0 与 vxlan 有什么区别?

问题描述

我们有一个 K8S 集群环境,1 master node并且2 worker nodes所有都在 Linux 上,我们正在使用 flannel

下面给出示例

Master (CentOS 7) - 192.168.10.1

Worker Node-1 (CentOS 7) - 192.168.10.2
Worker Node-2 (CentOS 7) - 192.168.10.3

Worker Node-3 (Windows ) - 192.168.10.4

现在,我们必须在Windows node现有集群中添加一个(例如 192.168.10.4)192.168.10.1

根据此链接,似乎我们必须更新from to和据我所知cni-conf.json的部分,这是为了与 Windows 进行通信flannelcbr0vxlan0

我的问题是这种变化(from cbr0 to vxlan0)会破坏 Linux 与 Linux 之间现有的通信吗?

标签: kubernetes

解决方案


让我们从定义开始。

cbr0是自己的 kubernetes 网桥,它是为了区别于 docker 使用docker0的网桥而创建的。

vxlan代表Virtual Extensible LAN它是一个覆盖网络,这意味着它将数据包封装到另一个数据包中。

更精确的定义:

VXLAN 是一种封装协议,它使用隧道提供数据中心连接,以在底层第 3 层网络上扩展第 2 层连接。

VXLAN 隧道协议将第 2 层以太网帧封装在第 3 层 UDP 数据包中,使您能够创建跨越物理第 3 层网络的虚拟第 2 层子网或分段。每个第 2 层子网都由对流量进行分段的 VXLAN 网络标识符 (VNI) 唯一标识。

回答

不,它不会破坏 Linux 节点之间的通信。这是节点如何使用flannelCNI 相互通信的另一种选择。我还在我的两个节点linux集群上对此进行了测试,一切正常。

主要区别在于如何flannel处理数据包。它将通过netstat或可见wireshark,而对于 POD,不会有任何变化,因为数据包在到达 POD 时将被规范化。

笔记!我建议在小型开发/测试集群上测试此更改,因为可能需要一些额外的设置firewalld(在对生产进行任何更改之前的常规规则)。


推荐阅读