繁体   English   中英

GKE 是否支持带有 static ip 的 nginx-ingress?

[英]Does GKE support nginx-ingress with static ip?

我一直在使用 Google Cloud Load Balancer ingress。 但是,我正在尝试在 GKE 中具有 Static IP 地址的节点中安装nginxinc/kube.netes-ingress controller。

  1. 我可以在同一个集群中使用 Google 的 Cloud Load Balancer ingress controller 吗?
  2. 我们如何将nginxinc/kube.netes-ingress与 static IP 一起使用?

谢谢

第一个问题

正如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云端平台,因此我可以为您提供有关Google中Kubernetes实施的更多详细信息。

考虑一下:

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

当然,您可以使用为您的入口资源寻址的静态IP, 有一个官方的步骤指南,向您展示如何使用Ingress创建HTTP负载平衡,使用入口资源并将其链接到静态IP或如何促进已经使用IP的“短暂”静态。

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

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

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

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

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

这表明这个入口是由nginx入口控制器提供的,并且仅由nginx入口控制器提供。

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

如果您使用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

创建一个 Static Ip

 gcloud compute addresses create my-ip --global

描述 Static Ip (这会让你知道 static IP )

gcloud compute addresses describe  ssl-ip --global

现在添加这些注释:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: "gce" # <----
    kubernetes.io/ingress.global-static-ip-name: my-ip # <----

应用入口

kubectl apply -f infress.yaml

(现在等待2分钟)运行这个到它会反映出新的ip

kubectl get ingress

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM