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