2

这是我的集群环境:</p>

service cluster ip cidr:10.254.0.0/16
pod ip cidr: 172.30.0.0/16
kube-proxy: ipvs mode
flannel : vxlan

kubectl 版本

Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.4", GitCommit:"5ca598b4ba5abb89bb773071ce452e33fb66339d", GitTreeState:"clean", BuildDate:"2018-06-06T08:13:03Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.4", GitCommit:"5ca598b4ba5abb89bb773071ce452e33fb66339d", GitTreeState:"clean", BuildDate:"2018-06-06T08:00:59Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

我期望的结果:我可以从kubernetes master正常访问SVC IP。在master主机上,我已经部署了kube-proxy和flannel。

我的 kubernetes 集群的所有组件都是通过发布二进制文件部署的。


我已经正常部署了我的集群,大部分情况下,它可以对外提供服务。我已经部署了一个nginx服务器,我的截图:

nginx服务器

Service IP: 10.254.126.228
Pod IP: 172.30.21.3

我在kubernetes master主机上直接访问pod IP(172.30.21.3)时,可以正常访问。

我的截图: http请求

但是当我访问服务IP时,会出现访问超时。

我的截图: 访问 SVC IP 超时

这只会在容器外部的主机上请求 SVC IP 时发生。如果我在容器中,我可以正常访问 SVC IP。

我的截图: 在容器http请求中

这是我的 ipvs 规则列表: ipvs rule list

使用tcpdump监听nginx pod节点主机上的flannel.1网卡和docker0网卡,发现如下问题:

当我在 kubernetes master 主机上直接访问 pod IP 时,我的 master 主机上的 flannel 网卡会将数据包发送到节点主机 flannel NIC ,然后转发到 docker0 网卡,最后是 pod IP。同时pod IP会响应我的请求,一切正常。但是当我在kubernetes master主机上访问SVC IP时,发现发包的网卡变成了eth0而不是使用flannel网卡,所以node主机上的flannel网卡直接丢掉了请求,没有继续转发到码头工人0。

我意识到这可能是基于策略的路由的问题。如果我将目标为 10.254 的请求转发到正确的网关,我可以解决这个问题吗?

但这应该有一个更标准的解决方案。谁能帮我?

(对不起,我的英文不是很好……)</p>

4

2 回答 2

0

内核IP路由表

目标网关 Genmask 标志 Metric Ref Use Iface

0.0.0.0 10.125.232.1 0.0.0.0 UG 0 0 0 eth0

10.125.232.0 0.0.0.0 255.255.252.0 U 0 0 0 eth0

169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0

172.30.1.0 172.30.1.0 255.255.255.0 UG 0 0 0 法兰绒.1

172.30.3.0 172.30.3.0 255.255.255.0 UG 0 0 0 法兰绒.1

172.30.21.0 172.30.21.0 255.255.255.0 UG 0 0 0 法兰绒.1

172.30.81.0 172.30.81.0 255.255.255.0 UG 0 0 0 法兰绒.1

172.30.92.0 0.0.0.0 255.255.255.0 U 0 0 0 码头0

172.30.94.0 172.30.94.0 255.255.255.0 UG 0 0 0 法兰绒.1

这是我的路由表。

@白栋天</p>

于 2018-10-08T02:51:31.713 回答
0

您的 svc CIDR 似乎与主机 CIDR 有交集

于 2018-09-26T09:45:15.437 回答