裸金属服务器是云上资源的重要部分,其网络需要与云上的虚拟机和容器互在同一个VPC下,并且能够像容器和虚拟机一样使用云的网络功能和能力。
传统的裸金属服务器使用开源的 OpenStack Ironic 组件,配合 OpenStack Neutron 网络实现。
传统方案1:在Neutron使用VLAN网络时,每个VPC网络会分配一个唯一的VLAN标签。通过在裸金属服务器的网卡上配置相应交换机端口的VLAN标签,使其与目标网络的VLAN标签匹配,就可以将裸金属服务器的网络切换到对应的VPC中。
尽管VLAN网络在流量管理和网络隔离方面具有较高效率,但也存在一些缺点:
为了解决传统方案1的扩展性和管理灵活性问题,业界逐渐开始采用传统方案2:利用SDN交换机进行VXLAN/Geneve处理。裸金属服务器通过VLAN接入SDN交换机,后者负责对数据包进行封装,然后将流量引入对应的VPC网络,实现裸机与虚拟机互通。如下图所示:
这种方案相比传统方案1,提升了网络的可扩展性,通过Overlay网络提高了网络可扩展性、灵活性和安全性。但是,这种方案仍面临很多问题与挑战:
综上所述,尽管传统方案2在一定程度上改善了网络的扩展性和安全性,但其存在的架构复杂性、较高的成本投入、以及有限的灵活性和扩展性,成为制约裸金属服务高效运营和未来发展的主要障碍。因此,探索更优化的网络解决方案,以实现网络架构的统一管理、降低成本负担、并增强灵活性与扩展性,显得尤为迫切。
本方案基于DPU的网络能力,采用开源 Kubernetes 底座架构,以OVN/OVS做为网络转发面,整体架构如下图所示:
在集群架构中,裸金属服务器既可以单独使用,也可以作为Worker节点加入Kubernetes集群,部署Pod或虚拟机(VM)。无论是作为裸金属服务器,还是作为Worker节点,网络I/O均由DPU卸载,并通过OVN进行统一管理。在使用SmartNIC或普通网卡的Worker节点中,OVN的流表管理和下发逻辑保持不变,仅将网络I/O交由主机侧处理。整体方案采用统一的OVN控制器进行策略下发和调度,实现DPU裸机网络与Pod/VM之间的网络互通。
本方案的关键组件为自研,包括以下组件:
● bmctl:类似于 kubectl 的一个便于操作裸金属的命令行工具。
● ycloud-cni:为裸金属提供虚拟网卡配置功能,实现CNI接口,并对本地 OVS网络进行配置。
● ycloud-ovn-controller:该组件执行K8S内资源到OVN资源的翻译工作,其作用相当于SDN系统的控制平面。监听所有和网络相关的资源事件,并根据资源变化情况更新OVN内的逻辑网络。
裸金属的网络完全由DPU卡来配置,裸金属机器本身可以不携带任何物理网卡,而是通过DPU提供的PF/VF设备作为网卡设备。这些设备由DPU SOC(SOC 可以灵活对软件升级和部署服务)侧的OVS进行配置,而不依赖外部交换机,可以实现VXLAN、Geneve等各种虚拟网络,本方案具有性能优越、灵活性强、部署简化、管理统一、高可扩展性等优点,是一种高效和可靠的裸金属网络解决方案。如下图所示:
在裸金属方案中,网卡被抽象为弹性虚机网卡(VNic)对象,由bm-controller根据用户需求创建VNic对象,并由Ycloud-cni组件将VNic绑定到裸金属。在这个过程中,bm-controller会为Host侧分配PF/VF,并调用OVS将相应的端口绑定到OVS网桥,进行必要的配置。这种方案无需更改交换机的配置,同时将控制面和数据面都卸载到DPU中处理,使得管理流程与虚拟网络中的POD/VM基本一致。唯一的区别在于本地虚拟网络设备的生成过程,使用Ycloud-cni-ds处理配置DPU本地网络。如下图所示:
总体来说,基于DPU的裸金属网络方案为裸金属服务器提供了灵活且高效的网络管理解决方案。
基于DPU的裸金属方案使用DPU的VF设备提供网卡功能,动态配置网卡,无需冗余网卡。Ycloud-cni组件负责管理PF/VF设备,实现网卡的动态插拔和配置。相比原生Ironic的冗余网卡需求,这种方案更灵活高效,避免资源浪费。 DPU提供数百个以上的VF,足以满足不同用户需求,使得网卡的热插拔变得简单而高效,提高资源利用率。
与其他k8s 资源的创建类似,裸金属的通过一个yaml描述进行创建,同时创建POD、VM:
kubectl apply -f bm-xxx.yaml kubectl apply -f pod-xxx.yaml kubectl apply -f vm-xxx.yaml |
裸机yaml中网络信息:
VM yaml中的网络信息:
POD yaml中的网络信息:
查看资源信息如下:
创建后,可通过 kubectl 命令查看:
裸机可以看到bm-01、bm-02及 bm-node3三个裸金属实例,均为 Running 状态。
我们提供了类似 kubectl 的一个 bmctl 命令行工具,方便进行管理维护。通过该命令,可以方便的进行登录、重启、网卡插拔等操作:
验证BM跟POD和VM的网络互通情况
裸机和POD互通:
裸机和VM互通:
通过提供的 bmctl 命令行工具操作。
添加网卡:
bmctl addinterface bm-02 bm-02-vnicpf |
查看网卡:
删除网卡:
bmctl delinterface bm-02 bm-02-vnicpf |
查看网卡bm-02
K8S 纳管DPU节点,且DPU SOC中使用OVS,可以看到pf0hpf使用的是驭数的驱动。
DPU赋能的裸金属网络解决方案,在以下几个方面具有显著优势:
综上所述,DPU驱动的裸金属网络方案通过一系列创新设计,从根本上重塑了网络的部署与管理方式,为追求高效、灵活及安全的现代数据中心提供了强有力的支持。
本方案来自于中科驭数软件研发团队,团队核心由一群在云计算、数据中心架构、高性能计算领域深耕多年的业界资深架构师和技术专家组成,不仅拥有丰富的实战经验,还对行业趋势具备敏锐的洞察力,该团队致力于探索、设计、开发、推广可落地的高性能云计算解决方案,帮助最终客户加速数字化转型,提升业务效能,同时降低运营成本。
作者: Yusur_Tech, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-3991230.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论