作者:开源云中文社区 2022-06-06 21:46:32
云计算
网络 Kubernetes网络旨在确保Kubernetes中的不同实体类型可以通信。Kubernetes基础设施的布局在设计上有很多分离。命名空间、容器和Pod旨在保持组件彼此不同,因此高度结构化的通信计划非常重要。
Kubernetes内部的网络与物理世界中的网络没有太大区别。有了网络基础知识,你就可以轻松实现容器Pod和服务之间的通信。
从使用交换机、路由器和以太网电缆的物理网络转移到使用软件定义网络(SDN)和虚拟接口的虚拟网络需要一段轻微的学习曲线。当然,原则保持不变,但有不同的规范和最佳实践。Kubernetes有自己的一套规则,如果你处理的是容器和云,这有助于了解Kubernetes网络是如何工作的。
Kubernetes网络模型有一些需要记住的一般规则:
Kubernetes网络旨在确保Kubernetes中的不同实体类型可以通信。Kubernetes基础设施的布局在设计上有很多分离。命名空间、容器和Pod旨在保持组件彼此不同,因此高度结构化的通信计划非常重要。
容器到容器的网络通过Pod网络命名空间进行。网络命名空间允许你拥有独立的网络接口和路由表,这些接口和路由表与系统的其余部分隔离并独立运行。每个Pod都有自己的网络命名空间,其中的容器共享相同的IP地址和端口。这些容器之间的所有通信都是通过localhost进行的,因为它们都是同一命名空间的一部分。(由图中的绿线表示。)
对于Kubernetes,每个节点都有一个指定的用于Pod的CIDR IP范围。这确保每个Pod都能收到集群中其他Pod可以看到的唯一IP地址。创建新Pod时,IP地址从不重叠。与容器到容器的网络不同,Pod到Pod的通信使用真实的IP进行,无论你是将Pod部署在同一节点上还是集群中的不同节点上。
上图显示,为了使Pod相互通信,流量必须在Pod网络命名空间和根网络命名空间之间流动。这是通过虚拟以太网设备或veth对(图中veth0到Pod命名空间1,veth1到Pod命名空间2)连接Pod命名空间和根命名空间来实现的。虚拟网桥连接这些虚拟接口,允许通信使用地址解析协议(ARP)在它们之间流动。
当数据从Pod 1发送到Pod 2时,事件流为:
Pod很动态。它们可能需要根据需求扩大或缩小规模。在应用程序崩溃或节点故障的情况下,可以再次创建它们。这些事件会导致Pod的IP地址发生变化,这将给联网带来挑战。
Kubernetes通过使用Service功能来解决此问题,该功能执行以下操作:
集群内负载均衡有两种方式:
上图显示了从Pod 1到Pod 3的包流通过Service到不同节点(以红色标记)。前往虚拟网桥的包必须使用默认路由(eth0),因为网桥上运行的ARP无法理解该服务。之后,包必须通过iptables进行过滤,iptables使用kube代理在节点中定义的规则。因此,该图显示了当前的路径。
到目前为止,已经讨论了如何在集群内路由流量。然而,Kubernetes网络还有另一面,那就是将应用程序暴露于外部网络。
你可以通过两种不同的方式将应用程序公开给外部网络。
Kubernetes发现服务有两种方式:
Kubernetes服务提供了一种访问一组Pod的方法,通常通过使用标签选择器来定义。这可能是应用程序试图访问集群中的其他应用程序,也可能允许你将集群中运行的应用程序公开给外部世界。Kubernetes
ServiceTypes允许你指定所需的服务类型。
不同的ServiceTypes包括:
只要你了解所使用的技术,Kubernetes内部的网络与物理世界中的网络没有太大区别。好好学习,记住网络基础知识,就可以轻松实现容器、Pod和服务之间的通信。
网页题目:Kubernetes网络的可视化指南
当前地址:http://www.shufengxianlan.com/qtweb/news29/364979.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联