【发布时间】:2019-08-22 08:43:40
【问题描述】:
对于我的一个项目,我正在 Kubernetes 上部署应用程序。
简而言之,该应用程序(在我的开发机器中)部署在一个 Node.js 内的 8 个 pod(1 个/cpu 核心)上。 每个 pod 一次可以处理一个请求(我用线程池强制限制 - CPU 是这里的瓶颈)。
我想强制 Kubernetes 负载均衡器在 Pod 处于“忙碌”状态时将传入请求发送到下一个 Pod。
你们中有人知道如何实现吗?
【问题讨论】:
对于我的一个项目,我正在 Kubernetes 上部署应用程序。
简而言之,该应用程序(在我的开发机器中)部署在一个 Node.js 内的 8 个 pod(1 个/cpu 核心)上。 每个 pod 一次可以处理一个请求(我用线程池强制限制 - CPU 是这里的瓶颈)。
我想强制 Kubernetes 负载均衡器在 Pod 处于“忙碌”状态时将传入请求发送到下一个 Pod。
你们中有人知道如何实现吗?
【问题讨论】:
您可以在 IPVS 模式下运行 Kube-proxy,该模式允许基于几种不同算法的服务路由。您可以在documentation here 和this blog 中找到更多信息。来自博客:
--proxy-mode=ipvs 的 Kube 代理
并添加标志--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
如果您想做比这更复杂的路由 - 那么我会考虑将服务网格作为一种选择
【讨论】: