Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 什么';在k8s中使用cni代替静态路由表的好处是什么_Docker_Kubernetes_Cni - Fatal编程技术网

Docker 什么';在k8s中使用cni代替静态路由表的好处是什么

Docker 什么';在k8s中使用cni代替静态路由表的好处是什么,docker,kubernetes,cni,Docker,Kubernetes,Cni,通过在每个节点上添加具有适当规则的静态路由表,容器网络也可以正常工作。例如,给定具有三个不同docker网桥子网的三个节点: node-1(192.168.0.1): 10.0.1.1/24 node-2(192.168.0.2): 10.0.2.1/24 node-3(192.168.0.3): 10.0.3.1/24 在每个节点上添加以下路由: ip route add 10.0.1.0/24 via 192.168.0.1 dev eth0 ip route add 10.0.2.0/2

通过在每个节点上添加具有适当规则的静态路由表,容器网络也可以正常工作。例如,给定具有三个不同docker网桥子网的三个节点:

node-1(192.168.0.1):
10.0.1.1/24
node-2(192.168.0.2):
10.0.2.1/24
node-3(192.168.0.3):
10.0.3.1/24
在每个节点上添加以下路由:

ip route add 10.0.1.0/24 via 192.168.0.1 dev eth0
ip route add 10.0.2.0/24 via 192.168.0.2 dev eth0
ip route add 10.0.3.0/24 via 192.168.0.3 dev eth0
kube代理以iptables模式运行时,集群服务ip被转换为pod ip,最后通过路由表路由到相关节点


那么,在路由表上使用cni插件有什么好处呢?路由表方法是否存在性能问题?

设计库伯内特斯的结构流畅。POD、服务和节点可以根据需要来来去去,可以通过手动更改(滚动更新、新部署)或自动扩展(HPA、节点自动扩展)。手动设置刚性网络结构否定了动态Kubernetes环境的好处

默认情况下不需要覆盖网络,但是,它们在特定情况下会有所帮助。比如我们没有足够的IP空间,或者网络无法处理额外的路由。或者当我们需要覆盖层提供的一些额外的管理功能时。一种常见的情况是,云提供商路由表可以处理的路由数量有限制。例如,AWS路由表最多支持50条路由,而不会影响网络性能。所以,如果我们有超过50个Kubernetes节点,AWS路由表就不够了。在这种情况下,使用覆盖网络会有所帮助

它本质上是将一个包封装在一个包中,该包跨节点遍历本机网络。您可能不想使用覆盖网络,因为它可能会由于所有数据包的封装解除封装而导致一些延迟和复杂性开销。它通常是不需要的,所以只有当我们知道为什么需要它时,我们才应该使用它

如果您关心CNI插件引起的延迟和开销,这里有一个方便的方法