第 7 章 网络
7.1. 网络概述
OpenShift Virtualization 使用自定义资源和插件提供高级联网功能。虚拟机(VM)与 AWS 网络上的 Red Hat OpenShift Service 及其生态系统集成。
您无法在单堆栈 IPv6 集群上运行 OpenShift Virtualization。
7.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
清单应用到集群来更新节点网络配置,包括添加和删除网络接口 。
7.1.2. 使用默认 pod 网络
- 将虚拟机连接到默认 pod 网络
- 每个虚拟机默认连接到默认的内部 pod 网络。您可以通过编辑虚拟机规格来添加或删除网络接口。
- 将虚拟机作为服务公开
-
您可以通过创建
Service
对象在集群内或集群外公开虚拟机。
7.1.3. 配置虚拟机二级网络接口
- 将虚拟机连接到 OVN-Kubernetes 二级网络
您可以将虚拟机连接到 Open Virtual Network (OVN) -Kubernetes 二级网络。OpenShift Virtualization 支持 OVN-Kubernetes 的第 2 层和 localnet 拓扑。
- 第 2 层拓扑通过集群范围的逻辑交换机连接工作负载。OVN-Kubernetes Container Network Interface (CNI) 插件使用 Geneve (Generic Network Virtualization Encapsulation) 协议在节点间创建覆盖网络。您可以使用此覆盖网络在不同的节点上连接虚拟机,而无需配置任何其他物理网络基础架构。
- localnet 拓扑将二级网络连接到物理网络。这可让 east-west 集群流量并访问在集群外运行的服务,但它需要在集群节点上配置底层 Open vSwitch (OVS) 系统。
要配置 OVN-Kubernetes 二级网络并将虚拟机附加到该网络,请执行以下步骤:
- 通过创建网络附加定义(NAD)来配置 OVN-Kubernetes 二级网络。
- 通过在虚拟机规格中添加网络详情,将虚拟机连接到 OVN-Kubernetes 二级网络。
- 配置和查看 IP 地址
- 您可以在创建虚拟机时配置二级网络接口的 IP 地址。IP 地址使用 cloud-init 置备。您可以使用 Red Hat OpenShift Service on AWS Web 控制台或命令行查看虚拟机的 IP 地址。QEMU 客户机代理收集网络信息。
7.1.4. 与 OpenShift Service Mesh 集成
- 将虚拟机连接到服务网格
- OpenShift Virtualization 与 OpenShift Service Mesh 集成。您可以监控、视觉化和控制 pod 和虚拟机之间的流量。
7.1.5. 管理 MAC 地址池
- 为网络接口管理 MAC 地址池
- KubeMacPool 组件从共享 MAC 地址池为虚拟机网络接口分配 MAC 地址。这样可确保为每个网络接口分配唯一的 MAC 地址。从该虚拟机创建的虚拟机实例在重启后保留分配的 MAC 地址。
7.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 地址。