如果打算将 KVM 作为传输节点或 NSX ManagerNSX Controller 客户机虚拟机主机,但尚未设置 KVM,您可以使用此处介绍的过程。

注:

Geneve 封装协议使用 UDP 端口 6081。您必须在 KVM 主机上的防火墙中允许该端口访问。

过程

  1. (仅限 Red Hat)打开 /etc/yum.conf 文件。
  2. 搜索行 exclude
  3. 添加行 "kernel* redhat-release*" 以配置 yum 来避免任何不受支持的 RHEL 升级。

    exclude=[existing list] kernel* redhat-release*

    如果计划运行具有特定兼容性要求的 NSX-T Container Plug-in,还要排除容器相关模块。

    exclude=[existing list] kernel* redhat-release* kubelet-* kubeadm-* kubectl-* docker-*

    支持的 RHEL 版本是 7.4。

  4. 安装 KVM 和桥接实用程序。

    Linux 发布版本

    命令

    Ubuntu

    apt-get install -y qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils virtinst virt-manager virt-viewer libguestfs-tools

    RHEL

    yum groupinstall "Virtualization Hypervisor"
    yum groupinstall "Virtualization Client"
    yum groupinstall "Virtualization Platform"
    yum groupinstall "Virtualization Tools"
  5. 检查硬件虚拟化功能。
    cat /proc/cpuinfo | egrep "vmx|svm"

    输出应包含 vmx。

  6. 确认安装了 KVM 模块。

    Linux 发布版本

    命令

    Ubuntu

    kvm-ok
    
    INFO: /dev/kvm exists
    KVM acceleration can be used

    RHEL

    lsmod | grep kvm
    
    kvm_intel              53484  6
    kvm                   316506  1 kvm_intel
  7. 对于要用作 NSX ManagerNSX Controller 的主机的 KVM,准备桥接网络、管理接口和网卡接口。

    在以下示例中,使用第一个以太网接口(eth0 或 ens32)以连接到 Linux 计算机本身。根据您的部署环境,该接口可以使用 DHCP 或静态 IP 设置。向 NSX-T 主机分配上行链路接口之前,请确保已配置这些上行链路使用的接口脚本。如果在系统上没有这些接口文件,将无法成功创建主机传输节点。

    注:

    在不同的环境中,接口名称可能会有所不同。

    Linux 发布版本

    网络配置

    Ubuntu

    编辑 /etc/network/interfaces

    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet manual
    
    auto br0
    iface br0 inet static
        address 192.168.110.51
        netmask 255.255.255.0
        network 192.168.110.0
        broadcast 192.168.110.255
        gateway 192.168.110.1
        dns-nameservers 192.168.3.45
        dns-search example.com
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0
    
    

    为网桥创建一个网络定义 xml 文件。例如,创建包含以下行的 /tmp/bridge.xml

    <network>
      <name>bridge</name>
      <forward mode='bridge'/>
      <bridge name='br0'/>
    </network>
    
    

    使用以下命令定义并启动桥接网络:

    virsh net-define 
    bridge.xml
    virsh net-start bridge
    virsh net-autostart bridge
    
    

    您可以使用以下命令检查桥接网络的状态:

    virsh net-list --all
    
    Name                 State      Autostart     Persistent
    ----------------------------------------------------------
    bridge               active     yes           yes
    default              active     yes           yes

    RHEL

    编辑 /etc/sysconfig/network-scripts/ifcfg-management_interface

      DEVICE="ens32"
      TYPE="Ethernet"
      NAME="ens32"
      UUID="<UUID>"
      BOOTPROTO="none"
      HWADDR="<HWADDR>"
      ONBOOT="yes"
      NM_CONTROLLED="no"
      BRIDGE="br0"
    
    

    编辑 /etc/sysconfig/network-scripts/ifcfg-eth1

      DEVICE="eth1"
      TYPE="Ethernet"
      NAME="eth1"
      UUID="<UUID>"
      BOOTPROTO="none"
      HWADDR="<HWADDR>"
      ONBOOT="yes"
      NM_CONTROLLED="no"
    

    编辑 /etc/sysconfig/network-scripts/ifcfg-eth2

      DEVICE="eth2"
      TYPE="Ethernet"
      NAME="eth2"
      UUID="<UUID>"
      BOOTPROTO="none"
      HWADDR="<HWADDR>"
      ONBOOT="yes"
      NM_CONTROLLED="no"
    

    编辑 /etc/sysconfig/network-scripts/ifcfg-br0

       DEVICE="br0"
       BOOTPROTO="dhcp"
       NM_CONTROLLED="no"
       ONBOOT="yes"
       TYPE="Bridge"
  8. 要将 KVM 作为传输节点,请准备网桥。

    在以下示例中,使用第一个以太网接口(eth0 或 ens32)以连接到 Linux 计算机本身。根据您的部署环境,该接口可以使用 DHCP 或静态 IP 设置。

    注:

    在不同的环境中,接口名称可能会有所不同。

    Linux 发布版本

    网络配置

    Ubuntu

    编辑 /etc/network/interfaces

    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet manual
    
    auto eth1
    iface eth1 inet manual
    
    auto br0
    iface br0 inet dhcp
      bridge_ports eth0
    

    RHEL

    编辑 /etc/sysconfig/network-scripts/ifcfg-ens32

    DEVICE="ens32"
      TYPE="Ethernet"
      NAME="ens32"
      UUID="<something>"
      BOOTPROTO="none"
      HWADDR="<something>"
      ONBOOT="yes"
      NM_CONTROLLED="no"
      BRIDGE="br0"
    
    

    编辑 /etc/sysconfig/network-scripts/ifcfg-ens33

    DEVICE="ens33"
      TYPE="Ethernet"
      NAME="ens33"
      UUID="<something>"
      BOOTPROTO="none"
      HWADDR="<something>"
      ONBOOT="yes"
      NM_CONTROLLED="no"
    
    

    编辑 /etc/sysconfig/network-scripts/ifcfg-br0

    DEVICE="br0"
       BOOTPROTO="dhcp"
       NM_CONTROLLED="no"
       ONBOOT="yes"
       TYPE="Bridge"
    重要:

    对于 Ubuntu,必须在 /etc/network/interfaces 中指定所有网络配置。不要创建单独的网络配置文件(如 /etc/network/ifcfg-eth1),这可能会导致传输节点创建失败。

    执行此步骤后,一旦将 KVM 主机配置为传输节点,就会创建网桥接口“nsx-vtep0.0”。在 Ubuntu 中,/etc/network/interfaces 具有如下条目:

    iface nsx-vtep0.0 inet static
    pre-up ip addr flush dev nsx-vtep0.0
    address <IP_pool_address>
    netmask <subnet_mask>
    mtu 1600
    down ifconfig nsx-vtep0.0 down
    up ifconfig nsx-vtep0.0 up

    在 RHEL 中,主机 NSX 代理 (nsxa) 会创建一个名为 ifcfg-nsx-vtep0.0 的配置文件,其中包含如下条目:

    DEVICE=nsx-vtep0.0
    BOOTPROTO=static
    NETMASK=<IP address>
    IPADDR=<subnet mask>
    MTU=1600
    ONBOOT=yes
    USERCTL=no
    NM_CONTROLLED=no
    
  9. 要使网络更改生效,请重新启动网络服务 systemctl restart network 或重新引导 Linux 服务器。