「这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战」。
数据包
calico的数据路径在kubenetes中指的是一个主机上的POD数据包如何到达另一台主机的上POD
数据路径流程图来自官网
当calico部署成功后,它会在主机上创建多条路由,如下
IPIP网络模式
因为我们使用的是默认的网络模式IPIP,,另外还有一种支持大型网络BGP模式,以及刚出不久的虚拟子网VXLAN
IPIP模式是基于标准的linux dataplance(基于iptables)的规则实现的
以下截图只显示部分iptables规则,随着节点的增加和pod的增加,规则是越来越多
路由表
以下路由表显示192.168.166.192为当前calico在本机创建的网卡ip
192.168.109.64和192.168.219.0为另外2个节点42,43的calico tunl0 ip
本节点还有一个pod,它的ip是192.168.166.193,可以通过网络接口cali7511027af72来直接访问
1 | js复制代码#为了不暴露ip,使用x代替 |
iptables规则
通过过滤cali7511027af72可以查到,已经在当前iptables规则里面,其中fw(来自pod)和tw(去pod)的规则都是允许任意全部
1 | js复制代码[root@k8s1 ~]# iptables -L | grep cali7511027af72 |
小结
因此calico的数据包流转是基于已经建好的网卡,路由表,以及iptables规则来实现的
跨node访问流程是: Pod-IP->本机IP->目标主机IP->iptables规则->POD-IP
同node之间流程是: Pod1->本机iptables规则->Pod2
本文转载自: 掘金