Как сделать так, чтобы kube-proxy распределял нагрузку по событиям? - PullRequest
0 голосов
/ 06 января 2020

У меня есть служба ClusterIP, которая используется для внутреннего распределения нагрузки на 2 POD. Нагрузка распределяется неравномерно по POD.

Как равномерно распределить нагрузку?

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Kubernetes использует iptables для распределения нагрузки между модулями ( режим прокси iptables по умолчанию).

Если у вас есть 2 модуля, они распределяются равномерно с вероятностью 0,5 (50%). Поскольку он не использует циклический перебор, модуль бэкэнда выбирается случайным образом. Это будет даже в более длительные сроки.

Если будет 3 модуля, вероятность изменится на 1/3 (33%), для 4 модулей - 1/4 и т. Д.

Для проверки вы можете запустить sudo iptables-save .

Пример вывода для 2 модулей (для службы nginx):

sudo iptables-save | grep nginx

-A KUBE-NODEPORTS -p tcp -m comment --comment "default/nginx:" -m tcp --dport 31554 -j KUBE-SVC-4N57TFCL4MD7ZTDA    //KUBE-SVC-4N57TFCL4MD7ZTDA is a tag for nginx service

sudo iptables-save | grep KUBE-SVC-4N57TFCL4MD7ZTDA
-A KUBE-SVC-4N57TFCL4MD7ZTDA -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-SOWYYRHSSTWLCRDY

Если вы хотите убедиться, что нагрузка распределяется равномерно с использованием алгоритма циклического перебора, вы можете использовать IPVS , который по умолчанию использует rr (round-robin). Он работает как балансировщик нагрузки перед кластером и направляет запросы для служб на основе TCP и UDP на реальные серверы, а службы реальных серверов отображаются в виде виртуальных служб на одном IP-адресе. поддерживается в кластере, созданном local-up, kubeadm и GCE.

0 голосов
/ 06 января 2020

kube-proxy в режиме прокси пространства пользователя выбирает модуль бэкэнда с помощью режима циклического перебора.

kube-proxy в режиме iptables выбирает модуль бэкэнда случайным образом.

...