Гептио-контур наружный ip на голый металл
Я настроил кластер kubernetes с помощью kubespray, и теперь я пытаюсь следовать этому руководству
root@node1 ~ # kubectl get -n heptio-contour service contour -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
contour LoadBalancer 10.233.55.94 <pending> 80:32414/TCP,443:30149/TCP 42m app=contour
Похоже на то EXTERNAL-IP
в ожидании, потому что я нахожусь на голой металлической машине (не AWS/GKE и т. д.)
Что мне нужно сделать, чтобы получить там внешний ip?
1 ответ
Kubernetes предлагает три способа предоставления услуги:
1) L4 LoadBalancer: доступно только для облачных провайдеров, таких как GCE и AWS
2) Предоставить сервис через NodePort: директива NodePort выделяет порт на каждом рабочем узле, который передает трафик соответствующему модулю.
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://github.com/kubernetes/contrib/tree/master/keepalived-vip
и не рекомендуется:
http://www.linuxvirtualserver.org/software/ipvs.html
Обратите внимание, что в федеративных кластерах (более одного чистого кластера Kubernetes) требуется для экспорта IP-адреса каждой физической машины центральному провайдеру API, и, вероятно, на него не распространяются ссылки, которые я вам предоставил.