2.10. 为虚拟机使用默认 Pod 网络
您可以将默认 Pod 网络用于容器原生虚拟化。为此,您必须使用 masquerade 绑定方法。这是用于默认 Pod 网络的唯一推荐绑定方法。不要将 masquerade 模式用于非默认网络。
对于辅助网络,请使用 bridge 绑定方法。
2.10.1. 从命令行配置伪装模式
您可使用伪装模式将虚拟机的外发流量隐藏在 Pod IP 地址后。伪装模式使用网络地址转换 (NAT) 来通过 Linux 网桥将虚拟机连接至 Pod 网络后端。
启用伪装模式,并通过编辑虚拟机配置文件让流量进入虚拟机。
先决条件
- 虚拟机必须配置为使用 DHCP 来获取 IPv4 地址。以下示例配置为使用 DHCP。
2.10.2. 选择绑定方法
如果从容器原生虚拟化 web 控制台向导创建虚拟机,请从 Networking 屏幕选择所需绑定方法。
2.10.2.1. 网络字段
| 名称 | 描述 |
|---|---|
| Create NIC | 为虚拟机创建新 NIC。 |
| NIC NAME | NIC 的名称。 |
| MAC ADDRESS | 网络接口的 MAC 地址。如果未指定 MAC 地址,将为会话生成一个临时地址。 |
| NETWORK CONFIGURATION | 可用 NetworkAttachmentDefinition 对象列表。 |
| BINDING METHOD |
可用绑定方法列表。对于默认的 Pod 网络, |
| PXE NIC |
支持 PXE 的网络列表。只有在将 |
2.10.3. 默认网络的虚拟机配置示例
2.10.3.1. 模板:虚拟机配置文件
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachine
metadata:
name: example-vm
namespace: default
spec:
running: false
template:
spec:
domain:
devices:
disks:
- name: containerdisk
disk:
bus: virtio
- name: cloudinitdisk
disk:
bus: virtio
interfaces:
- masquerade: {}
name: default
resources:
requests:
memory: 1024M
networks:
- name: default
pod: {}
volumes:
- name: containerdisk
containerDisk:
image: kubevirt/fedora-cloud-container-disk-demo
- name: cloudinitdisk
cloudInitNoCloud:
userData: |
#!/bin/bash
echo "fedora" | passwd fedora --stdin2.10.3.2. 模板:Windows 虚拟机实例配置文件
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachineInstance
metadata:
labels:
special: vmi-windows
name: vmi-windows
spec:
domain:
clock:
timer:
hpet:
present: false
hyperv: {}
pit:
tickPolicy: delay
rtc:
tickPolicy: catchup
utc: {}
cpu:
cores: 2
devices:
disks:
- disk:
bus: sata
name: pvcdisk
interfaces:
- masquerade: {}
model: e1000
name: default
features:
acpi: {}
apic: {}
hyperv:
relaxed: {}
spinlocks:
spinlocks: 8191
vapic: {}
firmware:
uuid: 5d307ca9-b3ef-428c-8861-06e72d69f223
machine:
type: q35
resources:
requests:
memory: 2Gi
networks:
- name: default
pod: {}
terminationGracePeriodSeconds: 0
volumes:
- name: pvcdisk
persistentVolumeClaim:
claimName: disk-windows