Kubernetes HAProxy Ingress在没有显式设置主机头的情况下不起作用

问题描述 投票:0回答:1

我遵循了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一起运行上面的相同命令,我得到相同的结果,因此应该无关紧要。

是否缺少我没有明确指定的阻止传递主机头的设置?

kubernetes haproxy kubectl
1个回答
0
投票

Ingress控制器和Ingress看起来不错。

您可以在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

您可能也已经正确完成了服务部分。希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.