OpenShift 为什么需要 Router 和 Route?

参与5

1同行回答

zzhengleizzhenglei技术经理某保险
顾名思义,Router 是路由器,Route 是路由器中配置的路由。OpenShift 中的这两个概念是为了解决从集群外部(就是从除了集群节点以外的其它地方)访问服务的需求。不晓得为什么OpenShift 要将Kubernetes 中的 Ingress 改为 Router,我倒是觉得 Ingress 名字更贴切。从外部通过 rout...显示全部

顾名思义,Router 是路由器,Route 是路由器中配置的路由。OpenShift 中的这两个概念是为了解决从集群外部(就是从除了集群节点以外的其它地方)访问服务的需求。不晓得为什么OpenShift 要将Kubernetes 中的 Ingress 改为 Router,我倒是觉得 Ingress 名字更贴切。

从外部通过 router 和从内部通过 servide 访问 pod 中的应用两个过程的简单的示意图如下:

上图中,某个应用的三个pod 分别位于 node1,node2 和 node3 上。OpenShift 中有三层IP地址概念:

pod 自己的 IP 地址,可以类比为 OpenStack 中虚拟机的固定IP。它只有在集群内才有意义。
service 的 IP 地址。Service 通常有 ClusterIP,这也是一种集群内部的IP 地址。
应用的外部 IP 地址,可以类比为OpenStack 中的浮动IP,或者IDC IP(和浮动IP 之间是NAT 映射关系)。

因此,要从集群外部访问 pod 中的应用,无非两种方式:
一种是利用一个代理(proxy),把外部 IP 地址转化为后端的 Pod IP 地址。这就是 OpenShift router/route 的思路。OpenShift 中的 router 服务,是一个运行在特定节点(通常是基础架构节点)上的集群基础服务,由集群管理员负责创建和管理。它可以有多个副本(pod)。router 中可有多个 route,每个 route 能通过外部HTTP 请求的域名找出其后端的 pod 列表,并进行网络包的转发。也就是将pod 中的应用暴露到外网域名,使得用户可以外面通过域名访问到应用。这实际上是一种七层负载均衡器。OpenShift 默认采用 HAProxy 来实现,当然也支持其它实现,比如 F5.
另一种是将服务直接暴露到集群外。这种方式具体会在『服务 Service』那一篇文章中详细解释。

收起
保险 · 2020-02-05
浏览1485

提问者

hwrr
系统架构师某银行
擅长领域: 云计算容器云容器

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2020-02-05
  • 关注会员:2 人
  • 问题浏览:1945
  • 最近回答:2020-02-05
  • X社区推广