当前位置: 首页 > 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 状态。

相关文章:

  • MySQL 中日期相减的完整指南
  • 【赵渝强老师】TiDB生态圈组件
  • 如何优化MySQL主从复制的性能?
  • 130. 被围绕的区域
  • 使用DeepSeek协助恢复历史数据
  • 介绍一下HSLA的颜色相关知识
  • 一篇文章看懂时间同步服务
  • PyTorch_阿达玛积
  • AI 与生物技术的融合:开启精准医疗的新纪元
  • GTS-400 系列运动控制器板(十四)----软限位使用
  • 【WZOI】【题解】【质数密度】质数密度题解报告
  • Java通用Mapper自定义方法
  • 深入解析 Stacking:集成学习的“超级英雄联盟
  • 源码编译Qt StateMachine
  • Java快速上手之实验六
  • Nginx — 防盗链配置
  • PowerShell安装Chocolatey
  • 山东大学离散数学第十章习题解析
  • neatchat轻量级丝滑的ai模型web客户端
  • 使用Node.js搭建https服务器
  • 人民日报头版:让青春之花绽放在祖国和人民最需要的地方
  • 陈芋汐世界杯总决赛卫冕夺冠,全红婵无缘三大赛“全满贯”
  • 传奇落幕!波波维奇卸任马刺队主教练,转型全职球队总裁
  • 安徽安庆市委书记张祥安调研假日经济和旅游安全工作
  • 党政机关停车场免费、食堂开放,多地“五一”游客服务暖心周到
  • 王毅谈金砖国家反恐和网络安全合作