Ingress 是否与 ClusterIP 服务一起使用?

Is Ingress working with ClusterIP services?

我已经设置了一些服务和入口来尝试 SSL 终止。我对 LoadBalancerNodePort 服务作为后端没有任何问题,但它对 ClusterIP 服务根本不起作用。

虽然 Ingress 的后端被描述为健康,但我收到了一个 HTTP 错误,该错误不是来自我的应用程序。

$ kubectl describe ing nginx-cluster-ssl-ingress
Name:           nginx-cluster-ssl-ingress
Namespace:      default
Address:        X.X.X.X
Default backend:    nginx-cluster-svc:80 (...)
TLS:
  ssl-certificate terminates
Rules:
  Host  Path    Backends
  ----  ----    --------
Annotations:
  https-target-proxy:       k8s-tps-default-nginx-cluster-ssl-ingress
  static-ip:            k8s-fw-default-nginx-cluster-ssl-ingress
  target-proxy:         k8s-tp-default-nginx-cluster-ssl-ingress
  url-map:          k8s-um-default-nginx-cluster-ssl-ingress
  backends:         {"k8s-be-30825":"HEALTHY"}
  forwarding-rule:      k8s-fw-default-nginx-cluster-ssl-ingress
  https-forwarding-rule:    k8s-fws-default-nginx-cluster-ssl-ingress
Events:
  FirstSeen LastSeen    Count   From                SubobjectPath   Type        Reason  Message
  --------- --------    -----   ----                -------------   --------    ------  -------
  28m       28m     1   {loadbalancer-controller }          Normal      ADD default/nginx-cluster-ssl-ingress
  27m       27m     1   {loadbalancer-controller }          Normal      CREATE  ip: X.X.X.X

HTTP 错误如下:

$ curl http://X.X.X.X/
default backend - 404%

我的问题很简单:它应该与 ClusterIP 服务一起使用吗?如果它应该或多或少地写在文档中,我应该看看哪里可以解决这个问题?

谢谢!

The native GKE Ingress controller do not support ClusterIP, only NodePort is working.

非本机 Ingress 控制器(例如 nginx)可以使用 ClusterIP 服务。

GKE 上的

Nginx ingress controller 使用 ClusterIp。但是原生 GKE ingress controller 并不像@samuel-roze

提到的那样

所以像这样使用 Nginx 入口:

kubernetes.io/ingress.class: nginx

如果您正在使用 GKE 集群并且您使用 容器原生负载平衡(通过添加 cloud.google.com/neg: '{"ingress": true}' 注释在你的 ClusterIP 服务中),然后你的 GKE/GCE 入口可以直接与 ClusterIP 服务对话,而不需要它是 NodePort服务。

参考:https://cloud.google.com/kubernetes-engine/docs/concepts/ingress#:~:text=unless%20you%27re%20using%20container%20native%20load%20balancing


如果一组条件为真,GKE 会自动添加 cloud.google.com/neg: '{"ingress": true}' 注释。然后你不需要手动添加这个注解来获得容器原生的负载平衡。否则,您将需要添加此注释以获得容器原生负载平衡;然后使您的入口能够直接与 ClusterIP 服务对话。

参考:https://cloud.google.com/kubernetes-engine/docs/concepts/ingress#:~:text=In%20these%20conditions%2C%20Services%20will%20be%20annotated%20automatically