我正在GKE集群上工作。我有一个运行的简单服务器。服务器上有三条路由。
route 1 - /
route 2 - /ping
route 3 - /health
这些路径返回200条响应,其中包含通用但不同的“确定”消息。
这就是我的入口Yaml的样子-
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: basic-ingress
spec:
tls:
- hosts:
- www.simple.com
secretName: simple-server-tls
rules:
- host: www.simple.com
http:
paths:
- path: /ping
backend:
serviceName: simple-server
servicePort: 8080
我将服务器暴露为负载平衡器。我可以使用loadbalancer作为
https://<loadbalancer_ip>:8080/
https://<loadbalancer_ip>:8080/ping
https://<loadbalancer_ip>:8080/health
但是,当尝试使用入口时,我在https://www.simple.com/ping
上仅收到200条响应
其他两条路线,即https://www.simple.com/health
和https://www.simple.com/
返回default backend - 404 error
。
我可以确认服务器正在运行并且可以完美地处理请求,并且我已经为入口分配了足够的时间(最多30分钟)以完成设置。 https://www.simple.com/healthz returns "OK"
。
我认为我在正确配置入口方面犯了一个错误。任何帮助/建议表示赞赏。
我无法提供入口日志,因为我注意到kubectl describe ingress/basic-ingress
返回错误Error from server (NotFound): the server could not find the requested resource
,但是,kubectl get ingress返回basic-ingress www.simple.com <ingress_ip> 80, 443 31m
答案 0 :(得分:0)
找出问题所在。您需要在路径中添加通配符。我的路径中只有/
,因此它拒绝了我所有其他网址(读取抛出404错误)。我添加了/*
,并删除了the rewrite-target annotation
,因为@bserdar正确建议了,它可以工作。链接到github上的问题很有帮助-https://github.com/kubernetes/ingress-nginx/issues/1120