OpenShift Origin多网卡节点:能否为主节点与节点配置独立接口?
当然可以!OpenShift完全支持把管理流量和集群业务流量拆分到不同的网络接口上,刚好适配你说的双网卡(VLAN隔离子网)场景。下面我就一步步给你拆解具体配置方法,前提是你的管理接口eth0已经设为默认接口啦~
核心思路
简单来说,我们要通过OpenShift的机器配置(MachineConfig)和网络组件(OVN-Kubernetes),把两类流量做绑定:
- 管理流量(SSH、主节点与节点的管控通信)默认走eth0
- 集群流量(Pod间通信、路由转发、节点间业务交互)强制走第二个网卡(比如eth1)
具体配置步骤
1. 部署前:配置install-config.yaml
在创建集群的阶段,先修改install-config.yaml,把两个网卡对应的子网都加入到机器网络配置里:
networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 machineNetwork: - cidr: 192.168.1.0/24 # 替换成你的eth0管理子网 - cidr: 10.0.0.0/24 # 替换成你的eth1集群流量子网 serviceNetwork: - 172.30.0.0/16 networkType: OVNKubernetes
这里的machineNetwork必须包含两个子网,这样OpenShift部署时才能识别到双网卡的环境。
2. 配置节点网卡绑定(MachineConfig)
接下来要给节点(包括控制节点和工作节点)配置网卡规则,让集群流量走eth1。创建一个MachineConfig文件,比如针对工作节点的02-worker-network.yaml:
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: worker name: 02-worker-network spec: config: ignition: version: 3.2.0 networkd: units: - name: 10-eth1.network contents: | [Match] Name=eth1 [Network] Address=10.0.0.10/24 # 替换成eth1的静态IP,用DHCP的话删掉这行 DNS=8.8.8.8 # 按需配置DNS服务器 [Route] Destination=10.128.0.0/14 # 指向OpenShift的Pod集群子网 Gateway=10.0.0.1 # 替换成eth1子网的网关
如果是控制节点,把machineconfiguration.openshift.io/role改成master即可。这个配置会让Pod集群的流量全部路由到eth1,而管理流量还是默认走eth0。
3. 绑定OVN网关到eth1
最后要让OpenShift的核心网络组件OVN把集群网关绑定到eth1上,这样外部路由流量也会走这个网卡:
oc patch network.operator.openshift.io cluster --type=merge -p '{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"gatewayConfig":{"interface":"eth1"}}}}}'
验证配置是否生效
部署完成后,你可以通过这几个方法确认配置成功:
- 查看网卡流量:
ip -s link show eth1,能看到明显的集群业务流量 - 检查Pod路由:
oc exec -it <你的Pod名称> -- ip route,确认Pod的默认路由指向eth1的网关 - 测试两类流量:用eth0的IP SSH登录节点(管理流量正常),测试集群内服务通信(比如访问路由),确认走eth1
注意事项
- 确保两个网卡的VLAN隔离配置正确,子网之间的路由规则没问题
- 尽量在部署集群前完成这些配置,后期修改容易出现网络冲突
- 如果用DHCP,要保证eth1能获取到正确的IP,且集群子网的路由自动配置到位
内容的提问来源于stack exchange,提问作者Blurtonator
相关产品推荐
相关产品推荐

