![](/img/trans.png)
[英]Ingress unable to find backend service in Kubernetes v1.21.5
[英]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.