Iul*_*ian 9 kubernetes google-kubernetes-engine
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
Run Code Online (Sandbox Code Playgroud)
curl -k https://130.211.39.140/info
POD: gate-front-1871107570-ue07p
IP: 10.0.2.26
REQ: /info
Run Code Online (Sandbox Code Playgroud)
$ 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
Run Code Online (Sandbox Code Playgroud)
但是,如果我引入规则并省略默认后端,则所有请求都会返回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
Run Code Online (Sandbox Code Playgroud)
curl -k https://130.211.33.150/gate/info
default backend - 404
Run Code Online (Sandbox Code Playgroud)
$ 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"}
Run Code Online (Sandbox Code Playgroud)
如果我添加主机并使用curl -k --resolve ...我得到相同的行为.
我浏览了以下文档和示例:
任何人都可以对此有所了解吗?
https://github.com/kubernetes/ingress-gce/blob/master/README.md#paths
您能看一下这部分并评论它是否解决了问题:
请注意刚刚发生的情况,端点公开 /hostname,并且负载均衡器将整个匹配的 url 转发到端点。这意味着如果您在 Ingress 中有“/foo”并尝试访问 /hostname,您的端点将收到 /foo/hostname 并且不知道如何路由它。现在更新 Ingress 以通过 /fs 端点访问静态内容:
| 归档时间: |
|
| 查看次数: |
3208 次 |
| 最近记录: |