Ограничьте одно соединение на модуль, используя GKE Ingress. - PullRequest
1 голос
/ 31 октября 2019

У меня есть развертывание GKE, состоящее из модулей, которые обрабатывают длительные запросы с интенсивным использованием памяти. Он находится за службой NodePort, которая находится за Ingress (на основе этого учебного пособия ).

Я хочу ограничить количество одновременных подключений на модуль, чтобы избежать исчерпания памяти узлами. Этот вопрос SO говорит о том, что это возможно с контроллером входа Nginx.

Может ли это быть достигнуто с входом GKE по умолчанию? Я довольно новичок в Kubernetes и хотел бы ограничить сложность, если это возможно.

Ответы [ 2 ]

2 голосов
/ 31 октября 2019

Судя по документации , на данный момент невозможно ограничить число одновременных подключений для каждого контейнера с помощью входного контроллера GKE .

Итак, чтобыпараметризовать максимальное количество соединений, которое вы должны будете выполнить после принятого ответа на пост, о котором вы упомянули, в котором используется nginxinc / kubernetes-ingress , и это решение, возможно, более простое, чем решение, принятое для аналогичный вопрос , связанный с kubernetes / ingress-nginx .

С другой стороны, если у вас нет ограничений на ресурсы (в этом случаевы будете ограничивать число одновременных пользователей, так как для данного ограничения ресурсов, имеющего два одновременных подключения к контейнеру, это то же самое, что например два подключения к двум разным контейнерам) вы можете прочитать о Cluster autoscaler и Автоматическое масштабирование кластера , чтобы понять, как GKE материализует одну из основных идей Кубернетес , который масштабируется.

1 голос
/ 31 октября 2019

Нет, вы не можете. Вы должны работать над этим самостоятельно на уровне приложения или, как предложено в другом посте, использовать другие контроллеры входа, над которыми у вас будет больше контроля.

Теперь, если вы подумаете об этом, ничегорешает ограничение одновременных подключений на модуль, так как модуль может иметь доступ ко всем ресурсам узла, если вы не установили ограничения ресурсов, которые вы всегда можете изменить. Таким образом, иметь 2 модуля с 1 соединением в каждом и один модуль с 2 соединениями было бы одинаково (если ваше приложение может справиться с этим). На самом деле с двумя соединениями в одном модуле у вас будет больше ресурсов от узла для вашего приложения.

Моя точка зрения такова, что если это ресурс, то на самом деле не имеет смысла ограничивать количествосоединений на стручок. Это просто дополнительная работа для вас.

Я полагаю, что есть и другие сценарии, в которых вы хотите применить это ограничение, например, если вы установите его на уровне узла, и в этом случае вы предоставляете все ресурсы. на одно соединение. И я верю, что вы можете достичь этого с помощью системы очередей.

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