使用 Nginx Ingress 的 GKE 上的静态全局 IP?
Static global IP on GKE using Nginx Ingress?
我正在尝试在我的 GKE 集群中设置一个 nginx 入口控制器,我想使用一个静态的全局 IP 地址,但我正在努力弄清楚如何。
经过大量研究,大多数 guides/Whosebug/blogs 只是说 "use the kubernetes.io/ingress.global-static-ip-name
annotation on your ingress resource" 然而这并没有任何作用。
下面是我的 Ingress 资源的示例
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
namespace: my-namespace
annotations:
kubernetes.io/tls-acme: "true"
kubernetes.io/ingress.class: "nginx"
kubernetes.io/ingress.allow-http: "false"
nginx.org/websocket-services: "ws-svc"
kubernetes.io/ingress.global-static-ip-name: my-global-gce-ip
spec:
tls:
- secretName: my-secret
hosts:
- mysite.com
rules:
- host: mysite.com
http:
paths:
- path: /
backend:
serviceName: web
servicePort: 80
该服务总是获得一个临时 IP 地址,每当我重新创建控制器时,它就会被丢弃。
我怀疑手头的问题是注释仅适用于 GCE 类型的 Ingress,不适用于 nginx(即使没有说明)
接下来,我尝试在入口资源中手动设置 IP,如此 guide 所示,但是当我查看创建的服务时,外部 IP 地址仅显示为 pending
,其中一些 github 问题似乎指向是因为它是全球 IP 而不是区域 IP。
考虑到所有这些,有没有办法在 GKE 集群上使用 静态 global ip =]nginx 入口控制器?
您必须在 nginx 入口控制器中将静态 IP 设置为 loadBalancerIP
,而不是在入口资源中(如您所做的那样)。根据文档,Load Balancer IP 是分配给负载均衡器的 IP 地址(如果支持)。
https://github.com/helm/charts/tree/master/stable/nginx-ingress
spec:
...
externalTrafficPolicy: Cluster
loadBalancerIP: [your static IP]
sessionAffinity: None
type: LoadBalancer
并确保您的 IP 是区域性的而不是全球性的。只有 GCP 负载均衡器(GCP 内置入口控制器)支持全局 IP。
我正在尝试在我的 GKE 集群中设置一个 nginx 入口控制器,我想使用一个静态的全局 IP 地址,但我正在努力弄清楚如何。
经过大量研究,大多数 guides/Whosebug/blogs 只是说 "use the kubernetes.io/ingress.global-static-ip-name
annotation on your ingress resource" 然而这并没有任何作用。
下面是我的 Ingress 资源的示例
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
namespace: my-namespace
annotations:
kubernetes.io/tls-acme: "true"
kubernetes.io/ingress.class: "nginx"
kubernetes.io/ingress.allow-http: "false"
nginx.org/websocket-services: "ws-svc"
kubernetes.io/ingress.global-static-ip-name: my-global-gce-ip
spec:
tls:
- secretName: my-secret
hosts:
- mysite.com
rules:
- host: mysite.com
http:
paths:
- path: /
backend:
serviceName: web
servicePort: 80
该服务总是获得一个临时 IP 地址,每当我重新创建控制器时,它就会被丢弃。 我怀疑手头的问题是注释仅适用于 GCE 类型的 Ingress,不适用于 nginx(即使没有说明)
接下来,我尝试在入口资源中手动设置 IP,如此 guide 所示,但是当我查看创建的服务时,外部 IP 地址仅显示为 pending
,其中一些 github 问题似乎指向是因为它是全球 IP 而不是区域 IP。
考虑到所有这些,有没有办法在 GKE 集群上使用 静态 global ip =]nginx 入口控制器?
您必须在 nginx 入口控制器中将静态 IP 设置为 loadBalancerIP
,而不是在入口资源中(如您所做的那样)。根据文档,Load Balancer IP 是分配给负载均衡器的 IP 地址(如果支持)。
https://github.com/helm/charts/tree/master/stable/nginx-ingress
spec:
...
externalTrafficPolicy: Cluster
loadBalancerIP: [your static IP]
sessionAffinity: None
type: LoadBalancer
并确保您的 IP 是区域性的而不是全球性的。只有 GCP 负载均衡器(GCP 内置入口控制器)支持全局 IP。