kubernetes - GKE 入口资源无法正常工作。收到 404 错误
问题描述
我创建了入口资源,但它不起作用。请注意 - 我没有使用 gke 默认部署入口控制器(这是在托管 gke 中部署入口控制器的强制性要求)
我已经分别创建了两个nginx部署和nodeport服务这里是kubectl get all
NAME READY STATUS RESTARTS AGE
pod/app1-57df48bcd9-d48l9 1/1 Running 0 69m
pod/app2-8478484c64-khn5w 1/1 Running 0 69m
pod/test-d4df74fc9-kkzjd 1/1 Running 0 42m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/app1 NodePort 10.121.13.120 <none> 8080:32252/TCP 67m
service/app2 NodePort 10.121.15.112 <none> 80:31412/TCP 58m
service/kubernetes ClusterIP 10.121.0.1 <none> 443/TCP 79m
service/test NodePort 10.121.13.108 <none> 6060:32493/TCP 42m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/app1 1/1 1 1 69m
deployment.apps/app2 1/1 1 1 69m
deployment.apps/test 1/1 1 1 42m
NAME DESIRED CURRENT READY AGE
replicaset.apps/app1-57df48bcd9 1 1 1 69m
replicaset.apps/app2-8478484c64 1 1 1 69m
replicaset.apps/test-d4df74fc9 1 1 1 42m
==========================
并按照以下 yaml 部署入口资源
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: connection
spec:
rules:
- http:
paths:
- path: /app1
backend:
serviceName: app1
servicePort: 8080
- path: /app2
backend:
serviceName: app2
servicePort: 80
入口描述
Name: connection
Namespace: default
Address: xxxxxxxxxxxxx
Default backend: default-http-backend:80 (10.56.0.9:8080)
Rules:
Host Path Backends
---- ---- --------
*
/ app1:8080 (10.56.2.4:80)
/app2 app2:80 (10.56.1.4:80)
Annotations: ingress.kubernetes.io/backends:
{"k8s-be-31412--b52155807170af3c":"HEALTHY","k8s-be-32252--b52155807170af3c":"HEALTHY","k8s-be-32504--b52155807170af3c":"HEALTHY"}
ingress.kubernetes.io/forwarding-rule: k8s-fw-default-connection--b52155807170af3c
ingress.kubernetes.io/rewrite-target: /
ingress.kubernetes.io/target-proxy: k8s-tp-default-connection--b52155807170af3c
ingress.kubernetes.io/url-map: k8s-um-default-connection--b52155807170af3c
ingress.kubernetes.io/use-regex: true
kubernetes.io/ingress.class: gce
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ADD 58m loadbalancer-controller default/connection
Normal CREATE 57m loadbalancer-controller ip: xxxxxxxxxx
当我尝试访问http://ingresLBip/app1
或http://ingessLBip/app2
收到 404 not found 错误时
如果我使用单个后端配置 ingres 资源,那么它适用于单个服务。
有人在gke上遇到这个问题吗?我还需要安装 nginx 控制器吗?
解决方案
我假设您的应用程序正在侦听而/
不是路径。这可以解释为什么单个后端可以工作。控制器似乎有一个限制,它不支持注释。如果该线程是最新的,那么要么您必须更新应用程序以使用路径,否则您将不得不放弃并使用./app1
/app2
gce-ingress
rewrite-target
gce-ingress
nginx-ingress
推荐阅读
- git - 远程:在 mac 终端中找不到存储库错误
- c# - 使用 Autofac 创建/解析对象列表
- python - 使用 Pandas 的多处理来读取、修改和写入数千个 csv 文件
- python - 根据条件自定义Django wrt中的下拉字段
- svelte - 如何在 Svelte 中单击一个组件中的按钮并触发另一个组件中的事件?
- javascript - 如何创建反应选择数组?
- javascript - 从本地 .txt 文件中读取数据并将其存储在变量中
- python - UnicodeDecodeError:“charmap”编解码器无法解码位置 49 中的字节 0x81:用于文本
- numpy - 当我尝试训练 Keras CNN 模型时,它会引发内存问题
- magento - 使用资源模型和块类将数据插入自定义表