Липкость IPVS в случае большого количества клиентов может быть скрыта за одним IP-адресом

#networking #kubernetes #minikube #kube-proxy #ipvs

#создание сетей #кубернетес #мини-куб #kube-прокси-сервер #ipvs #сеть #kubernetes #kube-прокси

Вопрос:

Я использую кластер minikube в экземпляре AWS. Я заменил IPVS на iptables в kube-proxy для достижения привязки к сеансу. Алгоритм хеширования источника IPVS используется для достижения привязки к сеансу, теперь, насколько я понимаю, алгоритм хеширования источника поддерживает сеанс на основе только IP-адреса. Это нехорошо в случае, если несколько пользователей подключаются из частной сети, имеющей только одну общедоступную конечную точку. Трафик с этой общедоступной конечной точки всегда направляется на один модуль в случае реплики, хотя это могут быть разные пользователи. Это делает другие капсулы идеальными.

Желаемый результат:

Разные пользователи из одной и той же общедоступной конечной точки должны рассматриваться как разные пользователи на основе same-IP unique-port и должны быть направлены на разные модули внутри реплики.

Как я могу добиться этого с помощью IPVS?

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

1. Пожалуйста, объясните более подробно о вашем сценарии, если вы можете привести несколько примеров того, как воспроизвести поведение, было бы полезно для получения лучшей помощи.

2. @KoopaKiller Я предоставил доступ к сервису k8 через порт узла, скажем, 30788. Клиент сначала устанавливает UDP-соединение с общедоступным IP-адресом компьютера: 30788, теперь клиент устанавливает непосредственное соединение по протоколу TCP с общедоступным IP-адресом компьютера: 30788. Теперь оба этих соединения должны быть установлены с одним и тем же модулем в реплике. Это достигается за счет внедрения ipvs с исходным алгоритмом хеширования.

3. Теперь проблема в том, что, допустим, есть предприятие, где за одним и тем же общедоступным IP-адресом находится много клиентов. Когда эти разные клиенты устанавливают соединение с machine-public-IP: 30788, исходный алгоритм хэширования ipvs обрабатывает их как трафик, исходящий с одного исходного ip-адреса, и направляет все их в один и тот же модуль, оставляя другие модули идеальными.

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

5. В чем причина перенаправления на другой модуль, для балансировки трафика или по другой причине? Рассматривали ли вы возможность использования ingress, такого как nginx-ingress?