Прямой трафик к боду Kubernetes на основе начального соединения - PullRequest
0 голосов
/ 26 сентября 2019

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

Моя текущая реализация, вероятно, излишне сложна.Вот псевдокод:

  1. Кластер, инициализированный с помощью пользовательского планировщика Python.
  2. Создано несколько модулей с приложением с состоянием, каждое со службой порта узла и уникальным портом узла.
  3. Клиент общается с планировщиком Python, используя интерфейс сокетов, и ему назначается порт.
  4. Клиент общается с модулем с помощью назначенного порта узла.
  5. Клиент (или планировщик) завершает работу модуля.

Я ограничен количеством портов и не могу направлять трафик с использованием AKS из-за ограничений портов их узлов.Кроме того, хотя преимущество планировщика состоит в том, что клиент может запрашивать модули с различными ресурсами, но это слишком много для тестирования и обслуживания.

Есть ли лучшее решение для направления внешнего трафика на отдельные модули с состоянием?

1 Ответ

2 голосов
/ 26 сентября 2019

В стандартной реализации прокси-сервера службы iptables используется очень простой рандомизированный алгоритм циклического перебора для выбора используемого модуля.Если вместо этого вы используете реализацию IPVS, она предлагает гораздо больше опций, хотя вряд ли это будет вариант для хост-провайдера, такого как AKS.Таким образом, вы можете использовать прокси-сервер пользователя, поддерживающий gRPC, такой как Traefik или Istio Ingress.Выбор одного выходит за рамки SO, но большинство этих прокси-серверов поддерживают некоторую липкость соединения в какой-либо форме.

...