kubernetes - 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 进行通信flannel
cbr0
vxlan0
我的问题是这种变化(from cbr0 to vxlan0
)会破坏 Linux 与 Linux 之间现有的通信吗?
解决方案
让我们从定义开始。
cbr0
是自己的 kubernetes 网桥,它是为了区别于 docker 使用docker0
的网桥而创建的。
vxlan
代表Virtual Extensible LAN
它是一个覆盖网络,这意味着它将数据包封装到另一个数据包中。
更精确的定义:
VXLAN 是一种封装协议,它使用隧道提供数据中心连接,以在底层第 3 层网络上扩展第 2 层连接。
VXLAN 隧道协议将第 2 层以太网帧封装在第 3 层 UDP 数据包中,使您能够创建跨越物理第 3 层网络的虚拟第 2 层子网或分段。每个第 2 层子网都由对流量进行分段的 VXLAN 网络标识符 (VNI) 唯一标识。
回答
不,它不会破坏 Linux 节点之间的通信。这是节点如何使用flannel
CNI 相互通信的另一种选择。我还在我的两个节点linux
集群上对此进行了测试,一切正常。
主要区别在于如何flannel
处理数据包。它将通过netstat
或可见wireshark
,而对于 POD,不会有任何变化,因为数据包在到达 POD 时将被规范化。
笔记!我建议在小型开发/测试集群上测试此更改,因为可能需要一些额外的设置firewalld
(在对生产进行任何更改之前的常规规则)。
有用的链接:
推荐阅读
- python - 在 Pandas 中,如何使用变量名来表示行索引以获得可以用作标题行的字符串?
- python - 为什么训练后我的体重会以这种奇怪的形式出现?
- html - 不能作为孩子出现. 使用 react material-ui/core 时
- node.js - 节点命令(节点 App.js)在 Visual Studio 代码中不起作用
- c# - 按下按钮时在 MVC 中加载数据
- python-3.x - 附加列表项会创建重复项
- python - 如何使用 Python 通过 Strava API 访问身份验证?
- ruby - 如何在 Github 工作流上运行 Ruby 脚本
- reactjs - React-hook-form 输入字段匹配验证最佳实践
- flutter - 将 Python 与 Flutter 连接以实现基于 Web 的解决方案