繁体   English   中英

GCE Ingress 资源和 ClusterIP 服务

[英]GCE Ingress resource and ClusterIP service

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

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 和 servcie2 的定义如下:

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类型部署服务,它们将不起作用,入口响应错误:

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 类型更改为LoadBalancer它将开始通过入口工作。

我认为 ingress 应该与ClusterIP服务一起使用,因为 LoadBalancer 服务类型分配了外部 IP,这根本不需要,如果我正确地得到它,默认情况下 gcloud ingress 资源应该使用它自己的负载负载均衡器。

那么设置有什么问题呢?

https://github.com/kubernetes/ingress-gce/blob/master/docs/faq/gce.md

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM