簡體   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