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-адресов не работает.
Я бы очень признателен за любые советы, подсказки и указатели, которые помогут устранить неполадки и устранить эту проблему.
Благодарим за помощь.