在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: /service/account/?(.*)
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

但是当我尝试发送请求到我在auth服务中创建的任何路由时,例如,我创建了一个triver.dev/service/account/signup post express路由器供用户注册。当我尝试通过Postman向路由发送post请求时,它给出了ECONNRefused的错误(404)。无法发送请求。为什么会发生这种情况?我的邮递员工作得很好。这对邮递员来说不是问题。

我做错了什么

应用程序工作,但我就是无法访问路线。这绝对是一个进入的问题。有人能帮帮我吗?这是一个非常重要的项目。

这是当我使用命令'kubectl get ingress'时显示的内容

当我使用skaffold dev运行应用程序时,一切正常。

这是由于您没有在入口中提到主机名,还要确保您的入口控制器正在运行

例子入口

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和host中设置了默认后端设置Is not issue

确保在HTTP上发送请求代替HTTPS

nginx.ingress.kubernetes.io/ssl-redirect: "false"

因为你是而不是证书SSL/TLS所以请尝试使用HTTPURL

最新更新