您可以使用 cloud-init 将新的虚拟机 (VM) 配置为在默认 Pod 网络上同时使用 IPv6 和 IPv4。
虚拟机实例配置中的Network.pod.vmIPv6NetworkCIDR
字段确定虚拟机的静态 IPv6 地址和网关 IP 地址。这些由 virt-launcher Pod 用于将 IPv6 流量路由到虚拟机,并且不会在外部使用。Network.pod.vmIPv6NetworkCIDR
字段以无类域间路由 (CIDR) 表示法指定 IPv6 地址块。默认值为fd10:0:2::2/120
。您可以根据网络需求编辑此值。
虚拟机运行时,虚拟机的传入和传出流量将同时路由到 virt-launcher Pod 的 IPv4 地址和唯一的 IPv6 地址。然后,virt-launcher Pod 将 IPv4 流量路由到虚拟机的 DHCP 地址,并将 IPv6 流量路由到虚拟机的静态设置的 IPv6 地址。
步骤
-
在新虚拟机配置中,包含具有masquerade
的接口,并使用 cloud-init 配置 IPv6 地址和默认网关。
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: example-vm-ipv6
spec:
template:
spec:
domain:
devices:
interfaces:
- name: default
masquerade: {} (1)
ports:
- port: 80 (2)
# ...
networks:
- name: default
pod: {}
volumes:
- cloudInitNoCloud:
networkData: |
version: 2
ethernets:
eth0:
dhcp4: true
addresses: [ fd10:0:2::2/120 ] (3)
gateway6: fd10:0:2::1 (4)
1 |
使用伪装模式连接。 |
2 |
允许传入端口 80 到虚拟机的流量。 |
3 |
虚拟机实例配置中Network.pod.vmIPv6NetworkCIDR 字段确定的静态 IPv6 地址。默认值为fd10:0:2::2/120 。 |
4 |
虚拟机实例配置中Network.pod.vmIPv6NetworkCIDR 字段确定的网关 IP 地址。默认值为fd10:0:2::1 。 |
-
在命名空间中创建虚拟机
$ oc create -f example-vm-ipv6.yaml
$ oc get vmi <vmi-name> -o jsonpath="{.status.interfaces[*].ipAddresses}"