我的网络设置:
使用此设置,只有同一子网上的节点可以建立 bgp 连接。其他节点(执行完整的 3 路 tcp 握手),使用 [FIN, ACK] 然后 [RST] 响应 hte OPEN 消息,因此我的calicoctl node status
<- 中的对等消息重置连接在控制器 3 上(10.0.3.100)
IPv4 BGP status
+--------------+-------------------+-------+----------+--------------------------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+--------------+-------------------+-------+----------+--------------------------------+
| 10.0.1.100 | node-to-node mesh | start | 07:12:01 | Connect Socket: Connection |
| | | | | closed |
| 10.0.2.100 | node-to-node mesh | start | 07:12:01 | Connect |
| 10.0.1.101 | node-to-node mesh | start | 07:12:01 | Connect Socket: Connection |
| | | | | reset by peer |
| 10.0.1.102 | node-to-node mesh | start | 07:12:01 | Connect Socket: Connection |
| | | | | reset by peer |
| 10.0.2.102 | node-to-node mesh | start | 07:12:01 | Connect Socket: Connection |
| | | | | reset by peer |
| 10.0.3.101 | node-to-node mesh | up | 07:14:13 | Established |
| 10.0.3.102 | node-to-node mesh | up | 07:12:02 | Established |
+--------------+-------------------+-------+----------+--------------------------------+
我从控制器 3 (10.0.3.100) 到 node4 (10.0.2.102) 的握手 + OPEN 消息的wireshark 转储
10.0.3.100 和 10.0.2.102 之间的
Wireshark bgp 跟踪 10.0.0.4(10.0.3.100) 和 10.0.2.102 之间的 Wireshark bgp 跟踪
也许问题是节点 4 看到的数据来自 10.0.0.4 而不是 10.0.3.100?
什么有效
- 从所有节点Ping到所有节点OK
- nc 端口 179 到所有节点成功
- Wireshark 显示从控制器 3 到节点 4 的完整 TCP 握手
设置
- Kubernetes 1.21.1(通过 kubespray 安装)
- Calico 3.9(kubespray 中的默认设置)
- 所有网关都是 pfSense 2.5.x,“主”网关具有通过 10.0.0.2 的 10.0.1.0/24、通过 10.0.0.3 的 10.0.2.0/24 和通过 10.0.0.4 的 10.0.3.0/24 的静态路由。
- 在 wan 和 lan 上的数据中心路由器上禁用防火墙 没有在任何 pfSense 盒子上启用 NAT。(ipsec vpn 的 NAT 在主网关的 wan 端口上)
- 据我所知,我在所有子网中的所有节点之间都有完整的 IP 连接