Какой алгоритм Kubernetes использует для оптимизации трафика в наборе реплик / развертывании

Меня спросили об этом, и я не смог найти информацию об этом в Интернете - какой алгоритм Kubernetes использует для изменения трафика в наборе реплик или развертывании (я думаю, что они одинаковы) для модулей?

Допустим, у меня есть реплика 5 модулей в моем кластере Kubernetes, определенная в наборе реплик. Как кластер выбирает, к какому модулю перейти в новом запросе? Использует ли он циклический перебор? Я не смог найти информацию об этом.


person Yagel    schedule 07.04.2019    source источник


Ответы (1)


Алгоритм, применяемый для определения того, какой модуль будет обрабатывать запрос, зависит от запущенного режима kube-proxy.

  • В версии 1.0 прокси работает в режиме, называемом пользовательским пространством, а алгоритм по умолчанию - циклический.

  • В режиме 1.2 был добавлен прокси iptables, но по-прежнему используется циклический перебор из-за ограничений iptables.

  • В бета-версии 1.8.0 был представлен виртуальный IP-сервер (IPVS), который позволяет использовать гораздо больше вариантов алгоритмов, например:

    • RoundRobin;
    • WeightedRoundRobin;
    • LeastConnection;
    • WeightedLeastConnection;
    • LocalityBasedLeastConnection;
    • LocalityBasedLeastConnectionWithReplication;
    • SourceHashing;
    • Назначение хеширования;
    • ShortestExpectedDelay;
    • NeverQueue.

Использованная литература:

https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies https://sookocheff.com/post/kubernetes/understanding-kubernetes-networking-model/

person Luis Brito    schedule 08.04.2019