【问题标题】:kubernetes vs openshift (routes and services)kubernetes vs openshift(路由和服务)
【发布时间】:2020-10-02 20:20:12
【问题描述】:

我是 kubernetes 和 openshift 的新手(来自 docker swarm world),我在处理一些 kubernetes 和 openshift 文档时遇到了问题,尤其是与 route服务 相关的文档>。我正在寻找如何在外部公开一组容器的副本,我发现kubernetes documentation 使用服务来公开 pod 而openshift uses routes。谁能给我解释一下区别?

【问题讨论】:

  • 两者都使用服务来平衡对 Pod 的请求。为了公开服务,Kubernetes 使用 Ingresses,而 Openshift 使用路由。

标签: kubernetes openshift


【解决方案1】:

使用的工具只有细微的差别。 OpenShift 是一个 Kubernetes 发行版,这意味着它是一个自以为是的预选组件的集合。因此对于 Ingress,OpenShift 使用 HAProxy 将 (HTTP) 流量获取到集群中。其他 Kubernetes 发行版可能使用 NGINX Ingress Controller 或类似的东西。

所以Services 用于对集群内的流量进行负载均衡。因此,当您创建 ReplicaSet 时,您将运行多个 Pod。要与这些 Pod “对话”,您通常会创建一个 ServiceService 将在您的 Pod 之间平均分配流量。

因此,为了从外部获取 HTTP(S) 流量到您的 Service,OpenShift 使用 Routes(在其他 Kubernetes 发行版中为 Ingress):

                                            +-----+
                                        +-->+ Pod |
           +-------+       +---------+  |   +-----+
Traffic--->+ Route +------>+ Service +--+-->+ Pod |
           +-------+       +---------+  |   +-----+
                                        +-->+ Pod |
                                            +-----+

因此,要将您的应用程序公开给外部世界,您通常使用oc create service 创建一个内部Service,然后使用oc expose 创建一个Route

# Create a new ClusterIP service named myservice
oc create service clusterip myservice --tcp=8080:8080
oc expose service myservice

【讨论】:

  • 当您使用路由或入口时,它会跳过 kubernetes 服务部分并直接将流量发送到 pod IP
【解决方案2】:

"Routes"in OCP 不与 K8S"Services" 比较,但与 K8S"Ingress" 比较

RoutesIngressis here 之间的比较

关于如何在集群外的OCP中公开“服务”is here的文档

【讨论】:

    【解决方案3】:

    早在 Kubernetes 提出 Ingress 之前,Red Hat 就需要为在 OpenShift 上运行的容器提供自动反向代理解决方案。所以现在在 OpenShift 中我们有一个 Route 对象,它的工作与 Kubernetes 中的 Ingress 几乎相同。主要区别在于路由是由良好的旧 HAproxy 实现的,可以用基于 F5 BIG-IP 的商业解决方案代替。然而,在 Kubernetes 上,您有更多选择,因为 Ingress 是一个由多个服务器实现的接口,从最流行的 nginx、traefik、AWS ELB/ALB、GCE、Kong 以及其他包括 HAproxy 开始。

    那么你可能会问哪个更好?就个人而言,我认为 OpenShift 中的 HAproxy 更加成熟,尽管没有一些 Ingress 实现那么多的功能。然而,在 Kubernetes 上,您可以使用不同的增强功能——我最喜欢的是与 cert-manager 的集成,它允许您自动管理 SSL 证书。不再需要手动操作来颁发和更新证书,此外,由于与 Letsencrypt 的集成,您可以免费使用受信任的 CA!

    作为一个有趣的事实,我想提一下,从 OpenShift 3.10 开始,Kubernetes Ingress 对象被 OpenShift 识别,并由……路由器翻译/实现。这是朝着兼容为 Kubernetes 准备的配置迈出的一大步,现在无需任何修改即可在 OpenShift 上启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 2018-10-29
      • 1970-01-01
      • 2020-03-13
      • 1970-01-01
      • 2017-06-06
      相关资源
      最近更新 更多