У меня есть работающий кластер со службами, которые все отвечают за установленным рулем Ingress nGinx, работающим на Azure AKS. В итоге это зависело от Azure.
Мой вопрос: почему мое соединение со службами / модулями в этом кластере периодически прерывается (по-видимому,некоторый тайм-аут простоя), и почему такое прерывание соединения, по-видимому, также совпадает с разрывом соединения с моим пользовательским интерфейсом Az AKS Browse?
Это попытка получить окончательный ответ о том, что именно вызываеттайм-аут, из-за которого локальный пользовательский интерфейс прокси «Обзор» отключается от моего кластера (дополнительные сведения о том, почему я прошу следовать).
При работе с Azure AKS из интерфейса командной строки Az вы можете запустить локальный ОбзорПользовательский интерфейс из терминала, используя:
az aks browse --resource-group <resource-group> --name <cluster-name>
Это работает нормально и открывает окно браузера, которое выглядит примерно так (yay):
В вашем терминале вы увидите что-то вроде:
- Прокси-сервер работает на http://127.0.0.1:8001/ Нажмите CTRL + C, чтобы закрыть туннель..
- Пересылка из127.0.0.1:8001 -> 9090 Переадресация с
- [:: 1]: 8001 -> 9090 Обработка соединения для 8001 Обработка соединения для 8001 Обработка соединения для 8001
Если вы уйдетеподключение к вашему кластеру простаивает в течение нескольких минут (т.е.вы не взаимодействуете с пользовательским интерфейсом) вы должны увидеть следующую распечатку, чтобы указать, что время соединения истекло:
E0605 13: 39: 51.940659 5704 portforward.go: 178] потеряно соединение с модулем
Одна вещь, которую я до сих пор не понимаю, - может ли ДРУГАЯ деятельность внутри Кластера продлить этот тайм-аут, но независимо от того, увидели ли вы вышеизложенное, вы, по сути, в том же месте, что и я ...мы можем говорить о том факте, что все мои другие соединения OUT из модулей на этом сервере также были закрыты каким-либо процессом тайм-аута, который отвечает за разрыв связей с пользовательским интерфейсом AKS.
Так в чем же проблема??
Причина, по которой это проблема для меня, заключается в том, что у меня есть Служба, на которой запущен модуль Ghost Blog, который подключается к удаленной базе данных MySQL с помощью пакета npm под названием «Knex».Как это случается, в более новых версиях Knex есть ошибка (которая еще не устранена), из-за которой, если соединение между клиентом Knex и удаленным сервером БД разрывается и его необходимо восстановить - оно не повторно подключается и просто бесконечнозагружает.
Ошибка nGinx 503 Тайм-аут шлюза
В моей ситуации, когда nGinx Ingress выдал ошибку Тайм-аут 503 шлюза.Это произошло из-за того, что Ghost не отвечал после того, как Idle timeout прервал соединение Knex - поскольку Knex не работал должным образом и не восстанавливает разорванное соединение с сервером должным образом.
Fine. Я откатил Knex, и все отлично работает.
Но почему, черт возьми, мои соединения со стручками изначально отключаются от базы данных?
Следовательно, этот вопрос, мы надеемся, сэкономит несколько будущих человеко-дней попыток устранения проблем с фантомами, которые связаны с Kubernetes (может быть, специфичным для Azure, может быть, нет), обрезая соединения после того, как служба / модуль простаивал для некоторыхвремя.