балансировка нагрузки сервиса kubernetes на основе зоны

Допустим, у меня две зоны - зона 1 и зона 2, в каждой из которых развернуто по 2 приложения. Допустим, приложение App1 - это клиент, который получает информацию из приложения2, приложение1 подключается к приложению 2 с помощью службы k8s. Теперь, как я могу настроить приложение1 зоны 1 для подключения к приложению 2 зоны 1 (желательно, если приложение 2 зоны 1 загружено или не подключено к приложению 2 зоны 1). зона2).

Хотя это может быть достигнуто с помощью уровня приложения с использованием zuul и ленты с безголовым сервисом, я хочу переместить это на инфра-уровень. Есть ли возможность сделать в K8s.

Я вижу, что IPVS поддерживает алгоритм Locality-Based Least Connection, но не уверен, что k8s поддерживает этот алгоритм, я вижу, что поддерживаемые алгоритмы - это rr, wrr, lc, sed. но нет документации о поддержке lblc. Если поддерживается lblc, это лучшее решение, чтобы предпочесть тот же узел / модуль в dc / pod в зоне.

ПРИМЕЧАНИЕ. Это решение предназначено исключительно для локального кластера k8s.


person Karthik Prasad    schedule 28.06.2019    source источник


Ответы (1)


Я отвечу только на часть вашего вопроса, не имею опыта настройки "лучших практик" в этой области. Но я хочу поделиться с вами тем, что кубернет определенно поддерживает алгоритм Locality-Based Least Connection.

Вы можете найти это в исходный код:

LocalityBasedLeastConnection IPVSSchedulerMethod = "lblc"
    // LocalityBasedLeastConnectionWithReplication with Replication assigns jobs destined for the same IP address to the
    // least-connection node in the server set for the IP address. If all the node in the server set are overloaded,
    // it picks up a node with fewer jobs in the cluster and adds it to the sever set for the target.
    // If the server set has not been modified for the specified time, the most loaded node is removed from the server set,
    // in order to avoid high degree of replication.

Вы можете найти информацию о том, как включить IPVS здесь: https://kubernetes.io/blog/2018/07/09/ipvs-based-in-cluster-load-balancing-deep-dive/

P.S. Вышеупомянутая статья не содержит информации о lblc, но в соответствии с исходным кодом - k8s его поддерживает.

person Vit    schedule 02.07.2019