Kubernetes GCE入口资源和集群服务

Kubernetes GCE入口资源和集群服务,kubernetes,google-compute-engine,Kubernetes,Google Compute Engine,我有简单的虚拟主机入口: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-access spec: rules: - host: service1.domain.com http: paths: - backend: serviceName: service1 servicePort: 80 - host:

我有简单的虚拟主机入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-access
spec:
  rules:
  - host: service1.domain.com
    http: 
      paths:
      - backend:     
          serviceName: service1
          servicePort: 80
  - host: service2.domain.com
    http:
      paths:
      - backend:
          serviceName: service2
          servicePort: 80
服务service1和service2的定义如下:

apiVersion: v1
kind: Service
metadata:
  name: service1
  labels:
    chart: "chart"
spec:
  type: ClusterIP # LoadBalancer
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
    name: web
  selector:
    app: service1
如果我部署类型为
ClusterIP
的服务,它们不工作,ingress将以错误响应:

Error: Server Error
The server encountered a temporary error and could not complete your request.
Please try again in 30 seconds.
然后我将其中一个服务的类型更改为
LoadBalancer
,它获得外部IP,我可以使用此外部IP访问它,也可以通过入口访问它(使用主机名
service1.domain.com

如果我尝试访问service2(service2.domain.com-仍然具有类型
ClusterIP
),入口将响应:

default backend - 404
如果我将servcice2 type更改为
LoadBalancer
,它将通过入口开始工作

我认为ingress应该与
ClusterIP
服务一起工作,因为LoadBalancer服务类型分配了外部IP,这一点都不需要,如果我正确获得它,默认情况下,gcloud ingress资源应该使用它自己的LoadBalancer

那么,设置有什么问题吗?

似乎正确的答案是入口需要使用NodePort,因此对于这种情况,服务应该具有
NodePort
类型