侧边栏壁纸
博主头像
青菜-halo2 博主等级

行动起来,活在当下

  • 累计撰写 74 篇文章
  • 累计创建 6 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

Kubernetes双网卡方案:存储网与业务网隔离

Administrator
2025-12-13 / 0 评论 / 0 点赞 / 8 阅读 / 0 字

一、背景与核心需求

1. 环境说明

  • K8s工作节点配置双网卡:
    • 网卡1(ens33):192.168.2.0/24网段,Calico业务网,网关192.168.2.199(承载Pod通信、集群控制面流量);
    • 网卡2(eth1):192.168.66.0/24网段,CEPH存储网,无公网需求(仅承载CEPH CSI读写、集群通信)。
  • 核心痛点:初期未做流量隔离,CEPH存储流量混入业务网,导致带宽抢占、读写速度缓慢(如100MB/s→500MB/s+的性能差距),且存在网络冲突风险。

2. 目标

  • 流量严格隔离:CEPH存储流量强制走eth1,Calico业务流量走ens33,互不干扰;
  • 配置稳定可靠:节点重启后配置不丢失,不影响K8s/Calico现有网络架构;
  • 性能最优:存储网直连通信,无额外路由转发延迟,发挥CEPH硬件性能。

二、核心问题分析

  1. 双网卡默认路由冲突:若同时配置默认网关,会导致流量转发混乱;
  2. 存储流量“串网”:未配置策略路由时,CEPH CSI流量会默认走业务网网关(192.168.2.199),触发网关重定向;
  3. 性能瓶颈:流量混跑导致带宽抢占,路由转发增加延迟,CEPH读写速度未达硬件上限。

三、完整配置步骤(可直接复用)

1. 网卡基础配置(CentOS/RHEL为例)

(1)业务网网卡(ens33)配置

cat /etc/sysconfig/network-scripts/ifcfg-ens33
# Generated by dracut initrd
NAME="ens33"
HWADDR="00:0c:29:fe:cf:6f"
ONBOOT=yes
NETBOOT=yes
UUID="a0a17583-cf51-4565-97a0-411c5b3e90b6"
IPV6INIT=yes
BOOTPROTO=static
TYPE=Ethernet
IPADDR=192.168.2.108  # 对应节点IP,需按实际修改
NETMASK=255.255.255.0
GATEWAY=192.168.2.199  # 业务网网关
DNS1=192.168.2.199
DNS2=114.114.114.114

(2)存储网网卡(eth1)配置

cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth1
UUID=76e17cff-6ebf-4d88-b3b9-b2bd24985e3e
DEVICE=eth1
ONBOOT=yes
IPADDR=192.168.66.208  # 对应节点存储网IP,需按实际修改
NETMASK=255.255.255.0
# 关键:不配置默认网关,避免冲突

2. 策略路由配置(核心:流量隔离)

(1)注册专属路由表

# 注册表ID 100,命名为ceph_csi_route(仅需执行1次)
grep -q "100 ceph_csi_route" /etc/iproute2/rt_tables || echo "100 ceph_csi_route" >> /etc/iproute2/rt_tables

(2)添加核心路由与策略规则

# 1. 存储网直连路由(表100专属)
ip route add 192.168.66.0/24 dev eth1 src 192.168.66.208 table 100
​
# 2. 策略规则:强制66网段流量走eth1
ip rule add from 192.168.66.208 table 100  # 从存储网IP发起的流量
ip rule add to 192.168.66.0/24 table 100    # 访问存储网的流量
​
# 3. 刷新缓存生效
ip route flush cache

3. 配置永久生效(节点重启不丢失)

# 写入rc.local,赋予执行权限
cat >> /etc/rc.d/rc.local << EOF
# K8s双网卡隔离:CEPH CSI走eth1,Calico走ens33
grep -q "100 ceph_csi_route" /etc/iproute2/rt_tables || echo "100 ceph_csi_route" >> /etc/iproute2/rt_tables
ip route add 192.168.66.0/24 dev eth1 src 192.168.66.208 table 100
ip rule add from 192.168.66.208 table 100
ip rule add to 192.168.66.0/24 table 100
ip route flush cache
EOF
​
chmod +x /etc/rc.d/rc.local
chmod +x /etc/rc.local  # 兼容软链接

4. CEPH CSI适配(关键:指定存储网)

修改CEPH CSI StorageClass,确保插件优先使用66网段通信:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ceph-csi-rbd
provisioner: rbd.csi.ceph.com
parameters:
  clusterID: "ceph-cluster-id"  # 替换为实际CEPH集群ID
  pool: "k8s-pool"              # 替换为实际存储池名称
  imageFormat: "2"
  imageFeatures: "layering"
  csi.storage.k8s.io/provisioner-secret-name: "ceph-admin-secret"
  csi.storage.k8s.io/provisioner-secret-namespace: "kube-system"
  csi.storage.k8s.io/node-stage-secret-name: "ceph-admin-secret"
  csi.storage.k8s.io/node-stage-secret-namespace: "kube-system"
  network: "192.168.66.0/24"    # 强制CSI使用存储网
reclaimPolicy: Delete
allowVolumeExpansion: true

四、验证配置(3步确认成功)

1. 基础路由/规则验证

# 验证路由表100配置(仅保留直连路由)
ip route show table 100
# 预期输出:192.168.66.0/24 dev eth1 src 192.168.66.208
​
# 验证策略规则(仅保留2条相关规则)
ip rule list | grep 66
# 预期输出:
# 32763:    from 192.168.66.208 lookup ceph_csi_route
# 32764:    from all to 192.168.66.0/24 lookup ceph_csi_route

2. 流量隔离验证

# 1. 存储网直连测试(延迟<1ms为正常)
ping -I eth1 192.168.66.103  # 替换为CEPH节点IP
# 预期:无丢包,rtt min/avg/max <1ms
​
# 2. 路由追踪(无业务网跳转)
traceroute 192.168.66.103
# 预期:直接到达目标,无192.168.2.x/Calico(cali开头)节点
​
# 3. 业务网隔离测试(超时/不通为正常)
ping -I ens33 192.168.66.103

3. 性能验证

# 在K8s节点与CEPH OSD节点之间测试带宽
# CEPH OSD节点执行:iperf3 -s -B 192.168.66.103
# K8s节点执行:iperf3 -c 192.168.66.103 -B 192.168.66.208 -t 10
# 预期:千兆网卡≈900Mbps,万兆网卡≈9Gbps,无明显波动

五、冗余配置清理(避坑关键)

初期配置可能出现多余路由/规则,需及时清理:

# 1. 删除存储网默认网关(CEPH无需公网)
ip route del default via 192.168.66.1 dev eth1 table 100 2>/dev/null
​
# 2. 删除其他节点的误配规则(如66.204是其他节点IP)
ip rule del from 192.168.66.204 table 100 2>/dev/null
​
# 3. 刷新缓存
ip route flush cache

六、常见问题排错

问题现象 排查方向 解决方案
CEPH读写速度慢 1. 流量是否走eth1;2. 带宽是否达标;3. CEPH OSD负载 1. 重新执行策略路由配置;2. 检查网卡是否为千兆/万兆;3. 查看 ceph osd top
ping存储网节点超时 1. 网卡是否UP;2. 策略规则是否存在;3. CEPH节点防火墙 1.ip link show eth1;2.ip rule list | grep 66;3. 关闭CEPH节点防火墙/开放66网段
节点重启后配置失效 1. rc.local是否有执行权限;2. 配置是否写对节点IP 1.chmod +x /etc/rc.d/rc.local;2. 核对rc.local中IP是否为当前节点eth1IP
出现网关重定向提示 存储网流量走了业务网网关 补全策略规则,确保66网段流量匹配专属路由表
0

评论区