总目录索引:K8s网络Calico 从入门到放弃系列
1、IPIP模式简介
IPIP模式是一种将各Node的路由之间做一个tunnel,再把网络连接起来的模式:
2、准备环境
master节点去污点,所以工作节点有两个
分别在两台worker节点运行一个pod,简易pod的yaml文件如下
cat tomcat-1.yaml apiVersion: v1 kind: Pod metadata: name: tomcat-1 labels: app: tomcat-1 spec: containers: - name: tomcat-1 image: tomcat:v1 imagePullPolicy: IfNotPresent
kubectl label nodes node1 worker=node1 cat tomcat-2.yaml apiVersion: v1 kind: Pod metadata: name: tomcat-2 labels: app: tomcat-2 spec: nodeSelector: worker: node1 containers: - name: tomcat-2 image: tomcat:v1 imagePullPolicy: IfNotPresent运行成功后
3、网络结构解析
3.1 pod网络
进入tomcat-1查看pod的网络
kubectl exec tomcat-1 -- ip a
tomcat-2的网络
可以看到,pod有tunl0、loopback和eth0。
3.2 Node网络
node2中除了enss33外,多了docker0和calib9c0cd39e90@if4(下面简称为cali.90),tunl0就是Calico在IPIP模式下的隧道名称 ,而cali.90是啥子类,该设备的编号为14。让我们回到pod2中,查看pod2内的ip link:
kubectl exec tomcat-2 -- ip link show eth0
3.3 查看node路由信息
根据上节的信息,绘出当前实验网络的主要设备图
3.4 node之间连接
分别在两个node的Cali.4a、tunl0、eth0出进行抓包分析,结果如下图所示,其中Cali.4a与tunl0的ip完全一致,因此合并输出。
2、经过tunl0的ip报会被再封上一层ip。通过node1的route规则,会发往ens33,因此我们在ens33处的抓包结果为 192.168.10.11 > 192.168.10.12: IP 192.168.166.145>192.168.104.20
3、4其实就是1、2的逆过程,检查node2的route表即可知道流向。ens33将ipip拆封后,将流量发给tunl0,tunl0再转发给cali.90。
4、node内连接