第 8 章 网络
8.1. 网络概述
OpenShift Virtualization 使用自定义资源和插件提供高级联网功能。虚拟机(VM)与 OpenShift Container Platform 网络及其生态系统集成。
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 网桥网络
安装 Kubernetes NMState Operator,为您的二级网络配置 Linux 网桥、VLAN 和绑定。
您可以通过执行以下步骤来创建 Linux 网桥网络并将虚拟机附加到网络:
-
通过创建
NodeNetworkConfigurationPolicy
自定义资源定义(CRD) 来配置 Linux 网桥网络设备。 -
通过创建
NetworkAttachmentDefinition
CRD 来配置 Linux 网桥网络。 - 通过在虚拟机配置中包含网络详情,将虚拟机连接到 Linux 网桥网络。
-
通过创建
- 将虚拟机连接到 SR-IOV 网络
对于需要高带宽或低延迟的应用程序,您可以使用单根 I/O 虚拟化 (SR-IOV) 网络设备,并在裸机或 Red Hat OpenStack Platform (RHOSP) 基础架构上安装额外网络。
您必须在集群中安装 SR-IOV Network Operator,以管理 SR-IOV 网络设备和网络附加。
您可以通过执行以下步骤将虚拟机连接到 SR-IOV 网络:
-
通过创建一个
SriovNetworkNodePolicy
CRD 配置一个 SR-IOV 网络设备。 -
通过创建一个
SriovNetwork
对象来配置 SR-IOV 网络。 - 通过在虚拟机配置中包含网络详情,将虚拟机连接到 SR-IOV 网络。
-
通过创建一个
- 将虚拟机连接到 OVN-Kubernetes 二级网络
您可以将虚拟机连接到 Open Virtual Network (OVN) -Kubernetes 二级网络。要配置 OVN-Kubernetes 二级网络并将虚拟机附加到该网络,请执行以下步骤:
-
通过创建
NetworkAttachmentDefinition
CRD 来配置 OVN-Kubernetes 二级网络。 - 通过在虚拟机规格中添加网络详情,将虚拟机连接到 OVN-Kubernetes 二级网络。
-
通过创建
- 热插二级网络接口
- 您可以在不停止虚拟机的情况下添加或删除二级网络接口。OpenShift Virtualization 支持热插和热拔使用 VirtIO 设备驱动程序的 Linux 网桥接口。
- 在 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.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 访问:
您可以创建一个 SSH 密钥对,将公钥添加到虚拟机,并使用私钥运行
virtctl ssh
命令连接到虚拟机。您可以在运行时将公共 SSH 密钥添加到 Red Hat Enterprise Linux (RHEL) 9 虚拟机,或第一次引导到使用 cloud-init 数据源配置的客户机操作系统的虚拟机。
您可以将
virtctl port-foward
命令添加到.ssh/config
文件中,并使用 OpenSSH 连接到虚拟机。您可以创建一个服务,将服务与虚拟机关联,并连接到该服务公开的 IP 地址和端口。
您可以配置二级网络,将虚拟机附加到二级网络接口,并连接到其分配的 IP 地址。