K8S baremetal nginx-ингресс-контроллер

ОС: RHEL7 | Версия k8s: 1.12/13 | кубеспрей | оголенный метал

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

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

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

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

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

1 ответ

Я смог заставить его работать, форсируя тип сервиса 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. Имейте в виду, что на момент написания этой статьи проект находится на ранней стадии.

Другие вопросы по тегам