Nginx和MetalLB后面无法访问的服务

问题描述

我有一个带有金属LB和ngnix的裸机kubernetes集群,我能够在端口80上访问Nginx并查看欢迎页面。我应用了Ingress资源,但是尽管我可以通过工作线程(在指定的节点端口上)访问我的服务,但是我仍然无法访问我的服务。 我在这里想念什么吗?

入口:

apiVersion: networking.k8s.io/v1beta1 # for versions before 1.14 use extensions/v1beta1
kind: Ingress
Metadata:
  name: ingress
spec:
  rules:
    - http:
        paths:
          - path: /rest/endpoints/hello
            backend:
              serviceName: microservices-service
              servicePort: 8085
          - path: /rest/endpoints/calculateIterationTotalCapcity
            backend:
              serviceName: microservices-service
              servicePort: 8085

服务:

apiVersion: v1
kind: Service
Metadata:
  name: microservices-service
spec:
  selector:
    app: microservices-deployment
  ports:
    - port: 8085
      targetPort: 8085
      nodePort: 30000
  type: NodePort

部署:

apiVersion: apps/v1
kind: Deployment
Metadata:
  name: microservices-deployment
  labels:
    app: microservices-deployment
spec:
  replicas: 3
  template:
    Metadata:
      name: microservices-deployment
      labels:
        app: microservices-deployment
    spec:
      containers:
        - name: microservices-deployment
          image: ** my image **
          imagePullPolicy: Always
          ports:
            - containerPort: 8085
      restartPolicy: Always
  selector:
    matchLabels:
      app: microservices-deployment

更新: 我能够跟踪日志,并且看到这些可疑日志:

 - - [30/Aug/2020:13:43:12 +0000] "GET /rest/endpoints/hello HTTP/1.1" 404 555 "-"**** "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/84.0.4147.135 Safari/537.36" "-"
2020/08/30 13:43:12 [error] 28#28: *7 open() "/usr/share/Nginx/html/rest/endpoints/hello" Failed (2: No such file or directory),client:****,server: localhost,request: "GET /rest/endpoints/hello HTTP/1.1",host: "****"

解决方法

错误消息:No such file or directory来自Nginx,指向错误的配置,导致错误的请求。

最简单的解决方法是创建一个目录/文件以匹配Nginx配置或调整配置本身。

请记住还要检查目录/文件的权限,并在需要时使用chown命令对其进行更新。