2017-01-23 10 views
0

I настройки внешней среды OpenShift на моем Mac со следующими версиями:OpenShift: Не удается получить доступ службы по кластерной имени хоста

Mac OS Sierra, Version:10.12.2 (16C67) 
oc v1.5.0-alpha.2+e4b43ee 
kubernetes v1.5.2+43a9be4 
features: Basic-Auth 

Я был в состоянии получить версию для разработчиков работает, делая oc cluster up и дал developer пользователь с правами администратора прав. Затем я добавил postgres контейнер, выполнив следующую команду:

oc new-app https://github.com/MojoJojo/authenticated-payments.git --name="postgres-keycloak" -l name="postgres-keycloak" --context-dir=postgres-keycloak 

Команда работала как ожидалось, и создала сервис, с Cluster Hostname и Cluster IP адресом. «Cluster HOSTNAME` в консоли администратора отражает как:

~ ❯❯❯ oc describe service/postgres-keycloak 
Name:   postgres-keycloak 
Namespace:  authenticated-collections 
Labels:   app=postgres-keycloak 
       name=postgres-keycloak 
Selector:  app=postgres-keycloak,deploymentconfig=postgres-keycloak,name=postgres-keycloak 
Type:   ClusterIP 
IP:    172.30.123.160 
Port:   5432-tcp 5432/TCP 
Endpoints: 
Session Affinity: None 
No events. 


~ ❯❯❯ oc describe pods/postgres-keycloak-2-8r9n5                                          ⏎ 
Name:   postgres-keycloak-2-8r9n5 
Namespace:  authenticated-collections 
Security Policy: restricted 
Node:   192.168.65.2/192.168.65.2 
Start Time:  Mon, 23 Jan 2017 03:24:41 +0200 
Labels:   app=postgres-keycloak 
       deployment=postgres-keycloak-2 
       deploymentconfig=postgres-keycloak 
       name=postgres-keycloak 
Status:   Running 

Далее я создал еще один контейнер, как показано ниже:

oc new-app https://github.com/MojoJojo/authenticated-payments.git --name="jboss-keycloak" -l name="jboss-keycloak" --context-dir=jboss-keycloak 

выше репозиторий Git имеет Dockerfile, объявляющий следующие переменные среды:

POSTGRES_PORT_5432_TCP_ADDR=postgres-keycloak.authenticatedcollections.svc.cluster.local 

POSTGRES_PORT_5432_TCP_PORT=5432 

Я проверял, и указанные выше переменные окружения правильно установлены во втором контейнере. Проблема в том, что вторая служба не может подключиться к базе данных postgres-keyclayak в первом контейнере.

При дальнейшем исследовании я обнаружил, что, хотя я могу выполнять Ping POD, кластер IP и кластерные имена хостов, клиент psql может подключаться только в том случае, если я напрямую использую IP-адрес POD. До сих пор я пришел к выводу, что разрешение DNS работает нормально - это просто настройка сервиса, которая кажется немного испорченной. Похоже, что прокси-сервер службы не перенаправляет запрос в контейнеры. Кроме того, я не уверен, является ли счет Endpoint (ноль) в приведенном выше извлечении причиной проблемы? Я понимаю, что Endpoints используются только при обращении к службам извне кластера.

Я попытался установить другие службы, такие как веб-сервер для тестирования, но, похоже, ни один из Cluster Hostnames или IP-адресов не работает.

Я бы очень признателен за любые советы, подсказки и указатели, которые помогут устранить неполадки и устранить эту проблему.

Благодарим за помощь.

ответ

0

В вашем случае я вижу, что пространство имен равно authenticated-collections, но в переменной env вы использовали authenticatedcollections.

Я думаю, что это должно быть что-то вроде этого:

POSTGRES_PORT_5432_TCP_ADDR=postgres-keycloak.authenticated-collections.svc.cluster.local 

Является ли это просто опечатка в вопросе или некорректное? Кроме того, я предполагаю, что оба контейнера работают в одном проекте.

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

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