• kubernetes / IPVS 和 IPTABLES


    kubernetes集群组件图

    kube-proxy官方文档

    在这里插入图片描述

    什么是 IPVS

    IPVS(IP 虚拟服务器)实现传输层负载平衡,通常称为第 4 层 LAN 交换,作为 Linux 内核的一部分。

    IPVS 在主机上运行并充当真实服务器集群前面的负载平衡器。IPVS 可以将基于 TCP 和 UDP 的服务的请求定向到真实服务器,并使真实服务器的服务在单个 IP 地址上表现为虚拟服务。

    IPVS 与 IPTABLES的区别

    IPVS 模式在 Kubernetes v1.8 中引入,在 v1.9 中进入测试版,在 v1.11 中进入 GA。在 v1.1 中添加了 IPTABLES 模式,并从 v1.2 开始成为默认操作模式。IPVS 和 IPTABLES 都基于netfilter(网络过滤器) IPVS模式和IPTABLES模式的区别如下:

    1. IPVS 为大型集群提供了更好的可扩展性和性能。

    2. IPVS 支持比 IPTABLES 更复杂的负载平衡算法(最小负载、最少连接、局部性、加权等)。

    3. IPVS 支持服务器健康检查和连接重试等。

    为什么为 Kubernetes 选择 IPVS ?

    随着 Kubernetes 的使用增长,其资源的可扩展性变得越来越重要。特别是,服务的可扩展性对于运行大型工作负载的开发人员/公司采用 Kubernetes 至关重要。

    Kube-proxy 是服务路由的构建块,它依赖于经过强化攻击的 iptables 来实现支持核心的服务类型,如 ClusterIP 和 NodePort。 但是,iptables 难以扩展到成千上万的服务,因为它纯粹是为防火墙而设计的,并且基于内核规则列表。

    尽管 Kubernetes 在版本v1.6中已经支持5000个节点,但使用 iptables 的 kube-proxy 实际上是将集群扩展到5000个节点的瓶颈。 一个例子是,在5000节点集群中使用 NodePort 服务,如果我们有2000个服务并且每个服务有10个 pod,这将在每个工作节点上至少产生20000个 iptable 记录,这可能使内核非常繁忙。

    另一方面,使用基于 IPVS 的集群内服务负载均衡可以为这种情况提供很多帮助。 IPVS 专门用于负载均衡,并使用更高效的数据结构(哈希表),允许几乎无限的规模扩张

  • 相关阅读:
    华为设备小型园区网方案(有线+无线+防火墙)
    Linux(Centos6)搭建ElasticSearch(图文教程)
    python+pytorch人脸表情识别
    【开题报告】基于微信小程序的时空胶囊系统的设计与实现
    在 ubuntu20.04 上安装 Pytorch
    SSH的原理与配置
    【Gitee】生成与配置SSH公钥
    R语言查看版本 R包查看版本
    『手撕Vue-CLI』完善提示信息
    2023年10月5号
  • 原文地址:https://blog.csdn.net/Yosigo_/article/details/126634868