Openshift:无法通过群集主机名

时间:2017-01-23 01:34:02

标签: openshift-origin openshift-client-tools

我在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 HostnameCluster 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

我验证了并且在第二个容器中正确设置了上述环境变量。 问题是第二项服务无法连接到&postffres-keycloak'第一个容器中的数据库。

经过进一步调查,我发现虽然我可以ping通POD,群集IP和群集主机名,但psql客户端只有在我直接使用pod的IP地址时才能连接。到目前为止,我的结论是DNS解析工作正常 - 只是服务配置看起来有点搞砸了。似乎服务代理不将请求转发到容器。 另外,我不确定上述摘录中Endpoint计数(零)是否是导致问题的原因?我的理解是Endpoints仅在从集群外部访问服务时使用。

我已尝试安装其他服务(如网络服务器)进行测试,但似乎Cluster Hostnames或IP地址都不起作用。

我非常感谢帮助解决问题并解决此问题的任何提示,提示和指示。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在您的情况下,我看到命名空间为authenticated-collections,但在使用authenticatedcollections的env变量中。

我认为它应该是这样的:

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

这只是一个错字或错误配置? 另外,我假设两个pod都运行在同一个项目中。