我按照https://www.haproxy.com/documentation/hapee/1-9r1/traffic-management/kubernetes-ingress-controller/的教程设置了haproxy控制器(社区版)和应该访问的"Echo Server“应用程序。
当我运行curl -L -H 'Host: echo.example.com' localhost:30884时,我得到了所需的响应
Request served by app-58f7d69f54-p2kq8
HTTP/1.1 GET /
Host: echo.example.com
User-Agent: curl/7.61.1
Accept: */*
X-Forwarded-For: 10.42.0.0但是,如果我只使用curl -L echo.example.com:30884,我会得到响应default backend - 404,这样请求就会到达入口控制器,但是入口控制器不知道应该使用哪台主机。
运行kubectl get ing可以让我
eignungstest eignungstest.example.com 10.43.173.120 80 17h
kube-web-view dashboard.example.com 80 16h
web-ingress echo.example.com 80 16h似乎没有分配地址,但在主机eignungstest.example.com上运行上面相同的命令会得到相同的结果,所以这应该是没有关系的。
当我没有显式地指定主机报头时,是否有我遗漏的设置阻止它被传递?
发布于 2019-12-20 00:17:22
入口控制器和入口看起来正常。
正如您在kubectl响应中看到的,入口指向该服务的端口80,该端口将获取echo.example.com。
因此,它只知道echo.example.com的端口80,但当您尝试curl -L echo.example.com:30884时,它会检查该特定端口,并将所有流量路由到默认后端。
确保你可以直接curl -L echo.example.com,如果它不工作,检查服务,如果服务有类似的东西。
spec:
ports:
- port: 80
targetPort: 3001您可能也正确地完成了服务部分。希望这能有所帮助。
https://stackoverflow.com/questions/59413073
复制相似问题