Kubernetes 为什么可以';我不能在GKE上的入口上附加一个服务类型集群吗?

Kubernetes 为什么可以';我不能在GKE上的入口上附加一个服务类型集群吗?,kubernetes,google-kubernetes-engine,kubernetes-ingress,Kubernetes,Google Kubernetes Engine,Kubernetes Ingress,在我开始之前,我想提一下,我是GKE的免费试用版。 我有一个运行在GKE集群中的简单服务器。我有一个用于公开服务器的服务。我正在尝试配置入口控制器并将其连接到此服务 如果我的服务是LoadBalancer、NodePort类型,那么一切都可以完美运行。但是,如果我的服务是ClusterIP类型,我会得到一个错误消息 error while evaluating the ingress spec: service "default/simple-server" is type "ClusterIP

在我开始之前,我想提一下,我是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/ingres.class:“nginx”
,但仍然不起作用。

本机GKE ingress控制器不支持
ClusterIP
,但它可以与
负载平衡器
节点端口
类型完美配合使用。看看这个


非本机入口控制器与
ClusterIP

配合使用。本机GKE入口控制器不支持
ClusterIP
,但它与
负载平衡器
节点端口
类型配合使用效果极佳。看看这个


非本机入口控制器与
ClusterIP

一起工作,这是正常的,产生错误的原因非常简单

ClusterIP服务是Kubernetes集群内部唯一的内部服务,您尝试创建的(根据我所了解的)是使用ingress公开的服务,这意味着您将创建一个Google负载平衡器

现在,它不支持ClusterIP的原因是,当您创建入口时,在google cloud中创建的LB资源需要在您的集群上调用一个目标端口,为此,您需要为其公开一个ip/端口

我不建议将LB服务(默认情况下创建一个LB on cloud provider)和ingress相结合,而是选择一个更干净的nodeport/ingress duo


额外好处:您使用的注释用于将入口链接到入口控制器的内部服务。这将允许入口控制器将主机和代理流量列出到正确的服务。

这是正常的,产生错误的原因很简单

ClusterIP服务是Kubernetes集群内部唯一的内部服务,您尝试创建的(根据我所了解的)是使用ingress公开的服务,这意味着您将创建一个Google负载平衡器

现在,它不支持ClusterIP的原因是,当您创建入口时,在google cloud中创建的LB资源需要在您的集群上调用一个目标端口,为此,您需要为其公开一个ip/端口

我不建议将LB服务(默认情况下创建一个LB on cloud provider)和ingress相结合,而是选择一个更干净的nodeport/ingress duo


额外好处:您使用的注释用于将入口链接到入口控制器的内部服务。这将允许入口控制器向正确的服务列出主机和代理流量。

我的意思是,拥有入口控制器的整个想法是过滤对我的服务器的访问。如果我必须以loadbalancer/nodeport的身份启动服务,我基本上是在为我的k8集群打开一个直接的无保护网关。我的意思是,拥有入口控制器的整个想法是过滤对我的服务器的访问。如果我必须以loadbalancer/nodeport的身份启动服务,那么我基本上是在为我的k8集群打开一个不受保护的直接网关。