Kubernetes版本:1.4.5
我有一个非常简单的服务 type: NodePort
. 它只返回 /info
上的一些文本 . 我使用默认的GKE入口控制器(L7 Google负载均衡器)和TLS . 如果我使用以下入口,一切都按预期工作:
工作入口
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: global-ingress
namespace: global
annotations:
kubernetes.io/ingress.allow-http: "false"
spec:
tls:
- secretName: tls-secret
backend:
serviceName: gate-front
servicePort: 80
curl -k https://130.211.39.140/info
POD: gate-front-1871107570-ue07p
IP: 10.0.2.26
REQ: /info
$ kubectl describe ing
Name: global-ingress
Namespace: global
Address: 130.211.39.140
Default backend: gate-front:80 (10.0.2.25:8080,10.0.2.26:8080)
TLS:
tls-secret terminates
Rules:
Host Path Backends
---- ---- --------
* * gate-front:80 (10.0.2.25:8080,10.0.2.26:8080)
Annotations:
backends: {"k8s-be-31966--f3f0bf21d171a625":"HEALTHY"}
https-forwarding-rule: k8s-fws-global-global-ingress--f3f0bf21d171a625
https-target-proxy: k8s-tps-global-global-ingress--f3f0bf21d171a625
url-map: k8s-um-global-global-ingress--f3f0bf21d171a625
破碎的入口
但是,如果我引入规则并省略默认后端,则所有请求都返回 default backend - 404
.
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: global-ingress
namespace: global
annotations:
kubernetes.io/ingress.allow-http: "false"
spec:
tls:
- secretName: tls-secret
rules:
- http:
paths:
- path: /gate
backend:
serviceName: gate-front
servicePort: 80
curl -k https://130.211.33.150/gate/info
default backend - 404
$ kubectl describe ing
Name: global-ingress
Namespace: global
Address: 130.211.33.150
Default backend: default-http-backend:80 (10.0.2.3:8080)
TLS:
tls-secret terminates
Rules:
Host Path Backends
---- ---- --------
*
/gate gate-front:80 (<none>)
Annotations:
https-forwarding-rule: k8s-fws-global-global2-ingress--f3f0bf21d171a625
https-target-proxy: k8s-tps-global-global2-ingress--f3f0bf21d171a625
url-map: k8s-um-global-global2-ingress--f3f0bf21d171a625
backends: {"k8s-be-31966--f3f0bf21d171a625":"HEALTHY","k8s-be-32552--f3f0bf21d171a625":"HEALTHY"}
如果我添加主机并使用 curl -k --resolve ...
,我会得到相同的行为 .
我浏览了以下文档和示例:
任何人都可以对此有所了解吗?
2 回答
https://github.com/kubernetes/ingress-gce/blob/master/README.md#paths
您是否可以查看此部分并评论是否可以解决问题:
我有一个类似的问题有不同的原因,如果你使用GCE只记得每个入口控制器获得一个新的IP .
我已将DNS指向我制作的第一个入口控制器,并且不知道新的入口控制器获得了新的IP . 来自错误主机的流量被发送到我的第一个入口控制器,因此404响应是正确的 .
通过使用kubectl检查入口控制器,确保正确指出DNS: