在这个关于 Antrea 容器网络的博客中,我们将着重介绍 Egress 功能,并展示如何在 vSphere with Tanzu 中使用它。
根据官方 Antrea 文档,Egress 是一种 Kubernetes 自定义资源定义(CRD),它允许您为特定的 Pod 指定访问外部网络时使用的出口(SNAT)IP。当所选的 Pod 访问外部网络时,Egress 流量将通过隧道传输到托管 Egress IP 的节点(如果它与 Pod 所在的节点不同),并在离开该节点时被 SNAT 到 Egress IP。您可以在以下图片中看到流量的流向。
当 Egress IP 从 externalIPPool 中分配时,Antrea 还自动提供了高可用性;即如果托管 Egress IP 的节点故障,将有另一个节点从 externalIPPool 的 nodeSelector 选择的其余节点中被选举出来。
注意:备用节点不仅会接管 IP,还会通过二层广播(例如 IPv4 的 Gratuitous ARP)来通知网络上的其他主机和路由器该 IP 关联的 MAC 地址已更改。
如果以下任何一项符合您的需求,您可能会想要使用 Egress 功能:
- 当一些特定 Pod 连接到集群外的服务时,您希望它们使用一个一致的 IP 地址,便于审计日志溯源或在外部防火墙中按源 IP 进行过滤等。
- 您想要强制外部连接通过特定节点离开集群,以进行安全控制或克服网络拓扑限制。
您也可以使用可路由的 Pod 来实现相同的效果。但是