kubernetes - 强制 Kubernetes 在所有 Pod 上分发请求
问题描述
对于我的一个项目,我正在 Kubernetes 上部署应用程序。
简而言之,该应用程序(在我的开发机器中)部署在 Node.js 内的 8 个 pod(1 个/cpu 核心)上。每个 pod 一次可以处理一个请求(我用线程池强制限制 - CPU 是这里的瓶颈)。
我想强制 Kubernetes 负载均衡器在 Pod “忙”时将传入请求发送到下一个 Pod。
你们中有人知道如何实现这一目标吗?
解决方案
您可以在 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
如果您想做比这更复杂的路由-那么我会考虑将服务网格作为一种选择
推荐阅读
- powershell - 如何在 PowerShell 中对唯一值进行分组和选择?
- javascript - 仅在必要时如何在 JavaScript 中舍入数字
- pandas - 按每个 ID 的观察频率过滤,每个月和每天 - Pandas
- genexus - Genexus File.Exists() 找不到我的图片
- python - 白页为什么单击新创建的按钮
- asp.net-core - 在 VS Code 中调试类库
- java - 结合@PathVariable 和@RequestBody
- r - 瀑布图
- amazon-s3 - 我在 CDN 服务器 (Amazon S3) 上上传 CSS 和字体文件并发现这些错误。请建议我能做些什么来解决它
- ios - SwiftUI 代码在 iphone 中运行,但在 ipad 中出现黑屏?