【问题标题】:Load balancing on same server在同一台服务器上进行负载均衡
【发布时间】:2019-06-20 18:45:35
【问题描述】:

我研究了 Kubernetes,实际上看到他们在同一个节点上做负载均衡器。所以如果我没记错的话,一个节点意味着一台服务器机器,那么如果在同一台服务器机器上做负载均衡器有什么好处。因为它将使用相同的 CPU 和 RAM 来处理请求。首先,我认为负载平衡将在单独的机器上进行以共享 CPU 和 RAM 资源。所以我想知道在同一台服务器上做负载平衡的意义。

【问题讨论】:

    标签: networking server kubernetes


    【解决方案1】:

    如果你可以在一个节点上做,并不意味着你应该做,特别是在生产环境中。

    • 生产集群至少有 3 或 5 个节点
    • kubernetes 会将副本分布在集群节点上以平衡节点工作负载,pod 最终位于不同的节点上
    • 您还可以配置您的 pod 位于哪些节点上
    • 使用高级调度、pod 亲和性和反亲和性
    • 您也可以插入自己的 schedular ,这将不允许将同一应用的副本 pod 放置在同一节点上
    • 然后您定义一个服务以在不同节点上的 pod 之间进行负载平衡
    • kube 代理将完成剩下的工作

    这是一个有用的阅读:

    https://itnext.io/keep-you-kubernetes-cluster-balanced-the-secret-to-high-availability-17edf60d9cb7

    因此,您通常需要选择您的可用性级别 舒服。例如,如果您在三个节点中运行三个节点 单独的可用区,您可以选择对 单节点故障。丢失两个节点可能会带来您的应用程序 下降,但失去两个单独可用的数据中心的可能性 区域很低。

    底线是没有通用的方法;只有你可以 了解什么对您的业务有效以及您认为的风险水平 可以接受。

    【讨论】:

      【解决方案2】:

      我猜你的意思是服务如何进行自动负载平衡。想象一下,您的一个节点上有一个包含 2 个副本的部署和一个服务。 Pod 的流量通过 Service,所以如果这不是负载平衡,那么一切都将流向一个 Pod,而另一个 Pod 将一无所获。然后,您可以通过均匀分布来处理更多负载,并且仍然有信心在一个 Pod 死亡时仍会提供流量。

      您还可以对从外部进入集群的流量进行负载平衡,以便集群的入口点并不总是同一个节点。但这是不同级别的负载平衡。即使只有一个节点,您仍然可以对集群内的服务进行负载平衡。请参阅Clarify Ingress load balancer 了解外部入口点的负载平衡。

      【讨论】:

      • 感谢您的澄清,所以在一个节点上进行负载平衡的重点是在一个服务关闭另一个服务时保护服务关闭。所以它不能处理更多的服务请求。因为它在同一台机器上使用相同的 cpu 和 ram。它仅有助于保护服务器免受停机或中断。我理解正确吗?
      • 您可以垂直扩展并将所有 CPU 和内存分配给一个 Pod。尽管它可能由于资源限制以外的原因而失败,因此您可能希望避免单点故障。它可能有内存泄漏或微妙的错误。 Kubernetes 是关于通过副本进行水平扩展的。它是一个容器编排器。在其中,每个 Pod 都获得了一定的隔离以及它自己的 CPU 和 RAM 的最小和最大分配。但在实践中,编排是关于拥有大量容器的。如果你真的只想在一台服务器上运行一个容器,那么你不会从 k8s 中受益
      • 谢谢你的好意。我假设如果一台机器可以处理 1000 个请求。如果我运行 2 个相同的容器。每个容器可以处理 500 个请求。但如果我运行一个容器,它可以处理 1000 个请求。我理解正确吗?分离的好处是如果另一个容器仍然可以处理请求。所以我想知道,如果我们想通过水平扩展进行负载平衡,通常我们应该在不同的节点上运行 pod 或副本
      • 是的,通常您希望拥有多个节点并将相同类型的 Pod 分布在节点周围以避免单点故障。这就是 Ijaz Ahmad Khan 在他的回答中所解释的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 2013-08-26
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多