第 8 章 网络


8.1. 网络概述

OpenShift Virtualization 使用自定义资源和插件提供高级联网功能。虚拟机(VM)与 OpenShift Container Platform 网络及其生态系统集成。

注意

您无法在单堆栈 IPv6 集群上运行 OpenShift Virtualization。

下图演示了 OpenShift Virtualization 的典型网络设置。也可以进行其他配置。

图 8.1. OpenShift Virtualization 网络概述

OpenShift Virtualization 网络架构

20 Pod 和虚拟机在同一网络基础架构上运行,允许您轻松连接容器化和虚拟化的工作负载。

20 您可以将虚拟机连接到默认 pod 网络和任意数量的二级网络。

20 默认 pod 网络提供其所有成员、服务抽象、IP 管理、微分段和其他功能之间的连接。

20 Multus 是一个 "meta" CNI 插件,它允许 pod 或虚拟机使用其他兼容 CNI 插件连接到其他网络接口。

20 默认 pod 网络是基于覆盖的,通过底层机器网络进行隧道连接。

20 机器网络可以在一组选定的网络接口控制器(NIC)上定义。

20 辅助虚拟机网络通常直接桥接到物理网络,且没有 VLAN 封装。也可以为二级网络创建虚拟覆盖网络。

注意

Red Hat OpenShift Service on AWS 不支持将虚拟机直接连接到 underlay 网络。

20 二级虚拟机网络可以在专用的 NIC 集合上定义,如图 1 所示,也可以使用机器网络。

8.1.1. OpenShift Virtualization 术语表

以下是整个 OpenShift Virtualization 文档中使用的术语:

Container Network Interface (CNI)
一个 Cloud Native Computing Foundation 项目,侧重容器网络连接。OpenShift Virtualization 使用 CNI 插件基于基本 Kubernetes 网络功能进行构建。
Multus
一个“meta”CNI 插件,支持多个 CNI 共存,以便 pod 或虚拟机可使用其所需的接口。
自定义资源定义(CRD)
一个 Kubernetes API 资源,用于定义自定义资源,或使用 CRD API 资源定义的对象。
网络附加定义(NAD)
由 Multus 项目引入的 CRD,允许您将 Pod、虚拟机和虚拟机实例附加到一个或多个网络。
节点网络配置策略(NNCP)
nmstate 项目引入的 CRD,描述节点上请求的网络配置。您可以通过将 NodeNetworkConfigurationPolicy清单应用到集群来更新节点网络配置,包括添加和删除网络接口 。

8.1.2. 使用默认 pod 网络

将虚拟机连接到默认 pod 网络
每个虚拟机默认连接到默认的内部 pod 网络。您可以通过编辑虚拟机规格来添加或删除网络接口。
将虚拟机作为服务公开
您可以通过创建 Service 对象在集群内或集群外公开虚拟机。对于内部集群,您可以使用 MetalLB Operator 配置负载均衡服务。您可以使用 OpenShift Container Platform Web 控制台或 CLI 安装 MetalLB Operator

8.1.3. 配置虚拟机二级网络接口

您可以使用 Linux 网桥、SR-IOV 和 OVN-Kubernetes CNI 插件将虚拟机连接到二级网络。您可以在虚拟机规格中列出多个二级网络和接口。连接到二级网络接口时,不需要在虚拟机规格中指定主 pod 网络。

将虚拟机连接到 OVN-Kubernetes 二级网络

您可以将虚拟机连接到 OVN-Kubernetes 二级网络。OpenShift Virtualization 支持 OVN-Kubernetes 的 layer2localnet 拓扑。localnet 拓扑是在使用或不使用 VLAN 封装的情况下将虚拟机公开给底层物理网络的建议方法。

  • layer2 拓扑通过集群范围的逻辑交换机连接工作负载。OVN-Kubernetes CNI 插件使用 Geneve (通用网络虚拟化封装)协议在节点间创建覆盖网络。您可以使用此覆盖网络在不同的节点上连接虚拟机,而无需配置任何其他物理网络基础架构。
  • localnet 拓扑将二级网络连接到 下的物理网络。这可让 east-west 集群流量并访问在集群外运行的服务,但它需要在集群节点上配置底层 Open vSwitch (OVS) 系统。

要配置 OVN-Kubernetes 二级网络并将虚拟机附加到该网络,请执行以下步骤:

  1. 通过创建网络附加定义(NAD)来配置 OVN-Kubernetes 二级网络

    注意

    对于 localnet 拓扑,您必须在创建 NAD 前创建一个 NodeNetworkConfigurationPolicy 对象来配置 OVS 网桥

  2. 通过在虚拟机规格中添加网络详情,将虚拟机连接到 OVN-Kubernetes 二级网络
将虚拟机连接到 SR-IOV 网络

对于需要高带宽或低延迟的应用程序,您可以使用单根 I/O 虚拟化 (SR-IOV) 网络设备,并在裸机或 Red Hat OpenStack Platform (RHOSP) 基础架构上安装额外网络。

您必须在集群中安装 SR-IOV Network Operator,以管理 SR-IOV 网络设备和网络附加。

您可以通过执行以下步骤将虚拟机连接到 SR-IOV 网络:

  1. 通过创建一个 SriovNetworkNodePolicy CRD 配置一个 SR-IOV 网络设备
  2. 通过创建一个 SriovNetwork 对象来配置 SR-IOV 网络
  3. 通过在虚拟机配置中包含网络详情,将虚拟机连接到 SR-IOV 网络
将虚拟机连接到 Linux 网桥网络

安装 Kubernetes NMState Operator,为您的二级网络配置 Linux 网桥、VLAN 和绑定。OVN-Kubernetes localnet 拓扑是将虚拟机连接到底层物理网络的建议方法,但 OpenShift Virtualization 还支持 Linux 网桥网络。

注意

使用 Linux 网桥网络时,您无法直接附加到默认机器网络。

您可以通过执行以下步骤来创建 Linux 网桥网络并将虚拟机附加到网络:

  1. 通过创建 NodeNetworkConfigurationPolicy 自定义资源定义(CRD) 来配置 Linux 网桥网络设备
  2. 通过创建 NetworkAttachmentDefinition CRD 来配置 Linux 网桥网络
  3. 通过在虚拟机配置中包含网络详情,将虚拟机连接到 Linux 网桥网络
热插二级网络接口
您可以在不停止虚拟机的情况下添加或删除二级网络接口。OpenShift Virtualization 支持热插和热拔使用桥接绑定和 VirtIO 设备驱动程序的二级接口。OpenShift Virtualization 还支持热插使用 SR-IOV 绑定的二级接口。
在 SR-IOV 中使用 DPDK
Data Plane Development Kit (DPDK) 提供了一组库和驱动程序,用于快速数据包处理。您可以配置集群和虚拟机,以通过 SR-IOV 网络运行 DPDK 工作负载。
为实时迁移配置专用网络
您可以为实时迁移配置专用 Multus 网络。专用的网络可最小化实时迁移期间对租户工作负载的网络饱和影响。
使用集群 FQDN 访问虚拟机
您可以使用其完全限定域名 (FQDN) 访问从集群外部附加到二级网络接口的虚拟机。
配置和查看 IP 地址
您可以在创建虚拟机时配置二级网络接口的 IP 地址。IP 地址使用 cloud-init 置备。您可以使用 OpenShift Container Platform Web 控制台或命令行查看虚拟机的 IP 地址。QEMU 客户机代理收集网络信息。

8.1.3.1. 比较 Linux 网桥 CNI 和 OVN-Kubernetes localnet 拓扑

下表提供了在使用 Linux bridge CNI 与 OVN-Kubernetes 插件的 localnet 拓扑相比可用功能的比较:

表 8.1. Linux bridge CNI 与 OVN-Kubernetes localnet 拓扑的比较
功能在 Linux 网桥 CNI 上提供OVN-Kubernetes localnet 上提供

第 2 层访问 underlay 原生网络

仅在二级网络接口控制器(NIC)上。

Layer 2 访问底层 VLAN

网络策略

受管 IP 池

MAC spoof 过滤

8.1.4. 与 OpenShift Service Mesh 集成

将虚拟机连接到服务网格
OpenShift Virtualization 与 OpenShift Service Mesh 集成。您可以监控、视觉化和控制 pod 和虚拟机之间的流量。

8.1.5. 管理 MAC 地址池

为网络接口管理 MAC 地址池
KubeMacPool 组件从共享 MAC 地址池为虚拟机网络接口分配 MAC 地址。这样可确保为每个网络接口分配唯一的 MAC 地址。从该虚拟机创建的虚拟机实例在重启后保留分配的 MAC 地址。

8.1.6. 配置 SSH 访问

配置对虚拟机的 SSH 访问

您可以使用以下方法配置到虚拟机的 SSH 访问:

  • virtctl ssh 命令

    您可以创建一个 SSH 密钥对,将公钥添加到虚拟机,并使用私钥运行 virtctl ssh 命令连接到虚拟机。

    您可以在运行时将公共 SSH 密钥添加到 Red Hat Enterprise Linux (RHEL) 9 虚拟机,或第一次引导到使用 cloud-init 数据源配置的客户机操作系统的虚拟机。

  • virtctl port-forward 命令

    您可以将 virtctl port-foward 命令添加到 .ssh/config 文件中,并使用 OpenSSH 连接到虚拟机。

  • 服务

    您可以创建一个服务,将服务与虚拟机关联,并连接到该服务公开的 IP 地址和端口。

  • 二级网络

    您可以配置二级网络,将虚拟机附加到二级网络接口,并连接到其分配的 IP 地址。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.