我一直在使用 Google Cloud Load Balancer 入口。但是,我正在尝试nginxinc/kubernetes-ingress
在 GKE 中具有静态 IP 地址的节点中安装控制器。
- 我可以在同一个集群中使用 Google 的 Cloud Load Balancer 入口控制器吗?
- 我们如何使用
nginxinc/kubernetes-ingress
静态IP?
谢谢
我一直在使用 Google Cloud Load Balancer 入口。但是,我正在尝试nginxinc/kubernetes-ingress
在 GKE 中具有静态 IP 地址的节点中安装控制器。
nginxinc/kubernetes-ingress
静态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
正如 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 提升为静态。
尝试通过它,如果您遇到一些问题,请更新问题并提出!
对于 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。