• 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 专门用于负载均衡,并使用更高效的数据结构(哈希表),允许几乎无限的规模扩张

  • 相关阅读:
    【卷王秘籍】学了三遍操作系统后,榨干知识点,让面试官自闭!
    Dockerfile - USER 指令详解
    MongoDB副本集搭建
    【嵌入式硬件】快衰减和慢衰减
    机器学习笔记之支持向量机(一)模型构建思路
    pytest框架中的pytest.ini配置文件
    GDB之解决ptrace反调试手段(八)
    导入sklearn报错:No module named ‘threadpoolctl‘
    实时数据仓库
    WebRTC[50] - WebRTC支持SVC时SDP信令的协商过程
  • 原文地址:https://blog.csdn.net/Yosigo_/article/details/126634868