Kubernetes Pod 网络:关键考量与 CNI 解析
在 Kubernetes 环境中,Pod 网络的规划和配置至关重要,它涉及到多个方面的考量,这些考量将直接影响到整个集群的网络性能、安全性和可扩展性。下面我们将详细探讨这些关键的网络考量因素。
原生路由与隧道协议
在许多环境中,对工作负载 IP 进行原生路由是不可行的。例如,在云服务提供商的网络中,像 BGP 这样的路由协议可能无法与底层网络集成。以 AWS 环境为例,当我们希望支持原生路由并通过 BGP 共享路由时,可能会因为以下两个原因而失败:
- 源/目标检查启用 :此设置确保到达主机的数据包的目标(和源 IP)与目标主机匹配,若不匹配则丢弃数据包,不过该设置可以禁用。
- 数据包需跨子网传输 :当数据包需要离开子网时,底层 AWS 路由器会评估目标 IP,若存在 Pod IP,则无法进行路由。
在这些情况下,我们可以考虑使用隧道协议。隧道协议通过封装技术,使 Pod 网络在很大程度上对底层网络不可见。封装即将一个数据包(内层数据包)放入另一个数据包(外层数据包)中,内层数据包的源 IP 和目标 IP 字段引用工作负载(Pod)IP,而外层数据包的源 IP 和目标 IP 字段引用主机/节点 IP。常见的隧道协议有 VXLAN、Geneve 和 GRE 等。在 Kubernetes 中,VXLAN 已成为网络插件最常用的方法之一,它将整个以太网帧放入 UDP 数据包中,形成一个完全虚拟化的二层网络,即覆盖网络,底层网络无需关注覆盖网络。
然而,使用隧道协议也有一些缺点:
-
超级会员免费看
订阅专栏 解锁全文
615

被折叠的 条评论
为什么被折叠?



