2015-01-13 2 views
1

Я играл немного с Google Cloud и контейнерной Engine, но я не могу получить мой VM, чтобы получить доступ к своему kubernetes «Сервис»Может ли моя виртуальная машина напрямую обращаться к «сервисам» в движке контейнера google?

Моему сценария: У меня есть Jenkins VM развернутый в двигателе Compute (Everthing является сеть по умолчанию). Затем я развернул кластер контейнеров, и я запустил реестр докеров (с файлом pod) и использовал «сервис» перед пакетом. Я могу получить доступ к реестру докеров очень хорошо со всех узлов кластера, а мастер просто отлично. Я также попытался создать внешний балансировщик нагрузки, чтобы реестр докеров был общедоступным. Все работает нормально.

Однако, я не хочу, чтобы реестр был общедоступным. Я просто хочу, чтобы моя Jenkins VM могла получить доступ к сервису реестра docker в кластере контейнеров. Но это не работает. Похоже, что они находятся в другой подсети. Jenkins имеет IP 10.240.126.57, а служба-докер-реестр в кластере контейнеров имеет 10.131.249.127.

Каков наилучший способ достичь этого? Я играл с «Маршрутами», но по какой-то причине я неспособен заставить это работать. Sidenote: все виртуальные машины могут пинговать весь контейнер и наоборот, но я просто не могу получить доступ к «IP-адресам службы контейнеров».

ответ

1

Try:

gcloud compute routes create svc-fwd-1 --destination-range 10.131.240.0/20 --next-hop-instance k8s-<clusterName>-node-1 --next-hop-instance-zone <zone>

(замена с именем кластера, и с зоной кластера в)

  • GCE виртуальные машины приводятся частные IP-адреса в CIDR сети диапазон (10.240.0.0/16 для сети по умолчанию).

  • Коды GKE получают частные IP-адреса в диапазоне CIDR контейнера кластера (10.128.0.0/14 в вашем случае).

  • Услуги GKE предоставляются частным IP-адресам в диапазоне CIDR кластера (10.131.240.0/20 в вашем случае).

GKE создает GCE маршрутов, чтобы получить трафик на правильные стручки, но ничего, чтобы разоблачить службы из-за пределы кластера не добавлять.

Маршрут GCE выше перенаправляет любой трафик на 10.131.240.0/20 в сеть по умолчанию на узел-1 вашего кластера. Прокси-сервер службы, работающий там, позаботится о получении трафика на модуль, который реализует эту услугу. Если вы хотите, вы даже можете добавить маршрут для каждого из ваших gke-узлов, чтобы сбалансировать трафик между всеми прокси-серверами службы.

Примечание: Я действительно не пробовал это, поэтому дайте мне знать, если это сработает! :)

+0

Отлично работает! Добавил его для всех узлов кластера, и они, похоже, говорят :). – florianrosenberg

+0

Я думаю, что говорил слишком быстро. Теперь я попытался открыть док-реестр в качестве службы, и когда я выдвигаюсь от Дженкинса, я получаю частые таймауты. Я не могу нажать полное изображение без ошибок. Не знаю, как отлаживать. Нажатие изнутри 10.240.0.0/16, похоже, работает нормально. – florianrosenberg

+0

Хм. Я ничего не знаю о том, как оттолкнуться от Дженкинса, но я предполагаю, что ему не нравится, что реестр отвечает от другого IP-адреса, чем тот, который он отправляет. –

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