Как увеличить время выполнения приложений, обслуживаемых knative?

#nginx #kubernetes #faas #knative-serving #knative

#nginx #kubernetes #faas #knative-обслуживание #knative

Вопрос:

Мы используем knative для обслуживания приложения nodejs (с express), которое выполняло бы рабочие процессы и возвращало результаты выполнения. Приложению пришлось бы выполнять рабочие процессы, для завершения выполнения которых могут потребоваться минуты (если не часы).

После вызова приложения выполнение останавливается через определенное время (примерно 14 минут) со статусом: upstream request timeout

Мы соответствующим образом изменили время ожидания для express, и, похоже, это дало небольшой эффект, но не настолько, насколько это было необходимо. Мы использовали следующее руководство в качестве базовогоhttps://github.com/knative/docs/tree/master/docs/serving/samples/hello-world/helloworld-nodejs

Есть ли значение конфигурации, которое можно изменить, чтобы увеличить время выполнения самого приложения (возможно, значение тайм-аута)?

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

1. Кажется, связано: github.com/knative/serving/issues/1479 — вы уверены, что ничего не разбилось?

2. @BartoszKP Спасибо за ссылку, модуль не разбился. В модуле также нет ошибок.

Ответ №1:

ОБНОВЛЕНО (25/6/19):

Согласно https://github.com/knative/serving/pull/4196 в Knative версии 0.7 теперь вы можете указать, MaxRevisionTimeoutSeconds которое может быть любым целым числом. timeoutSeconds должно быть меньше или равно MaxRevisionTimeoutSeconds . timeoutSeconds по умолчанию используется значение 300 .

СТАРЫЙ: вы можете изменить timeoutSeconds (который, я полагаю, по умолчанию равен 300 секундам):

 apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
  name: my-app
  namespace: default
spec:
  runLatest:
    configuration:
      revisionTemplate:
        spec:
          timeoutSeconds: 300
          ...
  

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

1. Спасибо, мы попробовали: timeoutSeconds: 300 и получили: Error from server (InternalError): error when creating 'knative-fn.yaml': Internal error occurred: admission webhook 'webhook.serving.knative.dev' denied the request: mutation failed: expected 0s <= 1800s <= 600s: spec.runLatest.configuration.revisionTemplate.spec.timeoutSeconds

2. @Vedo Какую версию Knative вы используете? Для каких целых чисел вы пробовали timeoutSeconds ? Правильно ли применяется yaml без timeoutSeconds ? Вы пробовали перенастраивать / применять все файлы Knative yaml, чтобы убедиться, что Knative правильно настроен в вашем кластере? Все ли модули Knative работоспособны? Мэтью

3. Я использую Knative версии 0,5.0 (сборка, обслуживание и eventing). Я пробовал целые числа от 300 до 1800 секунд, но все, что превышает 600 секунд, выдает ошибку. Файл yaml применяется корректно, без задержек в секундах, но в среднем составляет 300 секунд, что слишком мало. Все развертывания Knative и модули в кластере исправны, готовы и запущены.

4. Если вы не включите timeoutSeconds , по умолчанию оно равно 300. Я получил ту же проблему с 600s max — до сих пор мы не настроили ни одну из наших длительных задач… Я поднял проблему на github: github.com/knative/serving/issues/3826

5. @vedo обновил ответ с изменениями, внесенными в версию Knative v0.7