【问题标题】:OpenShift :: How do we enable traffic into pod on a custom port (non-web / non-http)OpenShift :: 我们如何在自定义端口(非 Web / 非 http)上启用进入 pod 的流量
【发布时间】:2019-06-18 04:20:29
【问题描述】:

我们如何在自定义端口(非 Web / 非 http)上启用进入 pod 的流量。

例如考虑端口 12121。

我尝试通过路由暴露端口。 但无法从同一命名空间中的另一个 pod 访问此 pod。

OpenShift 是否支持此功能?

如果有人以前尝试过,请分享您是如何实现这一目标的。

谢谢。

【问题讨论】:

  • 你解决了这个问题吗?如果是这样,你能告诉我们你做了什么吗?谢谢。

标签: openshift openshift-origin openshift-client-tools openshift-enterprise


【解决方案1】:

您可以使用要添加的端口自定义现有的router,或者使用自定义的端口添加router。详情请参考Customizing the Router Service Ports

  • 自定义路由器
    oc adm router --replicas=0 --ports='12121:12121,443:443' 
    oc set env dc/router ROUTER_SERVICE_HTTP_PORT=12121  \
                         ROUTER_SERVICE_HTTPS_PORT=443
    oc scale dc/router --replicas=1

    iptables -A INPUT -p tcp --dport 12121 -j ACCEPT

【讨论】:

  • 感谢您的回复。我并不是要更改 HTTP 端口,我是在询问 NON-WEB / NON-HTTP 应用程序相关的查询。如果您对此方案有任何建议,请分享。再次感谢您。
【解决方案2】:

根据您要实现的目标,您有几个选择,但我不会为此使用 Route。

  • 如果您不关心端口号,则可以使用 NodePort 服务。 NodePorts 是集群管理员定义的一系列端口(默认为 30000-32767),可以分配给服务并在集群中的每个节点上公开,它适用于 TCP 和 UDP 流量。此示例指定要使用的 NodePort,但如果您不提供,服务控制器将分配一个可用的。
apiVersion: v1
kind: Service
metadata:
  name: mysql
  labels:
    name: mysql
spec:
  type: NodePort
  ports:
    - port: 3306
      nodePort: 30306
      name: http
  selector:
    name: mysql

OpenShift 文档:https://docs.openshift.com/container-platform/3.11/dev_guide/expose_service/expose_internal_ip_nodeport.html

如果您需要公开特定端口,那么您可以:

  • 使用 LoadBalancer 服务,该服务允许您公开负载平衡器 IP 上的端口。请注意,这需要使用可以使用的 IP 列表设置集群(这是主服务器上的配置),并且 IP 被路由到集群中的节点(这可以通过 OpenShift 的 ipfailover 自动化来实现)。
apiVersion: v1
kind: Service
metadata:
  name: egress-2 
spec:
  ports:
  - name: db
    port: 3306 
  loadBalancerIP:
  type: LoadBalancer 
  selector:
    name: mysql 

OpenShift 文档:https://docs.openshift.com/container-platform/3.11/dev_guide/expose_service/expose_internal_ip_load_balancer.html

  • 不太理想的是,您可以使用 hostport 并直接在运行 pod 的主机上公开端口,但这仅在您希望将流量路由到没有流量平衡的主机时才有效。这种方法违背了最佳做法,但可以作为最后的手段。
apiVersion: v1
kind: Pod
metadata:
  name: mysql
spec:
  containers:
  - image: mysql
    name: mysql
    ports:
    - name: mysql
      containerPort: 3306
      hostPort: 3306

【讨论】:

    猜你喜欢
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 2022-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多