calico ipip 跨节点pod通信详解

calico ipip 跨节点pod通信详解

问题概述

为了更好地了解calico ipip协议中跨节点之间pod通信

(这里以redis pod为例)

其链路通信示意图如下:
链路图

1. 这里我们一步一步抓包来进行验证。
①:pod1 eth0→node1 calico.xx

在这里插入图片描述
通过node1我们kubectl get ipamblocks -A找到容器地址段
在这里插入图片描述
当前我们需要去验证的跨节点容器间通信为如图标红两个pod
在这里插入图片描述

②:这里我们从pod1(redis1-0-0) 去ping 对端尝试在calico网卡上抓包

tcpdump -i cali64e8186a81e -nnve -p icmp -w /root/cali64.pcap
在这里插入图片描述
(这里能看到有从pod1->pod2的出包,同时有pod2→pod1的回包,那么证明网络是从pod1 网卡eth0是发包到了cali64xxxx网卡)

③:这里如何将容器内的网络让对端节点知道呢,因为在对端路由表中是不存在node1节点pod的路由信息的。

因此这里涉及到ipip包封装,简单来说就是node1中的tunl0网卡将原始报文
(源地址:10.112.209.41(redis-1-0-0)→对端10.112.0.43(目的地址))进行了封装,在外面包了一层节点的信息(以告诉对端下一跳如何进行)

(在node2节点上tcpdump -i eth0 -nnve src host 192.168.36.28(node1节点ip) -w /root/eth0.pcap)

发现如下:
在这里插入图片描述
同理,包到了node2节点eth0后,通过解包,会根据路由找到下一跳calico.xxx网卡,进而找到目的端。

####注意#####

当同子网之间通信时,其实无需进行路由处理(即可以省去ipip协议进行通信,而尝试直接BGP路由协议解决,减少链路损耗。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值