2.10. 为虚拟机使用默认 Pod 网络


您可以将默认 Pod 网络用于容器原生虚拟化。为此,您必须使用 masquerade 绑定方法。这是用于默认 Pod 网络的唯一推荐绑定方法。不要将 masquerade 模式用于非默认网络。

注意

对于辅助网络,请使用 bridge 绑定方法。

2.10.1. 从命令行配置伪装模式

您可使用伪装模式将虚拟机的外发流量隐藏在 Pod IP 地址后。伪装模式使用网络地址转换 (NAT) 来通过 Linux 网桥将虚拟机连接至 Pod 网络后端。

启用伪装模式,并通过编辑虚拟机配置文件让流量进入虚拟机。

先决条件

  • 虚拟机必须配置为使用 DHCP 来获取 IPv4 地址。以下示例配置为使用 DHCP。

流程

  1. 编辑虚拟机配置文件的 interfaces 规格:

    kind: VirtualMachine
    spec:
      domain:
        devices:
          interfaces:
            - name: red
              masquerade: {} 1
              ports:
                - port: 80 2
      networks:
      - name: red
        pod: {}
    1
    使用伪装模式进行连接
    2
    允许通过 80 端口传入流量
  2. 创建虚拟机:

    $ oc create -f <vm-name>.yaml

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 网络,masquerade 是唯一推荐的绑定方法。对于辅助网络,请使用 bridge 绑定方法。非默认网络不支持 masquerade 绑定方法。

PXE NIC

支持 PXE 的网络列表。只有在将 PXE 选为 Provision Source 时才会显示。

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 --stdin

2.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
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.