在我开始之前,我想提到我正在使用GKE的免费试用版。 我有一个在GKE集群中运行的简单服务器。我有用于公开服务器的服务。我正在尝试配置Ingress控制器并将其附加到此服务。
如果我的服务是NodeB的LoadBalancer类型,则一切都可以正常工作。但是,如果我的服务属于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"
,但仍然无法正常工作。
答案 0 :(得分:0)
答案 1 :(得分:0)
这很正常,为什么会出现错误也很简单。
ClusterIP服务是Kubernetes集群内部的内部唯一服务,而您尝试创建的(根据我的理解)是使用Ingress公开发布的服务,这意味着您将创建Google负载均衡器。
现在不支持ClusterIP的原因是,当您创建入口时,在Google云内部创建的LB资源需要集群上的目标端口可以调用,为此,您需要为其公开IP /端口
我不建议将LB服务(默认情况下在云提供商上创建LB)和入口结合起来,但要放在更干净的nodeport / ingress二人组上。
奖金:您使用的注释用于内部服务,具有入口的链接到入口控制器。这样,入口控制器就可以列出主机和到正确服务的代理流量。
答案 2 :(得分:0)
使用类似这样的东西。根据您的方便,在前面使用NodPort或LoadBalancer类型。
spec:
ports:
- protocol: TCP
port: XX
targetPort: XX
type: NodePort