K8S baremetal nginx-ингресс-контроллер - PullRequest
1 голос
/ 07 марта 2019

ОС: RHEL7 |Версия k8s: 1.12 / 13 |кубеспрей |baremetal

У меня развернут стандартный кластер чистого металла kubespray, и я пытаюсь понять, каков самый простой рекомендуемый способ развертывания nginx-ingress-controller, который позволит мне развертывать простые сервисы.Балансировщик нагрузки не предусмотрен.Я хочу, чтобы мой публичный IP-адрес MASTER являлся конечной точкой для моих услуг.

look-up

Github k8s ingress-nginx предлагает NodePort сервис в качестве«обязательный» шаг, которого, кажется, недостаточно для того, чтобы он работал вместе с ingress_controller .

от kubespray. Мне удалось заставить его работать, форсируя тип сервиса LoadBalancer и устанавливая значение externalIP в качестве MASTER.общедоступный IP-адрес в nginx-ingress-controller через kubectl edit svc, но, похоже, он не является правильным решением из-за отсутствия самого балансировщика нагрузки.

Аналогичные результаты с использованием таблицы управления:

helm install -n ingress-nginx stable/nginx-ingress --set controller.service.externalIPs[0]="MASTER PUBLIC IP"

1 Ответ

1 голос
/ 07 марта 2019

Мне удалось заставить его работать, форсируя тип сервиса LoadBalancer и устанавливая значение externalIP в качестве публичного IP-адреса MASTER в nginx-ingress-controller с помощью kubectl edit svc, но это кажется неправильным решением из-за отсутствия самого балансировщика нагрузки. .

Правильно, это не то, для чего предназначен LoadBalancer . Он предназначен для предоставления балансировщиков нагрузки с облачными провайдерами, такими как AWS, GCP или Azure, или балансировщиком нагрузки, который имеет некоторый API, чтобы kube-controller-manager мог взаимодействовать с ним. Если вы посмотрите журналы вашего kube-controller-manager, вы должны увидеть некоторые ошибки. То, как вы заставили это работать, это, очевидно, хак, но я полагаю, это работает.

Стандартный способ реализовать это - просто использовать службу NodePort и иметь любой прокси / балансировщик нагрузки (например, nginx или haproxy) на вашем ведущем устройстве для отправки трафика на NodePorts. Обратите внимание, что я не рекомендую ведущему также предоставлять ваши службы, так как он уже обрабатывает некоторые критические модули Kubernetes, такие как kube-controller-manager, kube-apiserver, kube-scheduler и т. Д.

Единственное исключение - MetalLB , которое можно использовать с типом службы LoadBalancer. Имейте в виду, что на момент написания этой статьи проект находится на ранней стадии.

...