首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有多个后端服务的GKE入侵返回404

带有多个后端服务的GKE入侵返回404
EN

Stack Overflow用户
提问于 2022-02-24 20:07:14
回答 1查看 510关注 0票数 3

我正在尝试创建一个GKE Ingress,它基于path指向两个不同的后端服务。我看过几篇文章解释了这一点,因为gke入口不支持重写目标,所以只能用nginx进入。然而,这个谷歌文档,GKE Ingresss -多个后端服务,似乎意味着并非如此。我遵循了医生的步骤,但没有取得任何成功。只返回/路径前缀上可用的服务。任何其他路径前缀,如/v2,都会返回一个404 Not。

下面是我设置的详细信息。这里是否有一个明显的错误--谷歌文档是否不正确,这只能使用nginx入口?

代码语言:javascript
复制
-- Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: app-static-ip
    networking.gke.io/managed-certificates: app-managed-cert
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: api-service
            port:
              number: 80
      - path: /v2
        pathType: Prefix
        backend:
          service:
            name: api-2-service
            port:
              number: 8080

-- Service 1
apiVersion: v1
kind: Service
metadata:
  name: api-service
  labels:
    app: api
spec:
  type: NodePort
  selector:
    app: api
  ports:
  - port: 80
    targetPort: 5000

-- Service 2
apiVersion: v1
kind: Service
metadata:
  name: api-2-service
  labels:
    app: api-2
spec:
  type: NodePort
  selector:
    app: api-2
  ports:
  - port: 8080
    targetPort: 5000
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-25 10:51:02

GCP大会支持多个路径。这在使用Ingress设置HTTP(S)负载平衡中也有很好的描述。在我的测试中,我使用了v1和v2。

有三个可能的问题。

  • 问题是集装箱港口的开放。您可以使用netstat检查它:
代码语言:javascript
复制
$ kk exec -ti first-55bb869fb8-76nvq -c container -- bin/sh
/ # netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 :::8080                 :::*                    LISTEN      1/hello-app
  • Firewall配置也可能导致问题。确保你有适当的设置。(通常,在新集群中,我不需要添加任何内容,但是如果您有更多的东西,并且有特定的防火墙配置,它可能会阻塞)。
  • portcontainerPorttargetPort之间的错误配置。

下面是我的例子:

第一次部署与

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: first
  labels:
    app: api
spec:
  selector:
    matchLabels:
      app: api
  template:
    metadata:
      labels:
        app: api
    spec:
      containers:
        - name: container
          image: gcr.io/google-samples/hello-app:1.0
          ports:
          - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: api-service
  labels:
    app: api
spec:
  type: NodePort
  selector:
    app: api
  ports:
  - port: 5000
    targetPort: 8080

第二部署

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: second
  labels:
    app: api-2
spec:
  selector:
    matchLabels:
      app: api-2
  template:
    metadata:
      labels:
        app: api-2
    spec:
      containers:
        - name: container
          image: gcr.io/google-samples/hello-app:2.0
          ports:
          - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: api-2-service
  labels:
    app: api-2
spec:
  type: NodePort
  selector:
    app: api-2
  ports:
  - port: 6000
    targetPort: 8080

攻入

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app-ingress
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: api-service
            port:
              number: 5000
      - path: /v2
        pathType: Prefix
        backend:
          service:
            name: api-2-service
            port:
              number: 6000

输出

代码语言:javascript
复制
$ curl 35.190.XX.249
Hello, world!
Version: 1.0.0
Hostname: first-55bb869fb8-76nvq
$ curl 35.190.XX.249/v2
Hello, world!
Version: 2.0.0
Hostname: second-d7d87c6d8-zv9jr

请记住,通过添加特定的注释,您也可以在GKE上使用Nginx Ingress

代码语言:javascript
复制
kubernetes.io/ingress.class: "nginx" 

人们在GKE上使用GKE的主要原因是使用rewrite注释,以及使用ClusterIPNodePort作为serviceType的可能性,而GCP ingress只允许使用NodePort serviceType。

用于HTTP(S)负载平衡的GKE规范中可以找到其他信息

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71257667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档