当前位置: 首页 > news >正文

ipvsadm,是一个什么工具?

1. ipvsadm 是什么?

ipvsadm(IP Virtual Server Administration)是 Linux 内核中 IPVS(IP Virtual Server) 模块的管理工具,用于配置和监控内核级的负载均衡规则。它是 Kubernetes 中 kube-proxy 在 IPVS 模式 下的底层实现工具。

主要功能
  • 管理 IPVS 的虚拟服务(Virtual Service)和真实服务器(Real Server,即后端 Pod)。

  • 支持多种负载均衡算法(如轮询 rr、加权轮询 wrr、最少连接 lc 等)。

  • 查看当前负载均衡规则和连接状态。

常用命令
ipvsadm -Ln            # 列出所有 IPVS 规则(数字格式显示)
ipvsadm -Ln --stats    # 显示统计信息(如连接数、流量)
ipvsadm -Ln --rate     # 显示速率(如每秒请求数)
ipvsadm -E -t <VIP:PORT> -s <ALGORITHM>  # 修改调度算法

2. IPVS 模式详解

IPVS(IP Virtual Server)是 Linux 内核内置的 四层(L4)负载均衡器,工作在传输层(TCP/UDP),性能远高于传统的 iptables 模式。

为什么 Kubernetes 使用 IPVS 模式?
  • 高性能:基于哈希表存储规则,查询效率为 O(1),适用于大规模集群。

  • 支持多种调度算法:如轮询(rr)、加权轮询(wrr)、最少连接(lc)等。

  • 更好的可扩展性:在 Service 数量超过 10,000 时,性能仍稳定。

IPVS 模式的核心组件
组件说明
Virtual Service虚拟服务(VIP),对应 Kubernetes Service 的 ClusterIP:Port
Real Server真实后端(Pod),对应 Endpoints 中的 PodIP:Port
调度算法决定流量如何分发给后端 Pod(如 rrwrrlc)。
IPVS 与 iptables 模式对比
特性IPVS 模式iptables 模式
负载均衡算法支持多种(rr/wrr/lc 等)仅支持随机均衡
规则存储结构哈希表(O(1) 复杂度)线性链表(O(n) 复杂度)
大规模集群性能更优(适合 10k+ Service)性能下降明显
依赖内核模块ip_vsip_vs_rr 等iptablesnf_conntrack

3. Kubernetes 中 IPVS 的工作流程

  1. Service 创建

    • 当创建 ClusterIP 类型的 Service 时,kube-proxy 会:

      • 在 kube-ipvs0 虚拟接口上绑定 Service 的 ClusterIP。

      • 通过 ipvsadm 添加 IPVS 规则,将 VIP(Service IP)映射到后端 Pod IP。

  2. 流量转发

    • 当访问 ClusterIP:Port 时:

      • 内核根据 IPVS 规则匹配到目标 Service。

      • IPVS 按调度算法选择一个后端 Pod,转发流量。

  3. 示例规则
    执行 ipvsadm -Ln 可能看到如下输出:

    TCP  10.233.25.255:80 rr-> 10.233.1.2:80            Masq    1      0          0-> 10.233.1.3:80            Masq    1      0          0
    • rr:轮询算法。

    • Masq:使用 SNAT(源地址转换)。

    • 后端是两个 Pod(10.233.1.2:80 和 10.233.1.3:80)。

    • 检查 Service 和 Endpoints

      kubectl get svc -A | grep 10.233.25.255  # 找到关联的 Service
      kubectl describe endpoints <service-name> # 检查是否有健康的 Pod
    • 查看 IPVS 规则

      ipvsadm -Ln | grep 10.233.25.255
      • 如果输出中无目标 Pod(-> 开头的行),则说明 Endpoints 缺失。


4. 常见问题

Q1: 为什么 kube-ipvs0 显示 state DOWN
  • 这是正常的,因为 kube-ipvs0 是虚拟接口,仅用于绑定 IP,不参与实际网络通信。IPVS 规则由内核直接处理。

Q2: 如何检查 IPVS 是否正常工作?
# 查看规则
ipvsadm -Ln
# 检查是否有流量转发
ipvsadm -Ln --stats
Q3: 如何切换 kube-proxy 到 IPVS 模式?

在 kube-proxy 启动参数中添加:

--proxy-mode=ipvs
--ipvs-scheduler=rr         # 指定调度算法

总结

  • ipvsadm 是管理 IPVS 负载均衡规则的工具,Kubernetes 通过它实现高性能 Service 转发。

  • IPVS 模式 适用于大规模集群,支持多种调度算法,性能优于 iptables。

  • 遇到 no destination available 时,优先检查 Endpoints 和 Pod 状态。

http://www.xdnf.cn/news/266257.html

相关文章:

  • 中国 AIGC 确权革命:“AI 创意・中国” 平台上线,存证成本降至 0.1 元 / 件
  • CAN网桥中继隔离抗干扰集线器重映射一进一出CAN扩展CAN Bridge
  • 在Java项目中实现本地语音识别与热点检测,并集成阿里云智能语音服务
  • Dubbo(92)如何在微服务架构中应用Dubbo?
  • 深入理解C++类型转换:从基础到高级应用
  • 糖尿病筛查常识---秋浦四郎
  • 计网_可靠传输ARQ机制
  • neo4j初尝试
  • Java从入门到精通 - Java语法
  • C++ 简单工厂模式详解
  • QT6 源(72):阅读与注释单选框这个类型的按钮 QRadioButton,及各种属性验证,
  • 【Linux知识】find命令行使用详解
  • 数据结构*队列
  • nessus最新版本安装教程+windows一键更新最新插件
  • 计算机网络-同等学力计算机综合真题及答案
  • 【AI零件】openrouter.ai生成密钥的操作
  • 广义线性模型三剑客:线性回归、逻辑回归与Softmax分类的统一视角
  • JavaScript 星河:类型流转的诗意旅程
  • 基于LangChain 实现 Advanced RAG-后检索优化(上)-Reranker
  • 第4章 Python 3 基础语法规则补充
  • LangChain与MCP:大模型时代的工具生态之争与协同未来
  • STM32F103C8T6使用MLX90614模块
  • VTK实战笔记(1)在win11搭建VTK-9.4.2 + qt5.15.2 + VS2019_x64开发环境
  • 通往“共识空域”的系统伦理演化
  • [方法论]软件工程中的设计模式:从理论到实践的深度解析
  • 排序算法——归并排序
  • 【Mytais系列】Type模块:类型转换
  • 基于51单片机和LCD1602、矩阵按键的小游戏《猜数字》
  • 【BLE】【nRF Connect】 精讲nRF Connect自动化测试套件(宏录制、XML脚本)
  • 大数据:数字时代的驱动力