0
点赞
收藏
分享

微信扫一扫

阿里云ECS搭建k8s 跨主机网络不通

阿里云ECS搭建k8s 跨主机网络不通

今天采用kubeadm 搭建一个kubernetes 1.20.16 的k8s集群,搭建完成之后发现DNS不能正常解析。排查后发现跨主机POD网络不能通信,苦恼许久,做下记录。

因为网络插件采用flannel 的host-gw模式,直接走二层网络通信。
image.png

上图是那掘金的。

两台主机的网络规划就如上图吧?

在Node1 上无法ping 通10.244.1.20.

在node1上抓包发现能看到ICMP包,但是在Node2上收不到ICMP包。然后怀疑:

1,iptables 防火墙将ICMP包丢弃。

2,阿里云的ECS之间有什么特别的限制。

经过检查发现iptables 并未异常,那么就可能是2了。google 一下发现张馆长的记录文章[https://zhangguanzhang.github.io/2020/06/23/host-gw-in-aliyun/#/前言](https://zhangguanzhang.github.io/2020/06/23/host-gw-in-aliyun/#/%E5%89%8D%E8%A8%80)

文章内写到:

  • 可以断定阿里的vpc实际上有一些类似过滤的行为,理解为包从宿主机出去还没发到目的宿主机的路上经过了一个东西(ovs,SDN)。实际上阿里云vpc下host-gw跨节点不通就是包经过这个东西被路由到外面去了,然后因为是包的源目IP是私网ip会被SDN丢掉。我们得在专有vpc上配置路由让包不出公网而是到目标ecs上.

按照他说给的办法解决问题

几台主机写几条,为了把包发送到指定的宿主机上

登录阿里云控制台,专有vpc –> 路由表 –> 自定义
10.244.0.0/24 虚拟机 node1
10.244.1.1/24 虚拟机 node2

注意事项

阿里的vpc内部有些cidr是预留的不给客户使用。可用的cidr有:

A类地址:10.0.0.0~10.255.255.255

B类地址:172.16.0.0 ~172.31.255.255

C类地址:192.168.0.0~192.168.255.255

举报

相关推荐

0 条评论