解决calico-vxlan模式下服务之间无法正常访问问题

目前在一套上云的环境中k8s用的是calico的vxlan模式,可 以支持跨vpc的访问,但是在部署服务过程中发现服务之间无法互相访问,无论是通过域名/svc ip还是pod ip,只有访问自身是没有问题的如下图:
解决calico-vxlan模式下服务之间无法正常访问问题_第1张图片因为我们集群的kube-proxy用的是iptables模式,第一个想到的就是查看下iptables的防火墙规则,看看路由转发到对应访问的服务主机上没有,查看了下也有相对应的路由规则,检查主机防火墙也是关着的。
接下来开始查看calico,记得当时部署的时候calico的ippool所采用的模式是CrossSubnet,然后kubectl -n kube-system edit ippol default-ipv4-ippool中;编辑vxlanMode: Never;然后保存退出,不用重启calico的pod,然后到跨vpc对应的主机上互相访问,发现已经没有问题了,如图:
解决calico-vxlan模式下服务之间无法正常访问问题_第2张图片注:vxlanMode: vxlan隧道模式,不能与ipipMode同时使用。有三个值,跟ipipMode的一样。
Always: 始终使用VXLAN隧道。
CrossSubnet: 只有在跨子网的时候才使用VXLAN隧道。
Never: 不使用VXLAN。

你可能感兴趣的:(Kubernetes,kubernetes)