Kubernetes предлагает три способа предоставления услуги:
1) L4 LoadBalancer : доступно только для облачных провайдеров, таких как GCE и AWS
2) Предоставление сервиса через NodePort: Директива NodePort выделяет порт на каждом рабочем узле, который передает трафик на соответствующий Pod.
3) L7 Ingress: Ingress является выделенным балансировщиком нагрузки (например, nginx, HAProxy, traefik, vulcand), который перенаправляет входящий трафик HTTP / HTTPS на соответствующие конечные точки
Kubernetes не предлагает реализацию сетевых балансировщиков нагрузки (Услуги типаLoadBalancer) для кластеров «без металла».
Если вы не используете кластер Kubernetes на поддерживаемой платформе IaaS (GCP, AWS, Azure ...), LoadBalancers останется в состоянии «ожидания» независимо от того, в какое время они находилисьсоздал.
Причиной является отсутствие поддержки IP-маршрутизации между внешним миром и Kubernetes;по умолчанию не реализована передача зон DNS, используемых Ingress для выделения связи внутри кластера.
Существуют внешние проекты, которые предоставляют «голое железо» даже в режиме кластеров федерации, чтобы быть частью автономного или гибридного решения.
Это зависит от масштаба и зрелости проектов, которые у вас есть, поэтому начинать следует с выбора правильного балансировщика нагрузки или VIP поставщика:
https://github.com/google/metallb
https://docs.traefik.io/
https://github.com/kubernetes/contrib/tree/master/keepalived-vip
http://vulcand.github.io/
и устарело:
http://www.linuxvirtualserver.org/software/ipvs.html
Пожалуйстаобратите внимание, что в федеративных кластерах (более одного чистого кластера Kubernetes) требуется экспортировать IP-адрес каждой физической машины центральному провайдеру API, и, вероятно, он не охватывается ссылками, которые я вам предоставил.