我是 k8s 的新手,我对 ingress 和 IPVS 的用例有疑问。
根据我在互联网上的几篇文章中读到的内容,入口用于对 Pod 的南北流量进行负载平衡。那里有几种入口解决方案,例如 traefic-nginx-haproxy 等。我的问题是,IPVS 传输层负载平衡的用例是什么?我们可以将它用于 pod 之间的东西向流量吗?
如果我对上述内容有误解,请纠正我。
干杯
我是 k8s 的新手,我对 ingress 和 IPVS 的用例有疑问。
根据我在互联网上的几篇文章中读到的内容,入口用于对 Pod 的南北流量进行负载平衡。那里有几种入口解决方案,例如 traefic-nginx-haproxy 等。我的问题是,IPVS 传输层负载平衡的用例是什么?我们可以将它用于 pod 之间的东西向流量吗?
如果我对上述内容有误解,请纠正我。
干杯
IPVS 是 linux 内核级别的第 4 层负载平衡。
我在某处读到它每秒可以处理大约 100,000 个转发请求。
尽管 Kubernetes 在 v1.6 版本中已经支持 5000 个节点,但带有 iptables 的 kube-proxy 实际上是将集群扩展到 5000 个节点的瓶颈。一个例子是在一个 5000 个节点的集群中使用 NodePort 服务,如果我们有 2000 个服务并且每个服务有 10 个 pod,这将导致每个工作节点上至少有 20000 条 iptable 记录,这会使内核非常忙碌。
示例:https ://blog.titanwolf.in/a?ID=00700-de778e7d-72e7-4515-b822-18844b104abd
https://dustinspecker.com/posts/ipvs-how-kubernetes-services-direct-traffic-to-pods/
问题
IPVS 传输层负载均衡的用例是什么?
您可以使用带有外部 IP的IPVS来公开在 K8s 集群内运行的服务,而不是入口。
我们可以将它用于 pod 之间的东西向流量吗?
是的,你可以使用它。您可以在IPVS模式下运行kube-proxy 。
所以 Kube 代理有userspace、iptables 或 IPVS三种模式
如果我用非常简单的话来解释iptables VS IPVS,
在集群中运行大约1000 个服务和10000个 POD之前,性能不会发生太大变化。如果您在该级别上使用带有 Kube-proxy 的 IPVS 可能会帮助您并提高性能。
如果您不确定 IPVS 是否会成为您的赢家,那么请在 iptables 模式下坚持使用 kube-proxy。它的生产硬化程度更高。
您可以查看此文档了解更多信息:https ://www.tigera.io/blog/comparing-kube-proxy-modes-iptables-or-ipvs/