kubernetes 与 openshift(路由和服务)

tky*_*ass 4 openshift kubernetes

我是 kubernetes 和 openshift 的新手(来自 docker swarm world),我在处理一些 kubernetes 和 openshift 文档时遇到了问题,尤其是与routeservices相关的文档。我一直在寻找如何在外部公开容器的副本集,我发现kubernetes 文档使用服务来公开 pod,而openshift 使用 routes。谁能向我解释这些差异?

Sim*_* K. 6

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

因此Services用于负载平衡集群内的流量。因此,当您创建一个 时ReplicaSet,您将有多个 Pod 正在运行。要与这些 Pod“交谈”,您通常会创建一个Service. 这Service将在您的 Pod 之间平均分配流量。

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

                                            +-----+
                                        +-->+ Pod |
           +-------+       +---------+  |   +-----+
Traffic--->+ Route +------>+ Service +--+-->+ Pod |
           +-------+       +---------+  |   +-----+
                                        +-->+ Pod |
                                            +-----+
Run Code Online (Sandbox Code Playgroud)

因此,要将您的应用程序暴露给外部世界,您通常创建一个内部Serviceusingoc create service然后创建一个Routeusing oc expose

# Create a new ClusterIP service named myservice
oc create service clusterip myservice --tcp=8080:8080
oc expose service myservice
Run Code Online (Sandbox Code Playgroud)