Документация здесь описывает, как установить http (s) основанная на использовании подсистема балансировки нагрузки с kubernetes на облачной платформе Google.
Вопрос состоит в том, как ему на самом деле удается сделать основанное на использовании выравнивание нагрузки. Например, со следующей конфигурацией:
Принятие LB выберет наименее используемые из этих 10 узлов и направит к нему на порте X, как переходная приставка выбрана для обслуживания запроса? kubernetes сервис затем выбирает переходную приставку на основе некоторого другого алгоритма балансировки?
Очевидно что-то интересное происходит, потому что большинство экземпляров не будет иметь выполнения переходной приставки (и поэтому могло бы быть более вероятно быть меньше всего использованным).
Как описано в этой статье :
Балансировщики нагрузки GCE / AWS не предоставляют веса для своих целевых пулов. Это не было проблемой со старыми правилами LB kube-proxy, которые правильно сбалансировать все конечные точки.
Благодаря новой функциональности внешний трафик не будет одинаковым нагрузка сбалансирована между модулями, но достаточно равномерно сбалансирована на узле уровень (поскольку GCE / AWS и другие внешние реализации LB не имеют возможность указывать вес на узел, они балансируют одинаково для всех целевых узлов, не обращая внимания на количество модулей на каждый узел).
Однако мы можем заявить, что для NumServicePods «NumNodes или NumServicePods »NumNodes, довольно близкое к равному распределение будет видно, даже без весов.
Как только внешние балансировщики нагрузки предоставляют веса, эта функциональность можно добавить в путь программирования LB. Будущая работа: нет поддержки веса предусмотрены для версии 1.4,но может быть добавлен в будущем date
Внутренний трафик от модуля к поду должен вести себя аналогично ClusterIP. с равной вероятностью для всех модулей.