在kubernetes集群中,主机无法访问SVC IP

时间:2018-09-26 05:35:58

标签: kubernetes kube-proxy

这是我的集群环境:

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主服务器正常访问SVC IP。 在主主机上,我已经部署了kube-proxy和法兰绒。

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


我已经正常部署了群集,并且在大多数情况下,它可以在外部提供服务。 我已经部署了一个nginx服务器,我的屏幕截图:

nginx server

Service IP: 10.254.126.228
Pod IP: 172.30.21.3

当我直接在kubernetes主主机上访问Pod IP(172.30.21.3)时,就可以正常访问它。

我的屏幕截图: http request

但是当我访问服务IP时,会发生访问超时。

我的屏幕截图: Access SVC IP time out

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

我的屏幕截图: in the container http request

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

我使用tcpdump监听了nginx Pod节点主机上的法兰绒.1 NIC和docker0 NIC,发现了以下问题:

当我直接在kubernetes主主机上访问Pod IP时,我的主主机上的法兰NIC会将数据包发送到节点主机法兰NIC,然后将其转发到docker0 NIC,最后转发到Pod IP。同时,pod IP将响应我的请求,一切正常。 但是,当我在kubernetes主主机上访问SVC IP时,我发现发送数据包的NIC更改为eth0而不是使用法兰绒NIC,因此节点主机上的法兰绒NIC直接丢弃了请求,并且没有继续转发到docker0。

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

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

(对不起,我的英语不太好...)

2 个答案:

答案 0 :(得分:0)

您的svc CIDR似乎与主机CIDR相交

答案 1 :(得分:0)

内核IP路由表

目标网关Genmask标志度量标准引用使用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 docker0

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

这是我的路由表。

@白栋天