#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/38265. @vedo обновил ответ с изменениями, внесенными в версию Knative v0.7