为什么我不能将服务类型 ClusterIP 附加到 GKE 上的 Ingress?
Why can't I attach a service type ClusterIP to Ingress on GKE?
在开始之前,我想说明一下,我使用的是 GKE 的免费试用版。
我在 GKE 集群中有一个简单的服务器 运行。我有一个用于公开服务器的服务。我正在尝试配置入口控制器并将其附加到此服务。
如果我的服务类型为 LoadBalancer、NodePort,则一切正常。但是,如果我的服务是 ClusterIP 类型,我会收到一条错误消息
error while evaluating the ingress spec: service "default/simple-server" is type "ClusterIP"
, expected "NodePort" or "LoadBalancer"
GKE 然后停止尝试为入口提供 IP。为什么我不能提供 clusterIP 类型的服务,有解决办法吗?
我试过 annotations.kubernetes.io/ingress.class: "nginx"
但还是不行。
原生 GKE 入口控制器不支持 ClusterIP
,但它与 LoadBalancer
和 NodePort
类型完美配合。看看这个issue
非本地入口控制器 Nginx 与 ClusterIP
一起工作。
这很正常,出现错误的原因也很简单。
ClusterIP 服务是 Kubernetes 集群内部的唯一服务,而您尝试创建的(据我所知)是使用入口的公开服务,这意味着您将创建一个 Google 负载均衡器。
现在它不支持 ClusterIP 的原因是因为当你创建入口时,在 google 云中创建的 LB 资源需要你的集群上的一个目标端口来调用为此你需要公开一个ip/port。
我不建议结合 LB 服务(默认情况下在云提供商上创建 LB)和入口,但保持 nodeport/ingress 更清洁的二重奏。
奖励:您使用的注解用于内部服务,入口链接到您的入口控制器。这将允许入口控制器列出主机和代理流量到正确的服务。
您可以通过设置注解使用Ingress
访问GKE中的ClusterIP
cloud.google.com/neg: '{"ingress": true}'
到服务。
apiVersion: v1
kind: Service
metadata:
name: myapp
annotations:
cloud.google.com/neg: '{"ingress": true}'
...
另见答案 in the related question
在开始之前,我想说明一下,我使用的是 GKE 的免费试用版。 我在 GKE 集群中有一个简单的服务器 运行。我有一个用于公开服务器的服务。我正在尝试配置入口控制器并将其附加到此服务。
如果我的服务类型为 LoadBalancer、NodePort,则一切正常。但是,如果我的服务是 ClusterIP 类型,我会收到一条错误消息
error while evaluating the ingress spec: service "default/simple-server" is type "ClusterIP"
, expected "NodePort" or "LoadBalancer"
GKE 然后停止尝试为入口提供 IP。为什么我不能提供 clusterIP 类型的服务,有解决办法吗?
我试过 annotations.kubernetes.io/ingress.class: "nginx"
但还是不行。
原生 GKE 入口控制器不支持 ClusterIP
,但它与 LoadBalancer
和 NodePort
类型完美配合。看看这个issue
非本地入口控制器 Nginx 与 ClusterIP
一起工作。
这很正常,出现错误的原因也很简单。
ClusterIP 服务是 Kubernetes 集群内部的唯一服务,而您尝试创建的(据我所知)是使用入口的公开服务,这意味着您将创建一个 Google 负载均衡器。
现在它不支持 ClusterIP 的原因是因为当你创建入口时,在 google 云中创建的 LB 资源需要你的集群上的一个目标端口来调用为此你需要公开一个ip/port。
我不建议结合 LB 服务(默认情况下在云提供商上创建 LB)和入口,但保持 nodeport/ingress 更清洁的二重奏。
奖励:您使用的注解用于内部服务,入口链接到您的入口控制器。这将允许入口控制器列出主机和代理流量到正确的服务。
您可以通过设置注解使用Ingress
访问GKE中的ClusterIP
cloud.google.com/neg: '{"ingress": true}'
到服务。
apiVersion: v1
kind: Service
metadata:
name: myapp
annotations:
cloud.google.com/neg: '{"ingress": true}'
...
另见答案