![](/img/trans.png)
[英]Google Kubernetes Engine Ingress UNHEALTHY backend service
[英]Ingress unable to find backend service in Kubernetes v1.21.5
我在 docker 上使用 Kubernetes v1.21.5。 以下是我的入口 YAML 文件
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: triver.dev
http:
paths:
- path: /api/users/?(.*)
pathType: Prefix
backend:
service:
name: auth-srv
port:
number: 3000
我正在運行一個 auth srv 映像,以下是它的 YAML 文件
kind: Deployment
metadata:
name: auth-depl
spec:
replicas: 1
selector:
matchLabels:
app: auth
template:
metadata:
labels:
app: auth
spec:
containers:
- name: auth
image: triver/auth
env:
- name: MONGO_URI
value: 'mongodb://mongo-srv:27017/auth'
- name: JWT_KEY
valueFrom:
secretKeyRef:
name: jwt-secret
key: JWT_KEY
---
apiVersion: v1
kind: Service
metadata:
name: auth-srv
spec:
selector:
app: auth
ports:
- name: auth
protocol: TCP
port: 3000
targetPort: 3000
但是當我嘗試向我在身份驗證服務中創建的任何路由發送請求時,例如我創建了一個 triver.dev/service/account/signup post express 路由器供用戶注冊。 當我嘗試通過 Postman 向路由發送 post 請求時,它給出了 ECONNRefused 錯誤 (404)。 無法發送請求。 為什么會發生? (我的郵遞員工作正常。這不是郵遞員端的問題。)
我究竟做錯了什么
該應用程序有效,但我無法訪問該路線。 這絕對是入口問題。 有人能幫助我嗎? 這是一個非常重要的項目。
這是因為您沒有在入口中提到主機名,還要確保您的入口控制器正在運行
示例入口
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: hello-world.info
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 8080
主持人:hello-world.info
參考: https : //kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/
您也可以結帳: https : //kubernetes.io/docs/concepts/services-networking/ingress/
如果您在 ingress 中設置了默認后端並且主機沒有問題
確保您通過HTTP而不是HTTPS發送請求
nginx.ingress.kubernetes.io/ssl-redirect: "false"
因為您沒有使用證書SSL/TLS所以請嘗試使用HTTP的 URL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.