我正在尝试通过将 ingress
对象与我们的GKE集群一起在GCP上自动配置负载均衡器 .
我有三个GKE部署,每个部署都有一个服务端口 8080
,具有唯一的nodePort .
使用 ingress-fanout.yaml
时,它会创建4个后端服务,而不是yaml中指定的3个后端服务 . 第4个服务默认为所有不匹配的路由 . 我假设第四个服务是因为我们不匹配yaml中未映射的路由 .
如何将不匹配的路由映射到其中一个服务?那可能吗?
这是 ingress-fanout.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: fanout-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: "our-static-ip"
ingress.gcp.kubernetes.io/pre-shared-cert: "our-ssl-cert"
kubernetes.io/ingress.allow-http: "false"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
spec:
rules:
- host: our-website.com
http:
paths:
- path: /*
backend:
serviceName: li-frontend
servicePort: 8080
- path: /backend/*
backend:
serviceName: li-django
servicePort: 8080
- path: /notifications/*
backend:
serviceName: li-notifications
servicePort: 8080
Update: 我删除了许多原始问题并缩小了问题的范围 . 当 Health 检查开始成功时,这清除了旧问题 .
1 回答
首先,“后端”与您指定的“路径”无关 . GCP控制台上的“后端”指向您的GKE节点池 .
Ingress支持添加默认后端 . 您本可以尝试搜索"ingress default backend" . 你可以在这里找到关于这方面的文件:https://kubernetes.io/docs/concepts/services-networking/ingress/#single-service-ingress
基本上这样做会在没有其他匹配时设置默认后端: