【王老师说运维】:Ingress网络是一组规则,充当Kubernetes集群的入口点。这允许入站连接,可以将其配置为通过可访问的URL,负载平衡流量或通过提供基于名称的虚拟主机从外部提供服务。因此,Ingress是一个API对象,通常通过HTTP管理集群中服务的外部访问,是暴露服务的最有效方式。
现在,让我以一个例子向您解释Ingress网络的工作。
有2个节点具有带有Linux桥接器的pod和根网络命名空间。除此之外,还有一个名为flannel0(网络插件)的新虚拟以太网设备被添加到根网络中。
现在,假设我们希望数据包从pod1流向pod 4.请参阅下图。
-
因此,数据包将pod1的网络保留在eth0,并进入veth0的根网络。
-
然后它被传递给cbr0,这使得ARP请求找到目的地,并且发现该节点上没有人具有目的地IP地址。
-
因此,桥接器将数据包发送到flannel0,因为节点的路由表配置了flannel0。
-
现在,flannel守护程序与Kubernetes的API服务器通信,以了解所有pod IP及其各自的节点,以创建pods IP到节点IP的映射。
-
网络插件将此数据包封装在UDP数据包中,其中额外的标头将源和目标IP更改为各自的节点,并通过eth0发送此数据包。
-
现在,由于路由表已经知道如何在节点之间路由流量,因此它将数据包发送到目标节点2。
-
数据包到达node2的eth0并返回到flannel0以解封装并在根网络命名空间中将其发回。
-
同样,数据包被转发到Linux网桥以发出ARP请求以找出属于veth1的IP。
-
数据包最终穿过根网络并到达目标Pod4。
王老师说运维之菜鸟kubernetes(k8s)入门实战:http://www.codeforest.cn/course/473