2017-01-23 105 views
0

我设置的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 HostnameCluster IP地址创建一个服务。在“群集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-keycloak'数据库。

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

我已经尝试安装其他服务,如Web服务器进行测试,但它似乎没有Cluster Hostnames或IP地址工作。

我真的很感激任何提示,提示和指示,以帮助排除故障并解决此问题。

谢谢你的帮助。

回答

0

在你的情况,我看到命名空间是authenticated-collections,但在你使用的env变量authenticatedcollections

我想应该是这样的:

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

难道仅仅是在问题或错误配置一个错字? 另外,我假设两个豆荚在同一个项目中运行。

相关问题