kube-proxy怎么修改ipvs规则

在 Kubernetes 中,kube-proxy 使用 IPVS 模式时,流量转发是通过 Linux 内核的 IP Virtual Server (IPVS) 来实现的。kube-proxy 会动态地根据 Kubernetes 服务(Service)和 Endpoints 的变化来更新 IPVS 规则。

修改 IPVS 规则

通常情况下,kube-proxy 会自动管理 IPVS 规则,你可以通过以下方式修改或查看 IPVS 规则:

1. 启用 IPVS 模式

在 Kubernetes 中启用 IPVS 模式,需要在启动 kube-proxy 时进行配置。你可以通过修改 kube-proxy 的配置文件或命令行参数来启用 IPVS 模式。

  • 修改 kube-proxy 配置文件(通常是 /etc/kubernetes/manifests/kube-proxy.yaml ,并设置 proxy-modeipvs

    示例配置:

    yaml 复制代码
    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: kube-proxy
      namespace: kube-system
    spec:
      template:
        spec:
          containers:
            - name: kube-proxy
              image: k8s.gcr.io/kube-proxy:v1.23.0
              command:
                - /bin/sh
                - -c
                - |
                  # 修改 kube-proxy 启动参数
                  /usr/local/bin/kube-proxy --proxy-mode=ipvs

    这个配置确保了 kube-proxy 启动时会使用 IPVS 模式。

  • 如果你使用的是 kubeadm 部署的集群,也可以通过配置文件 /etc/kubernetes/kube-proxy-config.yaml 来设置。

    vbnet 复制代码
    apiVersion: kubeproxy.config.k8s.io/v1alpha1
    kind: KubeProxyConfiguration
    mode: "ipvs"

修改完配置后,kube-proxy 会重启并切换到 IPVS 模式。

2. 查看 IPVS 规则

你可以使用 ipvsadm 工具来查看当前的 IPVS 规则。该工具显示的是当前节点上 IPVS 路由的配置。

  • 在每个节点上,执行以下命令来查看当前的 IPVS 规则:

    复制代码
    ipvsadm -L -n

    这个命令将列出当前的 IPVS 负载均衡规则。输出示例:

    diff 复制代码
    TCP  10.96.0.1:80 rr 1 1 1
    -> 10.244.0.2:80  masq
    -> 10.244.0.3:80  masq
  • 解释:

    • 10.96.0.1:80 是 Service 的虚拟 IP 和端口。
    • 后面跟的是实际 Pod 的 IP 地址和端口(如 10.244.0.2:8010.244.0.3:80),它们是该 Service 后端的 Pod。
    • masq 表示使用源地址伪装。

3. 手动修改 IPVS 规则

如果你需要手动修改 IPVS 规则(例如,调整负载均衡策略或进行故障排查),可以使用 ipvsadm 工具。

添加一条新的 IPVS 规则

css 复制代码
ipvsadm -A -t 10.96.0.1:80 -s rr
ipvsadm -a -t 10.96.0.1:80 -r 10.244.0.2:80 -m
ipvsadm -a -t 10.96.0.1:80 -r 10.244.0.3:80 -m

这会向 IPVS 中添加一个新的服务,绑定虚拟 IP 10.96.0.1:80,并将流量均匀地负载到两个 Pod(10.244.0.2:8010.244.0.3:80)上,采用轮询负载均衡策略(-s rr)。

删除 IPVS 规则

复制代码
ipvsadm -D -t 10.96.0.1:80

这会删除虚拟 IP 10.96.0.1:80 的规则。

4. 修改负载均衡策略

如果你希望修改负载均衡算法,可以通过 ipvsadm 工具来更改负载均衡策略。

  • 修改为

    最少连接数

    css 复制代码
    ipvsadm -A -t 10.96.0.1:80 -s lc
  • 修改为

    基于源 IP 的哈希

    css 复制代码
    ipvsadm -A -t 10.96.0.1:80 -s sh

-s 参数后跟的负载均衡策略选项:

  • rr: 轮询 (Round Robin)
  • lc: 最少连接数 (Least Connections)
  • sh: 源地址哈希 (Source Hashing)

5. 重新应用 IPVS 规则

由于 kube-proxy 会自动更新 IPVS 规则,修改规则后需要确保 kube-proxy 重新加载配置并应用新的规则。

  • 你可以通过重新启动

    复制代码
    kube-proxy

    来确保它重新加载和应用新的 IPVS 配置:

    perl 复制代码
    kubectl -n kube-system rollout restart daemonset kube-proxy

总结

  • kube-proxy 使用 IPVS 模式时,负责在集群节点上配置和管理 IPVS 规则来实现负载均衡。
  • 通过 ipvsadm 工具,可以查看、修改和删除 IPVS 规则。
  • 如果需要修改 kube-proxy 的行为或负载均衡策略,可以通过修改配置文件来实现。
  • 一般情况下,不建议手动修改 kube-proxy 的 IPVS 规则,除非你在进行故障排查或高级定制配置。
相关推荐
加瓦点灯9 分钟前
TheadLocal内存泄露?没那么夸张
后端
gYan13 分钟前
轻松使用Java Lambda 表达式
后端
常年游走在bug的边缘1 小时前
基于spring boot 集成 deepseek 流式输出 的vue3使用指南
java·spring boot·后端·ai
廖广杰2 小时前
java虚拟机-为何元空间取代永久代
后端
李菠菜2 小时前
配置 MySQL 8 允许 Root 用户远程访问
后端·mysql
稀土君2 小时前
🔥 万「友」引力计划上线啦,轻松做任务赢积分“拿”华为MatePad Air、雷蛇机械键盘、 热门APP会员卡...
前端·人工智能·后端
tactfulleaner2 小时前
小于n的最大数
后端
Bohemian2 小时前
服务稳定性建设之隔离机制 学习笔记
后端·微服务·面试
异常君2 小时前
Java 并发利器:CyclicBarrier 从入门到精通
java·后端
爱编程的王小美2 小时前
Scala 入门指南
开发语言·后端·scala