Балансировка нагрузки по умолчанию в Kubernetes

Одним из лучших способов было бы использовать метод полиморфизма enum :

public class EnumTest {
    public enum Foo {
        A {

            @Override
            public Bar getBar() {
                return Bar.Alpha;
            }
        },
        B {

            @Override
            public Bar getBar() {
                return Bar.Delta;
            }
        },
        C {

            @Override
            public Bar getBar() {
                return Bar.Alpha;
            }
        },

        ;

        public abstract Bar getBar();
    }

    public enum Bar {
        Alpha {

            @Override
            public Foo getFoo() {
                return Foo.A;
            }
        },
        Beta {

            @Override
            public Foo getFoo() {
                return Foo.C;
            }
        },
        Delta {

            @Override
            public Foo getFoo() {
                return Foo.C;
            }
        },

        ;

        public abstract Foo getFoo();
    }

    public static void main(String[] args) {
        for (Foo f : Foo.values()) {
            System.out.println(f + " bar " + f.getBar());
        }
        for (Bar b : Bar.values()) {
            System.out.println(b + " foo " + b.getFoo());
        }
    }
}

Вышеприведенный код выводит желаемый результат:

A bar Alpha
B bar Delta
C bar Alpha
Alpha foo A
Beta foo C
Delta foo C

См. также:

1
задан Danny Noam 父 17 February 2019 в 18:20
поделиться

2 ответа

Я вижу две опции, которые можно использовать с k8s:

  1. Используйте istio управление трафиком и создайте DestinationRule. В настоящее время он поддерживает три режима балансировки нагрузки:

    • Round robin
    • Случайный
    • Взвешенный наименьший запрос

      apiVersion: networking.istio.io/v1alpha3
      kind: DestinationRule
      ...
      spec:
        ...
        subsets:
        - name: test
          ...
          trafficPolicy:
            loadBalancer:
              simple: ROUND_ROBIN
      
  2. Использовать lb_type в прокси посланника с после на k8s. Более подробная информация о после находится в https://www.getambassador.io .

0
ответ дан Vikram Hosakote 17 February 2019 в 18:20
поделиться

«Внутренняя балансировка нагрузки» между модулями Сервиса уже была рассмотрена в этом вопросе несколько дней назад .

Ingress на самом деле не делает ничего особенного (если только вы не взломали конфигурацию NGINX, которую он использует) - он будет использовать те же правила обслуживания, что и в связанном вопросе.

Если вы хотите или нуждаетесь в детальном управлении маршрутизацией модулей в службе, можно расширить возможности Kubernetes - я рекомендую вам ознакомиться с функциями управления трафиком Istio , так как Одна из его функций - возможность динамически контролировать объем трафика, который получают различные модули в службе.

0
ответ дан Paul Annetts 17 February 2019 в 18:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: