KubeVirt + Kube-OVN 实现双栈网络支持:基于 managedTap的最佳实践

文摘   2024-11-26 10:09   中国香港  
背景

随着 Kubernetes 成为现代应用部署的标准,KubeVirt 通过虚拟机支持进一步扩展了其能力。然而,当用户希望在虚拟机上启用 IPv4 和 IPv6 的双栈网络时,传统的 KubeVirt 桥接模式却存在以下限制:

- 不支持直接双栈网络配置;

- 通常需要对源码进行定制修改,增加了升级与维护成本。
KubeVirt 1.4 版本引入的 managedTap提供了无需修改源码即可实现双栈网络支持的新方法。通过一种基于 TAP + Bridge 的绑定方式,managedTap 在保持简洁的同时,大幅降低了配置复杂度。
managedTap的工作原理
managedTap是 KubeVirt 中引入的一种新的 DomainAttachmentType类型,其设计目的是简化网络绑定的配置和管理。managedTap实现了一种基于 TAP + Bridge 的网络绑定方式,支持自动创建和配置所需的网络设备,从而实现无 IPAM 的桥接绑定。与传统的 bridge模式不同,managedTap方式完全由 Kube-OVN 管理 DHCP,而 bridge 模式下,虚拟机则使用 virt-launcher中的 DHCP 服务器。
Kubevirt + Kube-OVN bridge转发支持双栈配置步骤
1. 确保 Kube-OVN 子网启用了 DHCP 和 IPv6 RA(路由通告)功能。以下是 YAML 配置示例:
```yamlapiVersion: kubeovn.io/v1kind: Subnetmetadata:  name: dual-stack-subnetspec:  cidrBlock: "10.244.0.0/16,fd00:10:244::/64"  enableDHCP: true  enableIPv6RA: true```
2. 注册网络绑定插件 :接下来,使用 kubectl patch 命令向 KubeVirt 注册 managedTap 网络绑定插件。执行如下命令:

```kubectl patch kubevirts -n kubevirt kubevirt --type=json -p=\'[{"op": "add", "path": "/spec/configuration/network", "value": { "binding": { "managedtap": { "domainAttachmentType": "managedTap" } }}}]'```
3. 创建虚拟机 :最后,在创建虚拟机时,指定使用 managedTap 类型的网络接口。以下是虚拟机配置的示例片段:
```apiVersion: kubevirt.io/v1kind: VirtualMachinemetadata:  name: dual-stack-vm  namespace: defaultspec:  running: false  template:    spec:      domain:        devices:          interfaces:            - name: default              binding:                name: managedtap        networks:          - name: default            pod: {}
```
通过以上步骤,您就可以在不修改 KubeVirt 源码的前提下,为虚拟机启用 bridge 转发下双栈网络支持。这种方法不仅简化了网络配置,同时也为未来的版本升级铺平了道路。希望这篇文章能帮助您更好地理解和利用 KubeVirt 1.4 版本中的 managedTap 功能。


参考文档
  • https://github.com/kubevirt/community/blob/main/design-proposals/primary_network_binding_for_seamless_migration.md#as-a-bridge-domainattachmenttype
  • https://kubevirt.io/user-guide/network/network_binding_plugins/#domainattachmenttype
  • https://github.com/kubevirt/kubevirt/pull/13024
  • https://kubeovn.github.io/docs/v1.14.x/advance/dhcp/?h=dhcp


Kube-OVN中文文档:
最全操作指南,Kube-OVN 中文文档来了!

Kube-OVN社区实践:
01 社区实践 | F5 CES集成Kube-OVN,提供丰富的出向控制策略
02 社区实践 | OpenMesh SDN白盒交换机结合Kube-ovn实现虚实互联
03 社区实践 | Kube-OVN实现K8s多租户网络管理
04 社区实践 | KubeVirt通过Kube-OVN接入Underlay网络
05 社区实践 | Kube-OVN为KubeVirt虚拟机分配固定IP
06 社区实践 | 使用 VPP 为 Kube-OVN VPC 提供高性能网关
07 社区实践|基于SR-IOV-network-operator实现AI场景RDMA自动化配置开发
08 社区实践|基于Kube-OVN多租户虚拟机+容器隔离
09 社区实践|Kube-OVN 混合网络场景最佳实践

Kube-OVN 项目资料

官网:

https://www.kube-ovn.io

GitHub: 

https://github.com/kubeovn/kube-ovn

用户文档:

https://kubeovn.github.io/docs

Slack:

https://kube-ovn-slackin.herokuapp.com

微信群:

扫码加群

 


文章转载自KubeOVN社区点击这里阅读原文了解更多

CNCF概况(幻灯片)

扫描二维码联系我们!




CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux  Foundation,是非营利性组织。 

CNCF云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请关注CNCF微信公众号。

CNCF
云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。
 最新文章