OpenShift:使用NodePort进行外部访问

时间:2015-12-07 03:27:20

标签: linux devops openshift-origin

我正在尝试使用单个主设备和单节点设置的Openshift v3。 我为ruby hello openshift安装了examples / sample-app,pod和服务已启动。当我尝试使用NodePort或LoadBalancer选项启用对此应用程序前端的外部访问时,我会继续如下所示:

[root@openshift-master~]# curl openshift-node.tidalsoft:31597
curl: (7) Failed connect to openshift-node.tidalsoft:31597; No route to host

[root@openshift-master~]# oc describe service frontend
Name:   frontend
Namespace:  test
Labels: template=application-template-stibuild
Selector:   name=frontend
Type:   NodePort
IP: 172.30.252.16
Port:   web 5432/TCP
NodePort:   web 31597/TCP
Endpoints:  10.1.0.10:8080,10.1.0.13:8080
Session Affinity:   None
No events.

当我检查节点上的规则时:

[root@openshift-node~]# iptables -t nat -L | grep 31597
REDIRECT   tcp  --  anywhere             anywhere             /* test/frontend:web */ tcp dpt:31597 redir ports 39433
DNAT       tcp  --  anywhere             anywhere             /* test/frontend:web */ tcp dpt:31597 to:10.88.102.48:39433

因此我添加了允许重定向端口39433的规则

[root@openshift-node~]# iptables -I OS_FIREWALL_ALLOW -p tcp -m tcp --dport 39433 -j ACCEPT

添加此规则后,外部访问开始工作。我现在感到困惑......这是外部访问需要的东西还是我在这里缺少任何配置?

任何建议都会很棒。

2 个答案:

答案 0 :(得分:0)

要启用对某些服务的外部(群集外)访问,最好使用本机openhift功能 - route

以下是有关adding route support to your openshift cluster所需步骤的openshift文档的信息。

答案 1 :(得分:0)

这是Ansible安装程序中的一个错误,OpenShift SDN也存在一个已知问题(它会覆盖入站规则)。两者都有待解决。