Kubernetes nginx ingress未解析服务
云:谷歌云平台 我有以下配置Kubernetes nginx ingress未解析服务,nginx,kubernetes,google-cloud-platform,Nginx,Kubernetes,Google Cloud Platform,云:谷歌云平台 我有以下配置 kind: Deployment apiVersion: apps/v1 metadata: name: api spec: replicas: 2 selector: matchLabels: run: api template: metadata: labels: run: api spec: containers: - name: api i
kind: Deployment
apiVersion: apps/v1
metadata:
name: api
spec:
replicas: 2
selector:
matchLabels:
run: api
template:
metadata:
labels:
run: api
spec:
containers:
- name: api
image: gcr.io/*************/api
ports:
- containerPort: 8080
livenessProbe:
httpGet:
path: /_ah/health
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
---
kind: Service
apiVersion: v1
metadata:
name: api
spec:
selector:
run: api
type: NodePort
ports:
- protocol: TCP
port: 8080
targetPort: 8080
---
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: main-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- http:
paths:
- path: /api/*
backend:
serviceName: api
servicePort: 8080
一切就绪。GKE表示,所有部署都正常,pods数量已满足要求,并且设置了带有nginx入口控制器的主入口。但我无法联系到任何服务。甚至是特定于应用程序的404。没有什么。就像,它根本没有解决
我看到的另一个相关问题是入口点。第一个通过主入口。它用自己的IP地址创建了自己的负载平衡器。来自nginx入口控制器的第二个地址。第二个至少从默认后端返回404,但也不指向预期的api服务
请注意,
path:
不是一个glob,它是一个regex:意思是/api/*
将匹配/api/////code>,但不是/api/做事情,如果你卷曲到api
的节点端口(屏幕截图第一行的:8080?)1。这里有人说,这只是一个通配符模式匹配。还有使用相同方法的示例。@MatthewLDaniel,我不能卷曲api服务,因为NodePort位于集群网络中,并且没有公开;但可以肯定的是,nginx入口控制器使用的是不区分大小写的(!)正则表达式匹配