Kubernetes:谁首先是负载均衡器或入口

Kubernetes: Who is first a loadbalancer or ingress

问题很简单,但我无法完全弄清楚请求到达 kubernetes 系统时遵循哪些步骤。

  1. 谁首先处理收到的请求? Ingress ControllerLoadBalancerClusterIP...

所以,我知道有几种方法可以使 pods 可以从外部访问:

  1. 正在创建 NodePort 服务。
  2. 正在创建 LoadBalancer 服务。
  3. 正在创建 Ingress 规则。

这里有一些与最佳实践或强制性事实相关的问题?

  1. Ingress前面一个ClusterIP Service是强制的吗?

    1.1 我可以或不应该在 NodePortLoadBalancer 服务前创建一个 Ingress 吗?

  2. Ingress ControllersLoadBalancer Services?我的意思是,traefik 或其他 Ingress Controllers 是否都部署为 LoadBalancer 服务?

误解源于我在那里找到的几篇文章:

  1. image here:似乎 LoadBalancer 位于 Ingress Controllers 的第一个。
  2. image here: 好像IngressLoadBalancer.
  3. 前面

以上问题源于尝试向外部公开一个 mongodb 复制集。

  1. 我为每个节点创建了一个 LoadBalancer。这是正确的吗?
  2. 我想使用我的 Ingress Controller 为那些 LoadBalancer 创建一个域。这可能吗?
  3. 在无头服务之前创建 Ingress 是否有意义?

Ingress is in front of a ClusterIP Service mandatory?

如果您希望该服务可从外部访问,那么您将需要一个可从外部访问的服务。这可以是 LoadBalancer 服务或 Ingress。群集外无法访问 ClusterIP 服务。

Could or shouldn't I create an Ingress in front of a NodePort or a LoadBalancer service?

可以在 NodePort 或 LoadBalancer 前面创建一个 Ingress,但是在 LoadBalancer 前面创建一个 Ingress 没有意义,除非您想要两个不同的端点来访问相同的服务(LoadBalancer 将获得一个 IP,Ingress Controller 自己的 LoadBalancer 将获得另一个 IP)。但是,使用 Ingress 将允许您拥有其他功能,例如 SSL 证书,这是标准 LoadBalancer 服务资源(通常)不提供的

Ingress Controllers are LoadBalancer Services? I mean, traefik or other Ingress Controllers are all of them deployed as LoadBalancer services?

正确。入口控制器为进入集群的流量打开端点,然后使用您在集群中创建的入口资源来确定如何以及将流量路由到何处。

端点是一个可公开访问的端点(除非您将其配置为内部负载均衡器,在这种情况下,只有您公司网络中的机器才能访问它)。

控制器通常会更新集群中的入口资源,因此您将看到属于入口的负载均衡器的 IP