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入口控制器使用的是不区分大小写的(!)正则表达式匹配