首页 > 解决方案 > 强制 Kubernetes 在所有 Pod 上分发请求

问题描述

对于我的一个项目,我正在 Kubernetes 上部署应用程序。

简而言之,该应用程序(在我的开发机器中)部署在 Node.js 内的 8 个 pod(1 个/cpu 核心)上。每个 pod 一次可以处理一个请求(我用线程池强制限制 - CPU 是这里的瓶颈)。

我想强制 Kubernetes 负载均衡器在 Pod “忙”时将传入请求发送到下一个 Pod。

你们中有人知道如何实现这一目标吗?

标签: kubernetesload-balancing

解决方案


您可以在 IPVS 模式下运行 Kube-proxy,该模式允许基于几种不同算法的服务路由。您可以在此处的文档此博客中找到更多信息。来自博客:

  • 您将需要使用标志运行 Kube 代理--proxy-mode=ipvs
  • 并添加一个标志--ipvs-scheduler以选择其中一个选项

    rr: round-robin

    lc: least connection

    dh: destination hashing

    sh: source hashing

    sed: shortest expected delay

    nq: never queue

作为先决条件,节点需要安装以下模块:

ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4

如果您想做比这更复杂的路由-那么我会考虑将服务网格作为一种选择


推荐阅读