当前位置: 首页 > 知识库问答 >
问题:

为什么我不能将服务类型ClusterIP附加到GKE上的入口?

韦安顺
2023-03-14

在我开始之前,我想提一下,我正在使用GKE的免费试用版。我有一个在GKE集群中运行的简单服务器。我有一个用于公开服务器的服务。我正在尝试配置入口控制器并将其连接到此服务。

如果我的服务是LoadBalancer、NodePort类型,那么一切都会完美工作。但是,如果我的服务是ClusterIP类型,则会出现以下错误

error while evaluating the ingress spec: service "default/simple-server" is type "ClusterIP"
, expected "NodePort" or "LoadBalancer" 

然后,GKE停止尝试为入口配置IP。为什么我不能配置集群IP类型的服务,是否有解决办法?

我尝试使用注释。库伯内特斯。io/入口。类:“nginx”,但它仍然不起作用。

共有3个答案

吴星汉
2023-03-14

您可以通过将注解cloud.google.com/neg:'{"ingress": true}'设置为服务,使用Inrit访问GKE中的ClusterIP

apiVersion: v1
kind: Service
metadata:
  name: myapp
  annotations:
    cloud.google.com/neg: '{"ingress": true}'
...

另请参阅相关问题中的答案https://stackoverflow.com/a/68271142为什么Google Cloud在使用ClusterIP时显示错误

南宫海超
2023-03-14

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

非本机入口控制器Nginx适用于ClusterIP

丌官皓君
2023-03-14

这很正常,很简单,为什么会出现错误。

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

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

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

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

 类似资料:
  • 我正在使用Netbeans在我的php服务器上工作。当我尝试上传我的项目时,没有错误,但文件在服务器上保持不变。 示例:我在css中将高度从10%改为7%并上传。没有错误发生,但高度在现场保持不变。 220 ProFTPD 1.3.5服务器(Debian)[::FFFF:###.###.##.#####] 用户####### #######需要331密码 230用户#######登录 I型 200

  • 问题内容: 我对git和詹金斯都很陌生。 我将密钥添加到bitbucket和本地计算机中时: 我可以克隆。 但是,当我将相同的url()添加到Jenkins存储库url时,出现以下错误: 问题答案: 您还需要为Jenkins用户设置ssh密钥。 通常的想法是,您登录到Jenkins框,并成为“ jenkins”用户。您可以为您的Jenkins用户打电话,所以请确保使用正确的名称。一旦成为Jenki

  • 1-我正在阅读文档,我对措辞有点困惑。上面写着: 集群IP:在集群内部IP上公开服务。选择此值将使服务只能从集群内访问。这是默认的ServiceType NodePort:在每个节点的IP上的一个静态端口(NodePort)上公开服务。节点端口服务将路由到的集群IP服务将自动创建。您可以通过请求从集群外部联系NodePort服务。 LoadBalancer:使用云提供商的负载均衡器对外公开服务。外

  • 所以大约一周前,我决定学习编写minecraft插件,所以我试着按照下面的指南去做: 我把我的测试插件加载到我pc上的Spigot1.12服务器上,我得到了很多错误:

  • 我正在使用入口从库伯内特斯集群外部公开我的服务,因此我不需要库伯内特斯来配置负载均衡器。因此,我创建了一个ClusterIP服务: 这很有效-我有一个单独的入口和部署设置,我可以很好地访问该应用程序。 然而,Kubernetes坚持无论如何都要尝试创建负载平衡器。因为它在我的AWS帐户中没有这样做的权限,所以我创建的每个服务都会记录如下错误: 我假设它试图描述BeloadBalancers,因为它

  • 我制作了一个FTP客户端(被动),它无法连接到服务器。我使用的FTP服务器是Filezilla;我只是用它来测试。每次我运行java程序(FTP客户端)时,Filezilla都会断开连接,并在Eclipse中出现以下错误: 这是FTP客户端: 这是我连接的程序: 还尝试编写我的lan ip而不是