9.3. 将虚拟机连接到主用户定义的网络
您可以使用 Red Hat OpenShift Service on AWS 经典架构 web 控制台或 CLI 将虚拟机(VM)连接到虚拟机的主接口上的用户定义网络(UDN)。主用户定义的网络替换了指定命名空间中的默认 pod 网络。与 pod 网络不同,您可以定义每个项目的主要 UDN,每个项目都可以使用其特定的子网和拓扑。
OpenShift Virtualization 支持命名空间范围的 UserDefinedNetwork 和集群范围的 ClusterUserDefinedNetwork 自定义资源定义(CRD)。
集群管理员可以配置主 UserDefinedNetwork CRD,创建一个租户网络,该网络将租户命名空间与其他命名空间隔离开来,而无需网络策略。另外,集群管理员可以使用 ClusterUserDefinedNetwork CRD 在多个命名空间中创建共享 OVN 网络。
在创建用于用户定义的网络的命名空间时,您必须添加 k8s.ovn.org/primary-user-defined-network 标签。
使用第 2 层拓扑时,OVN-Kubernetes 会在节点间创建一个覆盖网络。您可以使用此覆盖网络来连接不同节点上的虚拟机,而无需配置任何额外的物理网络基础架构。
第 2 层拓扑启用虚拟机无缝迁移,而无需进行网络地址转换(NAT),因为实时迁移过程中在集群节点中保留持久的 IP 地址。
在实现主 UDN 前,您必须考虑以下限制:
-
您不能使用
virtctl ssh命令配置虚拟机的 SSH 访问。 -
您不能使用
oc port-forward命令将端口转发到虚拟机。 - 您不能使用无头服务来访问虚拟机。
9.3.1. 使用 Web 控制台创建主用户定义的网络 复制链接链接已复制到粘贴板!
您可以使用 Red Hat OpenShift Service on AWS 经典架构 Web 控制台来创建主要命名空间范围的 UserDefinedNetwork 或集群范围的 ClusterUserDefinedNetwork CRD。UDN 充当您在与网络关联的命名空间中创建的 pod 和虚拟机的默认主网络。
9.3.1.1. 使用 Web 控制台为用户定义的网络创建命名空间 复制链接链接已复制到粘贴板!
您可以使用 Red Hat OpenShift Service on AWS 经典架构 web 控制台创建一个用于主用户定义的网络(UDN)的命名空间。
先决条件
-
以具有
cluster-admin权限的用户身份登录 Red Hat OpenShift Service on AWS 经典架构 Web 控制台。
流程
-
从 Administrator 视角中,点 Administration
Namespaces。 - 点 Create Namespace。
- 在 Name 字段中,为命名空间指定一个名称。名称必须包含小写字母数字字符或 '-',且必须以字母数字字符开头和结尾。
-
在 Labels 字段中,添加
k8s.ovn.org/primary-user-defined-network标签。 -
可选:如果要将命名空间与现有集群范围的 UDN 一起使用,请添加
ClusterUserDefinedNetwork自定义资源的spec.namespaceSelector字段中定义的适当标签。 - 可选:指定一个默认网络策略。
- 点 Create 创建命名空间。
9.3.1.2. 使用 Web 控制台创建主要命名空间范围的用户定义的网络 复制链接链接已复制到粘贴板!
您可以通过在 Red Hat OpenShift Service on AWS 经典架构 web 控制台中创建 UserDefinedNetwork 自定义资源,在项目命名空间中创建隔离的主网络。
先决条件
-
您可以使用具有
cluster-admin权限的用户访问 Red Hat OpenShift Service on AWS 经典架构 Web 控制台。 -
您已创建了命名空间,并应用
k8s.ovn.org/primary-user-defined-network标签。如需更多信息,请参阅"使用 Web 控制台为用户定义网络创建命名空间"。
流程
-
从 Administrator 视角中,点 Networking
UserDefinedNetworks。 - 点 Create UserDefinedNetwork。
- 从 Project name 列表中,选择您之前创建的命名空间。
- 在 Subnet 字段中指定一个值。
- 点 Create。用户定义的网络充当您在此命名空间中创建的 Pod 和虚拟机的默认主网络。
9.3.1.3. 使用 Web 控制台创建主要集群范围的用户定义的网络 复制链接链接已复制到粘贴板!
您可以通过在 Red Hat OpenShift Service on AWS 经典架构 web 控制台中创建 ClusterUserDefinedNetwork 自定义资源,将多个命名空间连接到同一主用户定义的网络(UDN)。
先决条件
-
您可以使用具有
cluster-admin权限的用户访问 Red Hat OpenShift Service on AWS 经典架构 Web 控制台。
流程
-
从 Administrator 视角中,点 Networking
UserDefinedNetworks。 - 从 Create 列表中,选择 ClusterUserDefinedNetwork。
- 在 Name 字段中,为集群范围的 UDN 指定名称。
- 在 Subnet 字段中指定一个值。
- 在 Project (s) Match Labels 字段中,添加适当的标签以选择集群 UDN 应用到的命名空间。
- 点 Create。集群范围的 UDN 充当 pod 和虚拟机位于命名空间的默认主网络,其中包含在第 5 步中指定的标签。
后续步骤
9.3.2. 使用 CLI 创建主要用户定义的网络 复制链接链接已复制到粘贴板!
您可以使用 CLI 创建主 UserDefinedNetwork 或 ClusterUserDefinedNetwork CRD。
9.3.2.1. 使用 CLI 为用户定义的网络创建命名空间 复制链接链接已复制到粘贴板!
您可以使用 OpenShift CLI (oc)创建一个命名空间,以用于主要用户定义的网络(UDN)。
先决条件
-
您可以使用具有
cluster-admin权限的用户访问集群。 -
已安装 OpenShift CLI(
oc)。
流程
创建一个
Namespace对象作为一个类似以下示例的 YAML 文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 与 UDN 关联的命名空间需要该标签。如果命名空间与现有集群 UDN 一起使用,还必须添加
ClusterUserDefinedNetwork自定义资源的spec.namespaceSelector字段中定义的适当标签。
运行以下命令来应用
Namespace清单:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3.2.2. 使用 CLI 创建主要命名空间范围的用户定义的网络 复制链接链接已复制到粘贴板!
您可以使用 CLI 在项目命名空间中创建隔离的主网络。您必须使用 OVN-Kubernetes 第 2 层拓扑,并在用户定义的网络(UDN)配置中启用持久性 IP 地址分配,以确保虚拟机实时迁移支持。
先决条件
-
已安装 OpenShift CLI(
oc)。 -
您已创建了命名空间,并应用
k8s.ovn.org/primary-user-defined-network标签。
流程
创建
UserDefinedNetwork对象以指定自定义网络配置:UserDefinedNetwork清单示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定
UserDefinedNetwork自定义资源的名称。 - 2
- 指定虚拟机所在的命名空间。命名空间必须具有
k8s.ovn.org/primary-user-defined-network标签。命名空间不能为default,openshift requirements命名空间,或者与 Cluster Network Operator (CNO)定义的任何全局命名空间匹配。 - 3
- 指定网络的拓扑配置。所需的值为
Layer2。Layer2拓扑会创建一个逻辑交换机,供所有节点共享。 - 4
- 指定 UDN 是 primary 或 secondary。
Primary角色意味着 UDN 充当虚拟机的主网络,所有默认流量都通过此网络。 - 5
- 指定虚拟工作负载在重新引导和迁移后具有一致的 IP 地址。当指定
ipam.lifecycle: Persistent时,需要spec.layer2.subnets字段。
运行以下命令来应用
UserDefinedNetwork清单:oc apply -f --validate=true <filename>.yaml
$ oc apply -f --validate=true <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3.2.3. 使用 CLI 创建主要集群范围的用户定义的网络 复制链接链接已复制到粘贴板!
您可以使用 CLI 将多个命名空间连接到同一主要用户定义的网络(UDN),以实现原生租户隔离。
先决条件
-
您可以使用具有
cluster-admin权限的用户访问集群。 -
已安装 OpenShift CLI(
oc)。
流程
创建
ClusterUserDefinedNetwork对象来指定自定义网络配置:ClusterUserDefinedNetwork清单示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定
ClusterUserDefinedNetwork自定义资源的名称。 - 2
- 指定集群 UDN 应用到的命名空间集合。命名空间选择器不得指向
default、openshift channel命名空间或 Cluster Network Operator (CNO) 定义的任何全局命名空间。 - 3
- 指定选择器的类型。在本例中,
matchExpressions选择器选择带有标签kubernetes.io/metadata.name且值为red-namespace或blue-namespace的对象。 - 4
- 指定 Operator 的类型。可能的值有
In、NotIn和Exists。 - 5
- 指定网络的拓扑配置。所需的值为
Layer2。Layer2拓扑会创建一个逻辑交换机,供所有节点共享。 - 6
- 指定 UDN 是 primary 或 secondary。
Primary角色意味着 UDN 充当虚拟机的主网络,所有默认流量都通过此网络。
运行以下命令来应用
ClusterUserDefinedNetwork清单:oc apply -f --validate=true <filename>.yaml
$ oc apply -f --validate=true <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
9.3.3. 将虚拟机附加到主用户定义的网络 复制链接链接已复制到粘贴板!
您可以通过请求 pod 网络附加并配置接口绑定,将虚拟机(VM)连接到主用户定义的网络(UDN)。
OpenShift Virtualization 支持以下网络绑定插件,将网络接口连接到虚拟机:
- 第 2 层网桥
- 第 2 层网桥绑定在虚拟机虚拟接口和 UDN 的虚拟交换机之间创建一个直接层 2 连接。
- passt
插件简单套接字传输(passt)绑定提供了一个用户空间网络解决方案,它可与 pod 网络无缝集成,从而更好地与 Red Hat OpenShift Service on AWS 经典架构网络生态系统集成。
passt 绑定有以下优点:
- 您可以定义就绪度和存活度 HTTP 探测来配置虚拟机健康检查。
- 您可以参阅 Red Hat Advanced Cluster Security 来监控集群中的 TCP 流量。
使用 passt 绑定插件将虚拟机附加到主 UDN 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
9.3.3.1. 使用 web 控制台将虚拟机附加到主用户定义的网络 复制链接链接已复制到粘贴板!
您可以使用 Red Hat OpenShift Service on AWS 经典架构 web 控制台将虚拟机(VM)连接到主用户定义的网络(UDN)。在配置了主 UDN 的命名空间中创建的虚拟机会自动附加到带有第 2 层网桥网络绑定插件的 UDN。
要使用插件简单套接字传输(passt)绑定将虚拟机附加到主 UDN,请在 web 控制台中启用插件并配置虚拟机网络接口。
使用 passt 绑定插件将虚拟机附加到主 UDN 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
先决条件
- 已登陆到 Red Hat OpenShift Service on AWS 经典架构 Web 控制台。
流程
按照以下步骤启用 passt 网络绑定插件技术预览功能:
- 从 Virtualization 视角中,单击 Overview。
- 在 Virtualization 页面中,点 Settings 选项卡。
- 点 Preview features,为主用户定义的网络设置 Enable Passt binding to on。
- 从 Virtualization 视角中,点 VirtualMachines。
- 选择一个虚拟机以打开 VirtualMachine 详情页。
- 点 Configuration 选项卡。
- 单击 Network。
- 点击 Network interfaces 页中的 Options 菜单 并选择 Edit。
- 在 Edit network interface 对话框中,从 Network 列表中选择默认 pod 网络附加。
- 展开 Advanced,然后选择 Passt 绑定。
- 点击 Save。
- 如果您的虚拟机正在运行,重启它以使更改生效。
9.3.3.2. 使用 CLI 将虚拟机附加到主用户定义的网络 复制链接链接已复制到粘贴板!
您可以使用 CLI 将虚拟机(VM)连接到主用户定义的网络(UDN)。
先决条件
-
已安装 OpenShift CLI(
oc)。
流程
编辑
VirtualMachine清单以添加 UDN 接口详情,如下例所示:VirtualMachine清单示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果您使用 Plug a Simple Socket Transport (passt)网络绑定插件,请运行以下命令将
HyperConverged自定义资源(CR)中的hco.kubevirt.io/deployPasstNetworkBinding注解设置为true:oc annotate hco kubevirt-hyperconverged -n kubevirt-hyperconverged hco.kubevirt.io/deployPasstNetworkBinding=true --overwrite
$ oc annotate hco kubevirt-hyperconverged -n kubevirt-hyperconverged hco.kubevirt.io/deployPasstNetworkBinding=true --overwriteCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要使用 passt 绑定插件将虚拟机附加到主 UDN 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
运行以下命令来应用
VirtualMachine清单:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow