【问题标题】:How setup kube-proxy for balance requests between Pods?如何为 Pod 之间的平衡请求设置 kube-proxy?
【发布时间】:2022-08-10 20:13:16
【问题描述】:
我有一个带有 2 个节点的 k8s 集群。我有一个 ClusterIP 服务,其 Deployment 链接到一个自动扩展一组 Pod 的 HPA。我想在多个线程中向服务发送许多请求,并在当前可用的 Pod 数量中平衡请求。
在开始时,我使用默认的 kube-proxy 模式 IPTABLES,但是将请求随机分配给 Pod,其中一些 Pod 工作更多而另一些更少,增加了请求的响应时间,并且平均 CPU 百分比不高用于添加新 Pod。
比我使用“sed”调度程序切换到 IPVS 但平衡不一样,因为每个线程都被分配给一个 Pod 并且在最后创建的 Pod 不工作时以最大值工作。
你能给我一些提示,告诉我如何才能达到我的目标吗?
标签:
kubernetes
hpa
kube-proxy
ipvs
【解决方案1】:
Kube-proxy 不支持将虚拟 IP 作为目标
Kubernetes 集群中的每个节点都运行一个 kube-proxy。 kube-proxy 负责为非 ExternalName 类型的服务实现一种形式的虚拟 IP
kube-proxy 可以在三种不同的模式下运行:
- iptables(默认模式)
- Ipv
- 用户空间(“传统”模式,不再推荐)
虽然 iptables 模式对于许多集群和工作负载来说完全没问题,但当服务数量很重要(超过 1,000 个)时,ipvs 会很有用。事实上,由于 iptables 规则是按顺序读取的,如果集群中存在许多服务,它的使用会影响路由性能。
您可以查看此document 进行配置。