2017-06-19 69 views
0

我設置了一個入口控制器,一個具有節點端口的服務,設置健康路由並驗證我的服務正在運行,但我的請求仍然被路由到我的默認後端,而不是到我的入口控制器。我不知道爲什麼,也不知道如何調試。Ingress Controller中的主機獲取路由爲默認後端

我已經檢查:

  1. 我的豆莢是健康的(並且有一個健康的路線)
  2. 我有一個節點端口
  3. 有在describe沒有錯誤的服務
  4. 我的服務從另一個莢

當我捲曲我的URL的作品,我得到這個:

$ curl image-pin.thejsj.com -v 
* Rebuilt URL to: image-pin.thejsj.com/ 
* Trying 35.186.225.114... 
* Connected to image-pin.thejsj.com (35.186.225.114) port 80 (#0) 
> GET/HTTP/1.1 
> Host: image-pin.thejsj.com 
> User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) 
> Accept: */* 
> Referer: 
> 
< HTTP/1.1 404 Not Found 
< Date: Mon, 19 Jun 2017 05:06:09 GMT 
< Content-Length: 21 
< Content-Type: text/plain; charset=utf-8 
< Via: 1.1 google 
< 
* Connection #0 to host image-pin.thejsj.com left intact 
default backend - 404 

我的資源聲明:

入口控制器:

apiVersion: extensions/v1beta1 
kind: Ingress 
metadata: 
    name: "main-ingress" 
    labels: 
    # Timestamp used in order to force reload of the secret 
    last_updated: "1497848257" 
spec: 
    rules: 
    - host: image-pin.thejsj.com 
    http: 
     paths: 
     - path: /* 
     backend: 
      serviceName: imagepin 
      servicePort: 80 

服務

apiVersion: v1 
kind: Service 
metadata: 
    name: imagepin 
spec: 
    selector: 
    app: imagepin 
    type: NodePort 
    ports: 
    - protocol: "TCP" 
    port: 80 
    nodePort: 32222 
    targetPort: 80 

部署

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: imagepin 
spec: 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     app: imagepin 
    spec: 
     containers: 
     - name: imagepin 
      image: quay.io/hiphipjorge/imagepin_server:latest 
      args: 
      - "npm" 
      - "start" 
      ports: 
      - containerPort: 80 
      env: ... 
      readinessProbe: 
      httpGet: 
       path:/
       port: 80 
      livenessProbe: 
      httpGet: 
       path:/
       port: 80 

現狀:

入口控制器:

Every 2.0s: kubectl describe ingress main-ingress        Jorges-MacBook-Pro-2.local: Sun Jun 18 22:01:35 2017 

Name:     main-ingress 
Namespace:    default 
Address:    35.186.225.114 
Default backend:  default-http-backend:80 (10.0.0.6:8080) 
Rules: 
    Host     Path Backends 
    ----     ---- -------- 
    image-pin.thejsj.com 
         /*  imagepin:80 (<none>) 
Annotations: 
    forwarding-rule:  k8s-fw-default-main-ingress--02988768680308cd 
    target-proxy:   k8s-tp-default-main-ingress--02988768680308cd 
    url-map:    k8s-um-default-main-ingress--02988768680308cd 
    backends:    {"k8s-be-31582--02988768680308cd":"HEALTHY","k8s-be-32222--02988768680308cd":"HEALTHY"} 
Events: 
    FirstSeen  LastSeen  Count From     SubObjectPath Type   Reason Message 
    ---------  --------  ----- ----     ------------- --------  ------ ------- 
    3m   3m    1  loadbalancer-controller     Normal   CREATE ip: 35.186.225.114 
    3m   3m    2  loadbalancer-controller     Normal   Service no user specified default bac 
kend, using system default 

服務

$ kubectl describe service imagepin 
Name:   imagepin 
Namespace:  default 
Labels:   <none> 
Annotations:  kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"imagepin","namespace":"default"},"spec":{"ports":[{"nodePort":32222,"port":80,... 
Selector:  app=imagepin 
Type:   NodePort 
IP:   10.3.241.98 
Port:   <unset> 80/TCP 
NodePort:  <unset> 32222/TCP 
Endpoints:  10.0.2.6:80 
Session Affinity: None 
Events:   <none> 
+0

通過轉到GCP UI並刪除所有未使用的後端來解決此問題。不知道這是如何相關,但... –

回答

0

嘗試發送您的捲曲請求作爲FOL低點:

捲曲進入-IP/-H 「主持人:image-pin.thejsj.com

這可能會爲你工作。

+0

這應該沒有任何區別。這只是執行相同操作的不同方式。 – Rod