当前位置:首页 > Web开发 > 正文

Kube-Router 同样值得一提的是kube-router

2024-03-31 Web开发

标签:

Kubernetes网络一直是一个非常庞大的主题。本文将介绍Kubernetes实际如何创建网络以及如何为Kubernetes集群设置网络。
 
本文不包孕如何设置Kubernetes集群。这篇文章中的所有例子都将使用Rancher 2.0集群(其他平台也同样适用)。即使你筹算使用其他的公有云打点Kubernetes处事,也但愿你对Kubernetes网络的事情道理有更好的了解。
 

如何使用Kubernetes网络


 
许多Kubernetes部署指南中包罗了在K8S部署中部署Kubernetes网络CNI的说明。但是如果你的K8S集群已经运行,并且尚未部署任何网络,那么部署网络就像在K8S上运行其供给的配置文件一样简单(对付大大都网络和根基用例而言)。例如,要部署flannel:
 

 
这样,从网络的角度来看,K8S已经可以使用。为了测试一切是否正常,我们创建了两个Pod。
 

 
这将创建两个pod,它们正在使用我们的驱动器。检察此中一个容器,我们发明网络的IP地点范畴为10.42.0.0/24。
 

 
在另一个Pod进行的快速ping测试表白,网络运行正常。
 

 

与Docker网络对比,Kubernetes网络如何事情?

Kubernetes通过Docker之上的CNI打点网络,并将设备附加到Docker。尽管有Docker Swarm的Docker也具有本身的联网成果(例如overlay、macvlan、bridging等),但CNI也供给了类似类型的成果。
  

还有一点十分重要,K8S并不使用docker0(这是Docker的默认网桥),而是创建本身的网桥,名为cbr0,该网桥需要与docker0区分隔来。

为什么我们需要Overlay网络?

诸如vxlan或ipsec之类的overlay网络(如果你设置过安适***,你应该对此对照熟悉)可以将数据包封装到另一个数据包中。这使得实体在另一台计算机的范畴之外依旧可以寻址。Overlay网络的替代方案包孕如macvtap(lan)之类的L3解决方案,甚至包孕ivtap(lan)之类的L2解决方案,但是这些方案具有必然的局限性。

L2或L3上的任何解决方案都可以让pod在网络上寻址。这意味着pod不只在Docker网络内部访谒,还能直接从Docker网络外部访谒。这些是大众IP地点或私有IP地点。


然而,在L2长进行通信对照麻烦,并且你的经验会因为网络设备而异。某些交换机需要一些时间来注册你的Mac地点,然后才华将其实际连接到网络的其余部分。你还可能会遇到一些麻烦,因为系统中其他主机的neighbor(ARP) table仍在过时的缓存上运行,并且始终需要使用dhcp运行而不是host-local,这样可以制止主机之间的ip斗嘴。Mac地点和neighbor table问题是诸如ipvlan之类的解决方案存在的原因。这些解决方案不会注册新的mac地点,而是在现有地点上路由流量(尽管它们也有本身的问题)。
 

因此,我的建议是,对付大大都用户而言,将overlay网络作为默认解决方案应该足够了。但是,一旦事情负载变得越发高级并提出了更具体的要求,你将需要考虑其他的解决方案,如BGP和直接路由。

Kubernetes网络如何事情?

在Kubernetes中首先要了解的是,pod实际上并不等同于容器,而是容器的调集。在同一调集的容器中共享一个网络仓库。Kubernetes通过在暂停容器上设置网络来进行打点,你可以在你所创建的每个pod中找到这些暂停容器。所有其他pod都连接到暂停容器的网络,该容器自己除了供给网络外不执行任何操纵。因此,也可以使一个容器通过localhost与差别容器中的处事进行通信,此时该容器具有不异pod的不异界说。

除了本地通信之外,pod之间的通信看起来与Docker网络中的container-to-container通信几乎不异。

Kubernetes流量路由

我将以两种场景为例,详细地说明如安在Pod之间路由流量。

1、 在同一主机上路由流量:


在两种情况下,流量不会分开主机。一是当挪用的处事在同一节点上运行,一是单个pod中的同一个容器调集。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32988.html