我有一组服务要作为入口负载平衡器公开。我之所以选择nginx作为入口,是因为能够将http强制为https重定向。
具有类似的入口配置
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: api-https
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: true
nginx.ingress.kubernetes.io/force-ssl-redirect: true
nginx.org/ssl-services: "api,spa"
kubernetes.io/ingress.class: nginx
spec:
tls:
- hosts:
- api.some.com
- www.some.com
secretName: secret
rules:
- host: api.some.com
http:
paths:
- path: /
backend:
serviceName: api
servicePort: 8080
- host: www.some.com
http:
paths:
- path: /
backend:
serviceName: spa
servicePort: 8081
gke创建了nginx入口负载均衡器,但也创建了另一个具有后端的负载均衡器,以及所有类似未选择nginx而是gcp作为入口的负载均衡器。
下面的屏幕截图以红色分别显示了我们的qa和prod env的两个意外的LB和蓝色的两个nginx入口LB。
来自kubectl get服务的输出
xyz@cloudshell:~ (xyz)$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
api NodePort 1.2.3.4 <none> 8080:32332/TCP,4433:31866/TCP 10d
nginx-ingress-controller LoadBalancer 1.2.6.9 12.13.14.15 80:32321/TCP,443:32514/TCP 2d
nginx-ingress-default-backend ClusterIP 1.2.7.10 <none> 80/TCP 2d
spa NodePort 1.2.8.11 <none> 8082:31847/TCP,4435:31116/TCP 6d
错误信息的gcp gke服务 View 的屏幕截图
这是预期的吗?
我是否错过任何配置以防止创建此额外的负载均衡器?
最佳答案
在GCP GKE上,默认情况下启用了gcp入口 Controller ,并且即使指定了.class,也将始终在任何入口定义中导致新的LB。
https://github.com/kubernetes/ingress-nginx/issues/3703
因此,要解决此问题,我们应该按照https://github.com/kubernetes/ingress-gce/blob/master/docs/faq/gce.md#how-do-i-disable-the-gce-ingress-controller所述从集群中删除gcp入口 Controller
关于nginx - gke nginx ingress创建额外的负载均衡器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54381678/