首页
视频
资源
登录
原
Flannel IPIP模式
3799
人阅读
2022/12/9 15:14
总访问:
2645616
评论:
0
收藏:
0
手机
分类:
容器编排
![](https://img.tnblog.net/arcimg/hb/a7b81907f2e249d0a1ca79b4c0726515.png) ># Flannel IPIP模式 [TOC] ## IPIP模式简介 tn2> ipip模式类似于vxlan模式,不过这个是三层封装三层网络。 更多可以参考这篇文章:https://www.tnblog.net/hb/article/details/7850 ## Flannel IPIP模式简介 tn2>ipip模式下的路由规则与vxlan的不同点在于,这块的网关地址是节点的。而vxlan中网关的地址是其他节点上的`flannel.1`设备。另外就是所使用的`tunnel`设备不同。 ## 安装Flannel IPIP模式 tn2>首先通过如下命令使内核支持ipip模块。(每个节点都检测一下) ```bash # 加载ipip模式 modprobe ipip # 查看内核支持情况 lsmod | grep ipip ``` ![](https://img.tnblog.net/arcimg/hb/c819f36c9f3847aa953490a9210a1887.png) tn2>将`net.conf`的类型改为`ipip`模式,然后apply一下即可。 ![](https://img.tnblog.net/arcimg/hb/0bfd77026a184d1bbbce57cf7d71d725.png) ```bash kubectl delete -f kube-flannel.yaml kubectl apply -f kube-flannel.yaml ``` ![](https://img.tnblog.net/arcimg/hb/973d39046b6b4cc99dc0fdd9026f6ea7.png) ## 原理实践 tn2>首先我们部署三个Pod。 ![](https://img.tnblog.net/arcimg/hb/c7058ec3c2b6443495ecca4fc4807af1.png) >### 同节点不同pod通信 tn2>走二层桥接模式,不讲了 >### 不同节点的pod通信 tn2>我们以c1与c3为例。首先查看两个pod的路由与IP信息。 ```bash kubectl exec pod/c1 -- ifconfig kubectl exec pod/c1 -- route -n kubectl exec pod/c3 -- ifconfig kubectl exec pod/c3 -- route -n ``` ![](https://img.tnblog.net/arcimg/hb/94430ea292fe4518ba01299875b04381.png) ![](https://img.tnblog.net/arcimg/hb/fe5aa6454a304f24a5e5042e83424030.png) tn2>尝试ping是没有问题的。 ```bash kubectl exec pod/c1 -- ping 192.168.2.37 ``` ![](https://img.tnblog.net/arcimg/hb/84a4d207f6674f8f90596e132627f239.png) tn2>我们c1 pod想ping通c3 pod(192.168.2.37)走的是二条路由从eth0这个接口出去,然后通过找到连接的线到主机网络名称空间。由于我们的c1 pod在node1节点上,并且要访问的ip不在同一网段,所以我们需要查询node1节点路由。 ![](https://img.tnblog.net/arcimg/hb/d9a3aa71f2f944638e2956e9b6786423.png) tn2>由于我们访问的ip地址是`192.168.2.37`,那么我们应该走第五条路由,网关为`10.211.55.9`节点从`flannel.ipip`网卡出去。 当我们的网关为`10.211.55.9`由于是同一网段所以会从第二条路由出去,但是在这个时候我们会进行ipip封包。 ```bash 外层源IP(主机IP 10.211.55.8)外层目的IP(对方节点 10.211.55.9) 源Mac:eth0(节点mac) 目的Mac:eth0(对方节点mac) 内层源IP(pod的ip)内层目的IP(对方pod的ip)内层没有mac,内层没有mac ``` tn2>我们可以在ping时抓`flannel.ipip`网卡的包。 可以发现根本没有mac地址。 ```bash tcpdump -pne -i flannel.ipip ``` ![](https://img.tnblog.net/arcimg/hb/43627184a0a34baebc59998008a77d6c.png) tn2>我们可以再来主机的`eth0`上抓包看是如何进行封包的。 正如我们所说的那样,没有pod的ipip地址。 ```bash tcpdump -pne -i eth0 -w flannel_ipip.cap ``` ![](https://img.tnblog.net/arcimg/hb/e16da13811a04fa3b7f0d771aadf7364.png) tn2>到node2节点上后,我们将会发往`flannel.ipip`进行解封包,然后再查路由表到下一跳cni0中,如果cni0不知道会发送ARP包进行广播,最后将数据包发送到我们的c3 pod上。 ![](https://img.tnblog.net/arcimg/hb/1d9ac9a0e369422c80e00ccf9ef00085.png) tn2>那他们在ping时拿到的mac地址是? 分别是自己的mac地址和同主机的cni0网卡mac地址。 ![](https://img.tnblog.net/arcimg/hb/4f5f4fd63be74fa79e72b09fd3b5eea2.png)
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}
尘叶心繁
这一世以无限游戏为使命!
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
.net后台框架
171篇
linux
17篇
linux中cve
1篇
windows中cve
0篇
资源分享
10篇
Win32
3篇
前端
28篇
传说中的c
4篇
Xamarin
9篇
docker
15篇
容器编排
101篇
grpc
4篇
Go
15篇
yaml模板
1篇
理论
2篇
更多
Sqlserver
4篇
云产品
39篇
git
3篇
Unity
1篇
考证
2篇
RabbitMq
23篇
Harbor
1篇
Ansible
8篇
Jenkins
17篇
Vue
1篇
Ids4
18篇
istio
1篇
架构
2篇
网络
7篇
windbg
4篇
AI
18篇
threejs
2篇
人物
1篇
嵌入式
3篇
python
13篇
HuggingFace
8篇
pytorch
9篇
opencv
6篇
Halcon
4篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术