【问题标题】:Load balancing first or ingress rule matching first?先负载均衡还是先匹配入口规则?
【发布时间】:2021-09-26 13:33:16
【问题描述】:

从 k8s 文档以及我能找到的其他答案中,它在入口之前显示负载均衡器 (LB)。但是我很困惑,在匹配入口规则后,仍然可以有多个容器支持所选服务。 LB 是否会在此处再次发生以选择要路由到的容器?

https://kubernetes.io/docs/concepts/services-networking/ingress/#what-is-ingress

【问题讨论】:

    标签: kubernetes load-balancing kubernetes-ingress


    【解决方案1】:

    从您发布的图片中可以看出,Ingress 选择了一个服务(基于规则)而不是直接选择一个 Pod。然后,Service 后面可能(也可能不)有多个 Pod。

    Kubernetes 的默认服务类型称为ClusterIP。它接收一个虚拟 IP,然后将请求重定向到后面服务的 Pod 之一。在集群的每个节点上,运行一个 kube-proxy,它负责实现这个虚拟 ip 机制。

    所以,是的,负载平衡会在选择服务后再次发生。如果该服务选择了多个 Pod。选择哪个后端(Pod)取决于kube-proxy 的配置方式,通常是循环或随机的。


    还有一种方法可以在没有虚拟 IP 的情况下创建服务。此类服务称为无头服务,直接使用 DNS 将请求重定向到不同的后端。但它们不是默认设置,因为使用代理比尝试使用 DNS 进行负载平衡更好。这可能会产生副作用(取决于谁提出要求)


    您可以在docs 中找到很多关于服务如何工作的信息。

    【讨论】:

    • 这实际上是不正确的。虽然它可能是,但我不知道任何不跳过 kube-proxy 步骤的入口控制器。他们直接抓取 Endpoint 对象并使用它来构建配置。有些,比如 ingress-nginx,确实提供了一个配置标志来添加额外的跃点,但默认为没有,因为它节省了延迟。
    猜你喜欢
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 2018-05-02
    • 1970-01-01
    • 2017-05-20
    • 2021-12-07
    相关资源
    最近更新 更多