Я устанавливаю среду OpenShift на своем Mac со следующими версиями:
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
. «Имя хоста кластера» в консоли администратора отображается как:
~ ❯❯❯ 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-keycloak в первом контейнере.
После дальнейшего расследования я обнаружил, что, хотя я могу пинговать POD, IP-адрес кластера и имена хостов кластера, клиент psql
может подключиться только в том случае, если я использую IP-адрес модуля напрямую. На данный момент я пришел к выводу, что разрешение DNS работает нормально - это просто конфигурация службы, которая кажется немного испорченной. Похоже, что прокси-сервер службы не пересылает запрос контейнерам. Кроме того, я не уверен, является ли счетчик Endpoint
(ноль) в приведенном выше фрагменте причиной проблемы? Насколько я понимаю, Endpoints
используются только тогда, когда доступ к службам осуществляется извне кластера.
Я пробовал установить для тестирования другие службы, например веб-сервер, но похоже, что ни один из Cluster Hostnames
или IP-адресов не работает.
Я был бы очень признателен за любые советы, подсказки и указатели, которые помогут найти и исправить эту проблему.
Спасибо за помощь.