一、背景与核心需求
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硬件性能。
二、核心问题分析
- 双网卡默认路由冲突:若同时配置默认网关,会导致流量转发混乱;
- 存储流量“串网”:未配置策略路由时,CEPH CSI流量会默认走业务网网关(192.168.2.199),触发网关重定向;
- 性能瓶颈:流量混跑导致带宽抢占,路由转发增加延迟,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网段流量匹配专属路由表 |
评论区