13

我一直在使用 Google Cloud Load Balancer 入口。但是,我正在尝试nginxinc/kubernetes-ingress在 GKE 中具有静态 IP 地址的节点中安装控制器。

  1. 我可以在同一个集群中使用 Google 的 Cloud Load Balancer 入口控制器吗?
  2. 我们如何使用nginxinc/kubernetes-ingress静态IP?

谢谢

4

4 回答 4

12

如果您使用 helm 部署 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
于 2019-07-24T22:05:24.407 回答
5

第一个问题

正如 Radek 'Goblin' Pieczonka 已经指出的那样,这样做是可能的。我只是想将您链接到有关此问题的官方文档:

如果您在单个集群中有多个 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 Cloud Platform,因此我可以为您提供有关在 Google 中实现 Kubernetes 的更多详细信息。

考虑一下:

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

但是,当然您可以为您的入口资源使用静态 IP 地址, 有一个官方的分步指南向您展示如何使用入口资源创建 HTTP 负载平衡并链接到静态 IP 或如何将已在使用的“临时”IP 提升为静态。

尝试通过它,如果您遇到一些问题,请更新问题并提出!

于 2018-02-13T16:03:17.920 回答
4

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

spec:
  loadBalancerIP: "42.42.42.42"
  externalTrafficPolicy: "Local"
于 2018-02-13T17:01:44.637 回答
0

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

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

这表明这个入口预计将由 nginx 入口控制器提供,并且只能由 nginx 入口控制器提供。

至于IP,Some cloud providers allow the loadBalancerIP to be specified.通过它你可以控制一个服务的公共IP。

于 2018-02-13T12:15:28.430 回答