簡體   English   中英

無法使用 Ingress Kubernetes 連接到服務

[英]Unable to Connect to a service using Ingress Kubernetes

我對 Docker 和 Kubernetes 非常陌生。 在學習 Kubernetes 時,我發現我正在使用Ingress

讓我分享我的服務和我的入口 controller YML 文件。

apiVersion: v1
kind: Service
metadata:
  name: simptekapi-api-service
spec:
  selector:
    component: api
  type: ClusterIP
  ports:
    - port: 5000
      targetPort: 5000

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
  name: docker-registry
  namespace: default
spec:
  rules:
  - host: simptek.api
    http:
      paths:
      - backend:
          serviceName: simptekapi-api-service
          servicePort: 5000
        path: /

問題是我無法使用我的 minikube Ip 從 Bowser/Postman/Curl 連接到我的服務。 或主機。

在此處輸入圖像描述

所以我認為我的服務可能有問題。 所以試圖堅持使用 Nodeport。 但是 NodePort 工作得很好。 所以我的服務也很好。

apiVersion: v1
kind: Service
metadata:
  name: simptekapi-api-nodeport
spec:
  type: NodePort
  selector:
    component: api
  ports:
    - port: 5000
      targetPort: 5000
      nodePort: 30007

在此處輸入圖像描述

我還在我的主機文件中添加了172.17.245.221 simptek.api

我實際上無法弄清楚我做錯了什么。 我嘗試過多種方式更改我的 Ingress 文件。 以下。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
  name: docker-registry
spec:
  rules:
  - host: simptek.api
    http:
      paths:
      - backend:
          serviceName: simptekapi-api-service
          servicePort: 5000
        path: /

還嘗試將nginx.ingress.kubernetes.io/rewrite-target: /添加到入口。

我正在分享我的日志,這可能對任何想幫助我的人都有幫助。

kubectl get pods -n kube-system

NAME                                        READY   STATUS      RESTARTS   AGE
coredns-66bff467f8-5dv28                    1/1     Running     6          7d1h
coredns-66bff467f8-w72dg                    1/1     Running     6          7d1h
etcd-minikube                               1/1     Running     0          36h
ingress-nginx-admission-create-94wpw        0/1     Completed   0          30h 
ingress-nginx-admission-patch-p5ffx         0/1     Completed   0          30h
ingress-nginx-controller-7bb4c67d67-jfdrm   1/1     Running     0          30h
kube-apiserver-minikube                     1/1     Running     0          36h
kube-controller-manager-minikube            1/1     Running     18         7d1h
kube-proxy-d5bvb                            1/1     Running     6          7d1h
kube-scheduler-minikube                     1/1     Running     17         7d1h
storage-provisioner                         1/1     Running     11         7d1h

kubectl get ing

NAME              CLASS    HOSTS         ADDRESS          PORTS   AGE
docker-registry   <none>   simptek.api   172.17.245.221   80      53m

kubectl describe ing docker-registry

Name:             docker-registry
Namespace:        default
Address:          172.17.245.221
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
Host         Path  Backends
----         ----  --------
simptek.api
           /   simptekapi-api-service:5000 (172.17.0.10:5000,172.17.0.6:5000,172.17.0.7:5000)
Annotations:   nginx.ingress.kubernetes.io/proxy-body-size: 0
           nginx.ingress.kubernetes.io/proxy-read-timeout: 600
           nginx.ingress.kubernetes.io/proxy-send-timeout: 600
Events:
Type    Reason  Age                    From                      Message
----    ------  ----                   ----                      -------
Normal  CREATE  54m                    nginx-ingress-controller  Ingress default/docker-registry
Normal  CREATE  54m                    nginx-ingress-controller  Ingress default/docker-registry
Normal  UPDATE  3m58s (x100 over 53m)  nginx-ingress-controller  Ingress default/docker-registry
Normal  UPDATE  3m58s (x100 over 53m)  nginx-ingress-controller  Ingress default/docker-registry

kubectl get namespaces

NAME                   STATUS   AGE
default                Active   7d1h
ingress-nginx          Active   30h
kube-node-lease        Active   7d1h
kube-public            Active   7d1h
kube-system            Active   7d1h
kubernetes-dashboard   Active   7d1h

如果有人能指導我了解我的錯誤行為,那將是一個很大的幫助。 請讓我知道需要的更多信息。

您需要從 Ingress 中刪除以下注釋

 nginx.ingress.kubernetes.io/proxy-body-size: "0"

我錯過了一些步驟。 我正在回答這個問題。 任何將面臨類似問題的人都可能會有所幫助。

  • 首先,對於 Mac/Windows 個人是否必須執行kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/cloud/deploy.yaml (文檔中缺少)

  • 然后不要忘記執行minikube addons enable ingress (我錯過了什么)

  • 另外不要忘記在annotations部分使用kubernetes.io/ingress.class: nginx

  • 如果您不需要 url 重寫,則不要使用nginx.ingress.kubernetes.io/rewrite-target

  • 仍然面臨問題然后嘗試以下一個

    apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-service annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/rewrite-target: /$1 spec: rules: - http: paths: - path: /?(.*) backend: serviceName: service1 servicePort: 3000 - path: /api/?(.*) backend: serviceName: service2 servicePort: 5000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM