4

l2 cni插件与l3 cni插件有什么区别?

L2 CNI 插件是否不提供对 Pod 的公共访问?L2 和 L3 插件的示例是什么

4

1 回答 1

6

通常,当提到 L2 与 L3 CNI 插件时,他们谈论的不是其 pod 的可达性(公共与私有),而是更多关于网络插件在该 pod 和其他 Kubernetes pod 之间提供的连接的 OSI 网络模型层.

例如,如果所有 pod 都可以相互发送 L2 流量(例如 ARP),那么 CNI 插件将提供 L2 连接。大多数 CNI 插件为 Kubernetes pod 提供 IP (L3) 网络,因为这是由Kubernetes 网络模型定义的。

提供跨主机 L3 网络的 Kubernetes 网络实现的一些示例:Calico、flannel、Canal、kube-router 等。

我能想到的唯一一个可以跨主机提供 L2 网络的例子是 Weave Net,但我预计我可能会忘记其他一些网络。

请注意,以上许多都可以使用 VXLAN 等封装方法来提供跨主机的 pod 到 pod 网络。这通常被误解为它们在 Pod 之间提供 L2 网络。但是,他们通常仍然在 pod 和它的主机之间使用 IP 路由步骤,这意味着它提供 L3 pod 到 pod 的连接。

另请注意,上述许多使用 linux 网桥连接同一主机上的 pod,这意味着同一主机上的 pod 将获得 L2 连接,但其他主机上的 pod 将被路由(L3)。将 L3 网络扩展到大量端点要容易得多,所以这是有道理的。Calico 在这里是一个小例外,即使对于同一主机上的 Pod 也使用 L3 路由网络。

于 2019-02-25T22:08:28.137 回答