Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gke nginx入口创建额外的负载平衡器_Nginx_Kubernetes_Kubernetes Ingress_Google Kubernetes Engine_Nginx Ingress - Fatal编程技术网

gke nginx入口创建额外的负载平衡器

gke nginx入口创建额外的负载平衡器,nginx,kubernetes,kubernetes-ingress,google-kubernetes-engine,nginx-ingress,Nginx,Kubernetes,Kubernetes Ingress,Google Kubernetes Engine,Nginx Ingress,我有一组服务要公开为入口负载平衡器。我选择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-redirec

我有一组服务要公开为入口负载平衡器。我选择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 ingress负载平衡器,但也创建了另一个负载平衡器,它具有后端和所有类似的功能,如如果没有选择nginx,而是选择gcp作为ingress

下面的屏幕截图分别以红色和蓝色显示了我们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
xyz@cloudshell:~(xyz)$kubectl获得服务
名称类型CLUSTER-IP外部IP端口年龄
api节点端口1.2.3.4 8080:32332/TCP,4433:31866/TCP 10d
nginx入口控制器负载平衡器1.2.6.9 12.13.14.15 80:32321/TCP,443:32514/TCP 2d
nginx入口默认后端群集IP 1.2.7.10 80/TCP 2d
spa节点端口1.2.8.118082:31847/TCP,4435:31116/TCP 6d
gcp gke服务视图中输入错误信息的屏幕截图

这是预期的吗


我是否错过了阻止创建此额外负载平衡器的任何配置?

在GKE群集上创建部署时,有两种可能会公开它:

  • 将服务与类型LoadBalancer一起使用并公开它-这将 创建TCP负载平衡器
  • 将服务创建为节点端口或群集 IP并将其公开为-这将创建HTTP负载平衡器
  • 如果您可以在负载平衡器中看到它们,这意味着您可能已经创建了一个服务类型的负载平衡器,然后将其公开为入口。您正在打开相同的部署,以便通过服务和入口从两个不同的IP进行访问。要确认此操作,请尝试:

    $ kubectl get ingress
    $ kubectl get svc
    
    您将从这两个命令中获得两个IP,它们都将显示相同的页面

    更好的配置方法是使用服务类型,并将该服务公开为入口。这尤其有用,因为您可以使用相同的入口来公开更多的服务


    通过这种方式,您可以节省暴露的IP数量(并通过不使用多个负载平衡器来节省资金)。

    在GCP GKE上,默认情况下,GCP入口控制器已启用,并且在任何入口定义中,即使指定了.class,也始终会导致新的LB


    因此,为了解决这个问题,我们应该从集群中删除gcp ingress controller,如

    中所述。您是否可以提供一些输出来说明您对附加负载平衡器的看法?您在哪里看到它?添加了@RyanDawson如果您在另一个命名空间中有LoadBalancer服务,是否可以包含“kubectl get services”或“kubectl get services--所有命名空间”的输出。添加了@RyanDawson