У нас есть частный кластер 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
Спасибо за ответ tim. Когда вы говорите «этот порт на любом узле» - вы имеете в виду точку LB на * всех * узлах? то что произойдет, если узел, который получает трафик, не выполняет эту конкретную услугу? будет ли он использовать kube-proxy для перенаправления на правильный узел? – DrGecko
Извините, что «этот порт» означает nodePort, который был выделен для вашего служебного порта. Это будет новый номер порта, который мы выделяем внутренне (чтобы вы могли иметь одинаковый номер на каждой машине). Это будет ловушка в kube-прокси и будет перенаправляться на службу независимо от того, какой узел. –
много спасибо tim (и извините за очень поздний ответ). Мы достигли этого, установив статический номер NodePort в файле конфигурации RC 'type: NodePort'' nodePort: 30222'. Затем мы указали haproxy на два узла (на порту 30222), чтобы обеспечить высокую доступность. – DrGecko