This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.7.17. 虚拟机网络
7.17.1. 为默认 pod 网络配置虚拟机 复制链接链接已复制到粘贴板!
					您可以通过将其网络接口配置为使用 masquerade 绑定模式,将虚拟机连接到默认的内部 pod 网络。
				
KubeMacPool 组件为指定命名空间中的虚拟机 NIC 提供 MAC 地址池服务。默认情况下不启用它。通过将 KubeMacPool 标签应用到该命名空间来启用命名空间中的 MAC 地址池。
7.17.1.1. 从命令行配置伪装模式 复制链接链接已复制到粘贴板!
您可以使用伪装模式将虚拟机的外发流量隐藏在 pod IP 地址后。伪装模式使用网络地址转换 (NAT) 来通过 Linux 网桥将虚拟机连接至 pod 网络后端。
启用伪装模式,并通过编辑虚拟机配置文件让流量进入虚拟机。
先决条件
- 虚拟机必须配置为使用 DHCP 来获取 IPv4 地址。以下示例配置为使用 DHCP。
 
流程
编辑虚拟机配置文件的
interfaces规格:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意端口 49152 和 49153 保留供 libvirt 平台使用,这些端口的所有其他传入流量将被丢弃。
创建虚拟机:
oc create -f <vm-name>.yaml
$ oc create -f <vm-name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
7.17.1.2. 从虚拟机创建服务 复制链接链接已复制到粘贴板!
						首先通过创建 Service 对象来公开虚拟机,从正在运行的虚拟机创建服务。
					
						ClusterIP 服务类型会在集群内部公开虚拟机。NodePort 或 LoadBalancer 服务类型在集群外为外部公开虚拟机。
					
						此流程演示了如何创建、连接和公开一个 type: ClusterIP Service 对象作为虚拟机支持的服务。
					
							如果没有指定 服务类型,ClusterIP 是默认的服务类型。
						
流程
编辑虚拟机 YAML,如下所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - 在
spec.template.metadata.labels部分添加标签special: key。 
注意虚拟机上的标签会传递到 pod。
VirtualMachine配置上的标签(例如,special: key)必须与ServiceYAMLselector属性中的标签匹配,您在此流程中创建该属性。- 保存虚拟机 YAML 以应用您的更改。
 编辑
ServiceYAML 以配置创建和公开Service对象所需的设置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - 指定您要创建和公开的服务的
名称。 - 2
 - 在
ServiceYAML 的metadata部分中指定与您在虚拟机 YAML 中指定的namespace对应的namespace。 - 3
 - 添加
targetPort: 22,在 SSH 端口22中公开服务。 - 4
 - 在
ServiceYAML 的spec部分,将special: key添加到selector属性中,该属性与您在虚拟机 YAML 配置文件中添加的labels对应。 - 5
 - 在
ServiceYAML 的spec部分,为 ClusterIP 服务添加type: ClusterIP要在集群外部创建和公开其他类型的服务,如NodePort和LoadBalancer,根据情况将type: ClusterIP替换为type: NodePort或type: LoadBalancer。 
- 
								保存 
ServiceYAML 以存储服务配置。 创建
ClusterIP服务:oc create -f <service_name>.yaml
$ oc create -f <service_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 启动虚拟机。如果虚拟机已在运行,重启它。
 查询
Service对象以验证它是否可用,并使用ClusterIP类型进行配置。验证
运行
oc get service命令,指定您在虚拟机和ServiceYAML 文件中引用的namespace。oc get service -n example-namespace
$ oc get service -n example-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE vmservice ClusterIP 172.30.3.149 <none> 27017/TCP 2m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE vmservice ClusterIP 172.30.3.149 <none> 27017/TCP 2mCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 
												如输出所示,
vmservice正在运行。 - 
												如您在 
ServiceYAML 中指定,TYPE显示为ClusterIP。 
- 
												如输出所示,
 
建立到您要用来支持您的服务的虚拟机的连接。从集群内的一个对象(如另一个虚拟机)连接。
编辑虚拟机 YAML,如下所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
oc create命令来创建第二个虚拟机,其中file.yaml是虚拟机 YAML 的名称:oc create -f <file.yaml>
$ oc create -f <file.yaml>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 启动虚拟机。
 运行以下
virtctl命令连接到虚拟机:virtctl -n example-namespace console <new-vm-name>
$ virtctl -n example-namespace console <new-vm-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对于服务类型
LoadBalancer,使用vinagre客户端使用公共 IP 和端口连接您的虚拟机。在使用服务类型LoadBalancer时,外部端口会被动态分配。运行
ssh命令验证连接,其中172.30.3.149 是服务的 ClusterIP,fedora是虚拟机的用户名:ssh fedora@172.30.3.149 -p 27017
$ ssh fedora@172.30.3.149 -p 27017Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
- 您收到用于支持要公开服务的虚拟机的命令行提示符。现在,您有一个被一个运行的虚拟机支持的服务。