Как исправить Kubernetes Ingress Controller, отключая узлы от кластера - PullRequest
0 голосов
/ 27 марта 2019

У меня возникли некоторые проблемы при установке Ingress Controller в моем локальном кластере (созданном с помощью Kubespray, с запущенным MetalLB для создания LoadBalancer.).

Я пытался использовать nginx, traefik и kong, но все получилите же результаты.

Я устанавливаю свою таблицу управления nginx, используя следующие значения.yaml:

controller:
  kind: DaemonSet
  nodeSelector:
    node-role.kubernetes.io/master: ""
  image:
    tag: 0.23.0
rbac:
  create: true

С помощью команды:

helm install --name nginx stable/nginx-ingress --values values.yaml --namespace ingress-nginx

Когда я развертываюВо входном контроллере в кластере создается служба (например, nginx-ingress-controller для nginx).Эта служба имеет тип LoadBalancer и получает внешний IP-адрес.

Когда этот внешний IP-адрес назначен, узел, связанный с этим внешним IP-адресом, теряется (состояние «Не готов»).Однако, когда я проверяю этот узел, он все еще работает, он просто отрезан от других узлов, он не может даже пропинговать их (маршрут не найден).Когда я удаляю службу (а не остальную часть таблицы управления nginx), все работает, и Ingress работает.Я также попытался установить nginx / traefik / kong без LoadBalancer, используя NodePorts или внешние IP-адреса службы, но я получаю тот же результат.

Кто-нибудь признает это поведение?Почему вход по-прежнему работает, даже когда я удаляю службу nginx-ingress-controller?

1 Ответ

1 голос
/ 16 апреля 2019

После долгих поисков мы наконец нашли рабочее решение этой проблемы.

Как уже упоминалось @A_Suh, пул IP-адресов, который использует metallb, должен содержать IP-адреса, которые в настоящее время не используются одним изузлы в кластере.Добавляя новый диапазон IP-адресов, который также настроен на сервере DHCP, metallb может использовать ARP для соединения одного из IP-адресов с одним из узлов.

Например, в моем кластере из 5 узлов (kube11-15): когда metallb получает диапазон 10.4.5.200/31 и выделяет 10.4.5.200 для моего nginx-ingress-controller, 10.4.5.200 связывается с kube12.На запросы ARP за 10.4.5.200 все 5 узлов отвечают с помощью kube12, и трафик будет направляться на этот узел.

...