2016-12-17 2 views
1

Я успешно создал кластер Kubernetes на моем хосте VMware, используя Rancher. У меня есть панель kubernetes-dashboard и может выполнять команды для кластера с помощью kubectl.Как открыть API Kubernetes для публичного IP-адреса?

Теперь я хочу развернуть свое приложение в кластере с помощью инструмента сборки SaaS (Distelli). Этот инструмент сборки должен подключиться к моему хосту с помощью сертификата клиента HTTPS, ключа клиента и сертификата кластера.

Однако, мой kubernetes API еще не открыт.

Это моя текущая конфигурация kubernetes службы:

$kubectl describe services kubernetes 
Name:   kubernetes 
Namespace:  default 
Labels:   component=apiserver 
      provider=kubernetes 
Selector:  <none> 
Type:   ClusterIP 
IP:   10.43.0.1 
Port:   https 443/TCP 
Endpoints:  10.42.173.175:6443 
Session Affinity: ClientIP 

Как мне сделать этот сервис доступен на внешний IP-адрес? Я попытался использовать входной loadbalancer для сервера, но он возвращает только 503 Service not available.

Любые идеи?

ответ

1

Вам необходимо иметь маршрут от общедоступного Интернета до сервера API. Это можно сделать, назначив публичный IP-адрес машине, на которой запущен сервер api, или же вы можете иметь прямой трафик балансировки нагрузки. Вы упомянули, что находитесь на VMWare, поэтому в зависимости от настройки сети может быть несколько разных путей.

0

Я еще не полностью понял это, потому что у меня есть некоторые вопросы, связанные с моей собственной реализацией этого (например, как я могу его масштабировать?). Но я так и сделал.

Во-первых, у вас, очевидно, есть домен, который называется «mywonderfulwebsite.com», и там у вас есть зона DNS, которую вы можете редактировать, добавьте запись «A» для mywonderfulwebsite.com и укажите адрес ip вашего кластер.

Теперь, какой IP-адрес интересен, поскольку Kubernetes накладывает на вас несколько узлов, по крайней мере один мастер и один сервер приложений. Поэтому в этом случае ip-адрес для использования - это IP-адрес сервера приложений. Это, кстати, почему я не уверен, как масштабировать это, потому что, если у меня есть 1 мастер + 10 узлов приложения, какой ip-адрес я использую сейчас? все они?

На узле приложения разверните узел ingress-nginx-controller, так как это ваш простой балансировщик нагрузки. Голый металл - это термин, который вы услышите много, в то время как поисковая система, в основном, у вас есть пустой сервер, на который вы вручную установили Kubernetes, а не как AWS, Azure или другие.

Как только вы установили входной контроллер, вы можете начать создавать ресурсы доступа, которые его используют. Так вот, когда у меня вначале была путаница, но теперь все ясно. Создание входа - это просто ресурс для развертывания приложения, но для него требуется либо LoadBalancer, либо Ingress Controller для передачи запросов из внешнего мира в ваш кластер.

После того, как вы создадите другой вход, любые запросы из этого домена будут переданы вместе с DNS-сервером на ваш узел приложения, он перейдет в вход-nginx-контроллер, который попытается сопоставить его с любыми существующими входными ресурсами и когда он найдет его, он будет сконфигурирован с помощью бэкэнд для ресурса службы, созданного для вашего приложения и бинго! Ваше приложение получит запрос.

У меня есть github, который может вам помочь: http://github.com/christhomas/kubernetes-cluster

Смежные вопросы