2015-09-17 4 views
1

У нас есть частный кластер kubernetes, работающий на baremetal CoreOS кластере (с Flannel для сетевого наложения) с частными адресами.Сделать сервис Kubernetes доступным наружу

К началу этого кластера мы запускаем кубинец ReplicationController и Service для поиска elastics. Чтобы включить балансировку нагрузки, эта служба имеет определенный ClusterIP, который также является частным IP-адресом: 10.99.44.10 (но в другом диапазоне для IP-адресов узлов).

Проблема, с которой мы сталкиваемся, состоит в том, что мы хотим, чтобы с этим подключением было установлено соединение: Внешняя ссылка кластер. Насколько мы можем сказать, этот частный IP не связан с другими машинами в нашей частной сети ...

Как мы можем достичь этого?


IP-адреса узлов являются:

node 1 - 192.168.77.102 
node 2 - 192.168.77.103 

.

и это, как служба, RC и Pod появляются с kubectl:

NAME   LABELS   SELECTOR    IP(S)   PORT(S) 
elasticsearch <none>   app=elasticsearch  10.99.44.10  9200/TCP 


CONTROLLER  CONTAINER(S) IMAGE(S)  SELECTOR   REPLICAS 
elasticsearch elasticsearch elasticsearch app=elasticsearch 1 


NAME      READY  STATUS RESTARTS AGE 
elasticsearch-swpy1   1/1  Running 0   26m 

ответ

1

Вы должны установить type вашей службы.

http://docs.k8s.io/v1.0/user-guide/services.html#external-services

Если вы на голый металл, не имеют LoadBalancer интегрированы. Вы можете использовать NodePort для получения порта на каждой виртуальной машине, а затем настроить все, что вы используете для балансировки нагрузки, чтобы нацелиться на этот порт на любом узле.

+0

Спасибо за ответ tim. Когда вы говорите «этот порт на любом узле» - вы имеете в виду точку LB на * всех * узлах? то что произойдет, если узел, который получает трафик, не выполняет эту конкретную услугу? будет ли он использовать kube-proxy для перенаправления на правильный узел? – DrGecko

+0

Извините, что «этот порт» означает nodePort, который был выделен для вашего служебного порта. Это будет новый номер порта, который мы выделяем внутренне (чтобы вы могли иметь одинаковый номер на каждой машине). Это будет ловушка в kube-прокси и будет перенаправляться на службу независимо от того, какой узел. –

+0

много спасибо tim (и извините за очень поздний ответ). Мы достигли этого, установив статический номер NodePort в файле конфигурации RC 'type: NodePort'' nodePort: 30222'. Затем мы указали haproxy на два узла (на порту 30222), чтобы обеспечить высокую доступность. – DrGecko

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

  • Нет связанных вопросов^_^