GKE是否支持静态IP的nginx-ingress?

时间:2018-02-13 09:49:22

标签: kubernetes google-cloud-platform google-kubernetes-engine kubernetes-ingress

我一直在使用Google Cloud入口。还部署了nginx-ingress并尝试在GKE中使用static-ip地址进行设置。

  • 我们可以在同一群集中同时使用Google Cloud ingress和nginx-ingress吗?
  • 我们如何使用nginx-ingress和static-ip?

由于

4 个答案:

答案 0 :(得分:3)

第一个问题

作为拉德克' Goblin' Pieczonka已经指出你有可能这样做。 我只想将您与official documentation关于此事项链接:

  

如果您在一个群集中有多个Ingress控制器,则可以   通过指定ingress.class注释来选择一个,例如创建一个   带有注释的Ingress,如

metadata:
  name: foo
  annotations:
    kubernetes.io/ingress.class: "gce"
  

将以GCE控制器为目标,强制nginx控制器忽略   它,而像

这样的注释
metadata:
  name: foo
  annotations:
    kubernetes.io/ingress.class: "nginx"

第二个问题

由于您正在使用Google云端平台,因此我可以为您提供有关Google中Kubernetes实施的更多详细信息。

考虑一下:

  

默认情况下,Kubernetes Engine会分配短暂的外部IP   通过Ingress公开的HTTP应用程序的地址。

但是,您当然可以使用为您的入口资源寻址的静态IP, there is an official step to step guide向您展示如何使用Ingress创建HTTP负载平衡,使用入口资源并将其链接到静态IP或如何提升"短暂的"已经在使用IP是静态的。

尝试通过它,如果你遇到一些问题,请更新问题并询问!

答案 1 :(得分:2)

对于nginx-ingress控制器,您必须在服务上设置外部IP:

spec:
  loadBalancerIP: "42.42.42.42"
  externalTrafficPolicy: "Local"

答案 2 :(得分:1)

在kubernetes中运行多个入口控制器是完全正常的,但是他们需要知道它们应该实例化哪些Ingress对象。这是通过特殊注释完成的,例如:

kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: "nginx"

表示此入口应由nginx入口控制器提供,并且仅由nginx入口控制器提供。

对于IP,Some cloud providers allow the loadBalancerIP to be specified.可以控制服务的公共IP。

答案 3 :(得分:0)

如果您使用掌舵来部署nginx-ingress。

首先创建一个静态IP地址。在Google中,网络负载平衡器(NLB)仅支持区域静态IP:

gcloud compute addresses create my-static-ip-address --region us-east4

然后使用IP地址作为loadBalancerIP参数安装nginx-helm

helm install --name nginx-ingress stable/nginx-ingress --namespace my-namespace --set controller.service.loadBalancerIP=35.186.172.1