calico跨网段不通_多对网桥ip地址相同

calico跨网段不通_多对网桥ip地址相同Calico简介Calico是一个基于BGP协议的网络互联解决方案。它是一个纯3层的方法,使用路由来实现报文寻址和传输。相比flannel,ovs等SDN解决方案,Calico避免了层叠网络带来的性能损耗。将节点当做router,位于节点上的container被当做router的直连设备。利用Kernel来实现高效的路由转发。节点间的路由信息通过BGP协议在…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

Calico 简介

Calico 是一个基于BGP协议的网络互联解决方案。它是一个纯3层的方法,使用路由来实现报文寻址和传输。
相比 flannel, ovs等SDN解决方案,Calico 避免了层叠网络带来的性能损耗。将节点当做 router ,位于节点上的 container 被当做 router 的直连设备。利用 Kernel 来实现高效的路由转发。 节点间的路由信息通过 BGP 协议在整个 Calico 网络中传播。 具有以下特点:
1. 在 calico 中的数据包不需要进行封包和解封。
2. 基于三层网络通信,troubleshoot 会更方便。
3. 网络安全策略使用 ACL 定义,基于 iptables 实现,比起 overlay 方案中的复杂机制更只管和容易操作。

Environment

img

server ip mac gw mac
walker-1 172.16.6.47 fa:16:3e:02:8b:17 00:23:89:8C:E8:31
walker-2 172.16.6.249 fa:16:3e:8c:21:13 00:23:89:8C:E8:31
demi-1 172.16.199.114 fa:16:3e:d9:a0:5e 00:23:89:8C:E8:31
busybox-1 192.168.187.211 3a:1d:1e:91:f5:9e 66:39:fa:e7:9f:a9
busybox-2 192.168.135.74 de:16:fc:1c:44:35 5a:4a:df:5e:c9:6c
busybox-3 192.168.121.2 de:16:fc:1c:44:35 8e:6b:fa:f7:5d:3b

node2 单独位于vlan 199 中,和master以及node1间的通信需要经过网关(Router)转发。

使用 IP-in-IP

ipip enable=false

$ calicoctl apply -f - << EOF
apiVersion: v1
kind: ipPool
metadata:
  cidr: 192.168.0.0/16
spec:
  nat-outgoing: true
EOF

Jetbrains全家桶1年46,售后保障稳定

ipip 模式禁用时,busybox-3 和 busybox-{1,2} 之间无法通信。

分析如下:

主机路由:

[root@walker-1 manifests]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.6.254    0.0.0.0         UG    0      0        0 eth0
169.254.169.254 172.16.6.87     255.255.255.255 UGH   0      0        0 eth0
172.16.6.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.121.0   172.16.199.114  255.255.255.192 UG    0      0        0 eth0
192.168.135.64  172.16.6.249    255.255.255.192 UG    0      0        0 eth0
192.168.187.192 0.0.0.0         255.255.255.192 U     0      0        0 *
192.168.187.209 0.0.0.0         255.255.255.255 UH    0      0        0 calic6611247c43
192.168.187.211 0.0.0.0         255.255.255.255 UH    0      0        0 calie50081a277c

从busybox-1 发往 busybox-3 的报文头部如下所示:

src max | dst mac | src ip | dst ip 
---     | ---     | ---    | ---    
3a:1d:1e:91:f5:9e | 66:39:fa:e7:9f:a9  | 192.168.187.211 | 192.168.121.2

根据宿主机路由,报文会从eth0 发往 172.16.199.114。

由于二者位于不通广播域,需要通过网关转发。因此报文的 dst mac 会被修改为 172.16.6.254(gw) 对应的mac。

src max | dst mac | src ip | dst ip | enc src IP | enc dst IP 
---     | ---     | ---    | ---    | --- | ---
fa:16:3e:02:8b:17 | 00:23:89:8C:E8:31  | 192.168.187.211 | 192.168.121.2

gw 收到该报文后,会比对本地路由条目。由于 router 中并没有到 192.168.121.0\26 网段的路由,因此报文被丢弃。

ipip enable=true

$ calicoctl apply -f - << EOF
apiVersion: v1
kind: ipPool
metadata:
  cidr: 192.168.0.0/16
spec:
  ipip:
    enabled: true
    mode: always
  nat-outgoing: true
EOF

这种模式下,可实现跨网段节点上容器的互通。

[root@walker-1 manifests]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.6.254    0.0.0.0         UG    0      0        0 eth0
169.254.169.254 172.16.6.87     255.255.255.255 UGH   0      0        0 eth0
172.16.6.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.121.0   172.16.199.114  255.255.255.192 UG    0      0        0 tunl0
192.168.135.64  172.16.6.249    255.255.255.192 UG    0      0        0 tunl0
192.168.187.192 0.0.0.0         255.255.255.192 U     0      0        0 *
192.168.187.209 0.0.0.0         255.255.255.255 UH    0      0        0 calic6611247c43
192.168.187.211 0.0.0.0         255.255.255.255 UH    0      0        0 calie50081a277c

busybox-1 发送报文至 busybox-3 时,根据 master 上路由,会经过 tunl0 设备。tunl0 会为原来的IP报文在封装一层IP协议头。过程如下:

  1. busybox-1 向 busybox-3 发送 icmp 报文(略去容器至 calico 网卡步骤)。

    src max dst mac src ip dst ip
    3a:1d:1e:91:f5:9e 66:39:fa:e7:9f:a9 192.168.187.211 192.168.121.2
  2. 报文被node 截获,查询本机路由后由 tunl0 设备将报文发出。

    src max dst mac src ip dst ip enc src IP enc dst IP
    fa:16:3e:02:8b:17 00:23:89:8C:E8:31 192.168.187.211 192.168.121.2 172.16.6.47 172.16.199.114
  3. 报文发送至网关(router), 根据目的IP将报文路由至 172.16.199.114(略去ARP等步骤)。

    src max dst mac src ip dst ip enc src IP enc dst IP
    00:23:89:8C:E8:31 fa:16:3e:d9:a0:5e 192.168.187.211 192.168.121.2 172.16.6.47 172.16.199.114
  4. 到达 demi-1 后,根据 demi-1 上的路由策略,将报文发送至 busybox-3(略去容器至 calico 网卡步骤) 。

    src max dst mac src ip dst ip
    8e:6b:fa:f7:5d:3b de:16:fc:1c:44:35 192.168.187.211 192.168.121.2

Note: ==容器的 gw 为和该容器对应的 calico 网卡。==

虽然实现了 calico 跨网段通信,但对于 busybox-{1,2} 间的通信来说,IP-in-IP 就有点多余了,因为2者宿主机处于同一广播域,2层互通,直接走主机路由即可。

calico cross-subnet

$ calicoctl apply -f - << EOF
apiVersion: v1
kind: ipPool
metadata:
  cidr: 192.168.0.0/16
spec:
  ipip:
    enabled: true
    mode: cross-subnet
  nat-outgoing: true
EOF

为了解决IP-in-IP 模式下,同网段封装报文的问题,calico 提供了 cross-subnet 的配置选项

[root@walker-1 k8s]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.6.254    0.0.0.0         UG    0      0        0 eth0
169.254.169.254 172.16.6.87     255.255.255.255 UGH   0      0        0 eth0
172.16.6.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.121.0   172.16.199.114  255.255.255.192 UG    0      0        0 tunl0
192.168.135.64  172.16.6.249    255.255.255.192 UG    0      0        0 eth0
192.168.187.192 0.0.0.0         255.255.255.192 U     0      0        0 *
192.168.187.209 0.0.0.0         255.255.255.255 UH    0      0        0 calic6611247c43
192.168.187.211 0.0.0.0         255.255.255.255 UH    0      0        0 calie50081a277c

从主机路由可看出,对于同一网段中的路由,直接走 eth0 网卡。

默认情况下,calico 在启动时会自动选择一块网卡。当主机上有多块网卡时,为了保证路由的正确性,需要手动指定 calico 使用哪块物理网卡。参考一下链接:

http://docs.projectcalico.org/v2.3/usage/configuration/node

Note

The cross-subnet mode option requires each Calico node to be configured with the IP address and subnet of the host. However, the subnet configuration was only introduced in Calico v2.1. If any nodes in your deployment were originally created with an older version of Calico, or if you if you are unsure whether your deployment is configured correctly, follow the steps in Upgrading from pre-v2.1 before enabling cross-subnet IPIP.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210028.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • discuz论坛更换域名,搬家步骤

    discuz论坛更换域名,搬家步骤搬家步骤具体如下:1、打包数据库文件保存到本地。2、打包网站根目录所有程序(discuz)保存到本地。3、上传网站程序包和数据库包到新的空间,将数据库上传到新的服务器中。4、找到config

    2022年7月1日
  • Python获取秒级时间戳与毫秒级时间戳的方法[通俗易懂]

    Python获取秒级时间戳与毫秒级时间戳的方法[通俗易懂]1、获取秒级时间戳与毫秒级时间戳、微秒级时间戳importtimeimportdatetimet=time.time()print(t)#原始时间数据print(int(t))#秒级时间戳print(int(round(t*1000)))#毫秒级时间戳print(int(round(t*1000000)))#微秒级时间戳输出1648812012.4263625 #原始时

    2022年9月28日
  • js原生实现FastClick事件

    js原生实现FastClick事件js原生实现FastClick事件注明:本人学习javascript时间不长,最近一直在做web端的手机网页和微信应用,由于最近有用到类似fastclick的功能,在原来的程序中用touchstart和touchend事件模拟,现在尝试将其封装,得到了以下两种有问题的方案。分享给大家,另求大神指导

    2022年6月19日
  • WerFault.exe 占用CPU 100%的问题处理[通俗易懂]

    WerFault.exe 占用CPU 100%的问题处理[通俗易懂]转载自:https://technet.microsoft.com/en-us/library/cc754364(v=ws.11).aspx关于禁用WerFault.exe进程的操作方法,网络上的其它设置都不生效,通过官方给出的操作,完美的禁用了此进程,适用于win2008。AppliesTo:WindowsServer2008R2WindowsErrorRe…

    2022年6月15日
  • 什么软件自动刷点击量(不同的IP在刷网站)

    网络爬虫是目前各大企业获取数据的主要方式,很多人都知道爬虫使用代理IP,但对其中的原因却知之甚少。那为什么代理IP能帮助网络爬虫呢?1、已解决IP限制。目前大部分网站都有反爬虫技术,最常见的限制是IP接入。假如本站点的IP被封掉,可以用代理IP换IP后继续爬虫。2、提高爬虫的效率。如今有了工作效率的要求,不仅是使用单一的爬虫,为了提高爬虫的效率,可以使用多个爬虫来爬虫,这需要更多的IP,同时也需要IP的更换,自然离不开代理IP。以上介绍代理IP对网络爬虫的帮助关键,大家都有了认识,找代理IP时要找高.

    2022年4月13日
  • idea 查看jsp是否被引用_idea 运行JSP后显示源代码是什么情况

    idea 查看jsp是否被引用_idea 运行JSP后显示源代码是什么情况该楼层疑似违规已被系统折叠隐藏此楼查看此楼没加struts的jar包时可以用,加上jar包后就不能用了。tomcat好像有一个报错信息”C:\ProgramFiles\Java\apache-tomcat-7.0.54\bin\catalina.bat”run[2014-09-1909:05:12,773]Artifactdemo:warexploded:Serverisnot…

    2022年10月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号