Время ожидания запроса на входной контроллер NGINX через 60 секунд - PullRequest
0 голосов
/ 25 января 2019

Когда на запрос требуется более 60 секунд, кажется, что входной контроллер отскочит

Из того, что я вижу, наш входной контроллер NGINX возвращает 504 клиенту после обработки запроса более 60 с. Я могу видеть это из журналов NGINX:

2019/01/25 09:54:15 [error] 2878#2878: *4031130 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 10.244.0.1, server: myapplication.com, request: "POST /api/text HTTP/1.1", upstream: "http://10.244.0.39:45606/api/text", host: "myapplication.com"
10.244.0.1 - [10.244.0.1] - - [25/Jan/2019:09:54:15 +0000] "POST /api/text HTTP/1.1" 504 167 "-" "PostmanRuntime/7.1.6" 2940 60.002 [default-myapplication-service-80] 10.244.0.39:45606 0 60.000 504 bdc1e0571e34bf1223e6ed4f7c60e19d

Второй элемент журнала показывает 60 секунд для времени ответа восходящего потока и времени запроса (см. Формат журнала NGINX здесь )

Но я указал, что все значения времени ожидания должны составлять 3 минуты во входной конфигурации:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: aks-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: letsencrypt
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/send_timeout: "3m"
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "3m"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "3m"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "3m"
spec:
  tls:
  - hosts:
    - myapplication.com
    secretName: tls-secret
  rules:
  - host: myapplication.com
    http:
      paths:
      - path: /
        backend:
          serviceName: myapplication-service
          servicePort: 80

Чего мне не хватает?

Я использую nginx-ingress-1.1.0 и k8s 1.9.11 в Azure (AKS).

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Проблема была исправлена ​​предоставленными целочисленными значениями (в секундах) для этих аннотаций:

nginx.ingress.kubernetes.io/proxy-connect-timeout: "180"
nginx.ingress.kubernetes.io/proxy-read-timeout: "180"
nginx.ingress.kubernetes.io/proxy-send-timeout: "180"

Похоже, что этот вариант входного контроллера NGINX требует такого.

0 голосов
/ 26 января 2019

Поскольку вы, похоже, используете фактический вход с ngnix.com, вам нужно использовать аннотации в стиле nginx.org/proxy-connect-timeout: "3m", как можно увидеть в их примере

Я все еще довольноЯ уверен, что мой трюк с отладкой kubectl cp, то есть с nginx.conf на контроллере Pod, помог бы вам отладить эту ситуацию самостоятельно, но наверняка чтение документации для вашего входного контроллера также будет иметь большое значение

Хотя это может и не иметь значения, их последний выпуск также является 1.4.3, поэтому я надеюсь, что вы намеренно используете старую версию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...