Службы, недоступные за nginx и MetalLB

#nginx #kubernetes #kubernetes-ingress #metallb

#nginx #kubernetes #kubernetes- вход #metallb

Вопрос:

У меня есть кластер kubernetes из чистого металла с metal LB и ngnix, и я могу получить доступ к nginx через порт 80 и посмотреть страницу приветствия. Я применил входной ресурс, но все же не могу получить доступ к своей службе, хотя я могу получить доступ к своей службе через workers (на указанном nodeport). Есть ли что-то, чего мне здесь не хватает?

Вход:

 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: "****"
  

Комментарии:

1. Какую команду curl вы запускаете, чтобы получить к ней доступ? В чем ошибка? Добавление журналов из модулей контроллера входа nginx

2. @ArghyaSadhu Я пытаюсь получить к нему доступ через браузер (это запрос get). Я не вижу никаких журналов из модулей

3. @YaakovShami Мы мало что можем сказать без журналов / сообщений об ошибках. Попробуйте отладить модули и попытайтесь найти любую соответствующую информацию, которой вы могли бы поделиться с нами.

4. @OhHiMark Я смог отследить журналы. Пожалуйста, ознакомьтесь с обновлением в исходном сообщении.

5. @YaakovShami Спасибо. Не могли бы вы проверить, существует ли /usr/share/nginx/html/rest/endpoints/hello каталог / файл, а также какие разрешения у него есть?

Ответ №1:

Сообщение об ошибке: No such file or directory приходит от Nginx и указывает на неправильную конфигурацию, которая приводит к неправильному запросу.

Самый простой способ исправить это — просто создать каталог / файл, соответствующий конфигурации Nginx, или настроить саму конфигурацию.

Не забудьте также проверить права доступа к каталогу / файлу и при необходимости обновить их с помощью chown команды.

Комментарии:

1. Привет, я не совсем понял. У меня есть файл spring jar, содержащий весь мой код, как мне настроить nginx для этого? У меня вообще нет каталога под названием «nginx» в каталоге /usr/share.

2. Nginx пытается получить доступ к /usr/share/nginx/html/rest/endpoints/hello , который не существует. Вам нужно проверить свой nginx.conf файл и посмотреть, есть ли какие-либо неверно настроенные или отсутствующие location файлы.

3. Я не могу найти файл nginx.conf (в / etc у меня нет папки ngnix, я установил ее с манифестами)

4. По умолчанию файл конфигурации nginx.conf размещается в каталоге /usr/local/nginx/conf , /etc/nginx или /usr/local/etc/nginx .

5. Я не нашел его ни в одном из этих каталогов