我按照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
上运行与上面相同的命令,我得到的结果相同,因此应该无关紧要。
有没有我没有明确指定的阻止主机头传递的设置?
答案 0 :(得分:2)
入口控制器和入口看起来不错。
正如您在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
您可能已经正确完成了服务部分。希望这会有所帮助。