8.4. 使用其内部 FQDN 访问虚拟机
现在,您可以使用无头服务,访问连接到一个具有稳定 FQDN 的默认内部 pod 网络的虚拟机。
Kubernetes 无头服务 是一种形式的服务,它不会分配集群 IP 地址来代表一组 pod。对于无头服务,它不是为服务提供一个虚拟 IP 地址,而是为与服务关联的每个 pod 创建一个 DNS 记录。您可以通过 FQDN 来公开虚拟机,而无需公开特定的 TCP 或 UDP 端口。
如果使用 OpenShift Container Platform Web 控制台创建虚拟机,您可以在 VirtualMachine 详情页的 Overview 标签页中找到它在 Network 标题中列出的内部 FQDN。有关连接到虚拟机的更多信息,请参阅使用其内部 FQDN 连接到虚拟机。
8.4.1. 使用 CLI 在项目中创建无头服务
					要在命名空间中创建无头服务,请将 clusterIP: None 参数添加到服务 YAML 定义中。
				
先决条件
- 
							已安装 OpenShift CLI(oc)。
流程
- 创建 - Service清单以公开虚拟机,如下例所示:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
							保存 Service清单文件。
- 运行以下命令来创建服务: - oc create -f headless_service.yaml - $ oc create -f headless_service.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
8.4.2. 使用 CLI 将虚拟机映射到无头服务
					要使用其内部完全限定域名 (FQDN) 从集群中连接到虚拟机 (VM),您必须首先将虚拟机映射到无头服务。在虚拟机配置文件中设置 spec.hostname 和 spec.subdomain 参数。
				
					如果一个无头服务的名称与子域匹配,则会为虚拟机创建一个唯一的 DNS 记录,格式为 <vm.spec.hostname>.<vm.spec.subdomain>.<vm.metadata.namespace>.svc.cluster.local。
				
流程
- 运行以下命令,编辑 - VirtualMachine清单以添加服务选择器标签和子域:- oc edit vm <vm_name> - $ oc edit vm <vm_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - VirtualMachine清单文件示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 保存更改并退出编辑器。
- 重启虚拟机以应用更改。
8.4.3. 使用其内部 FQDN 连接到虚拟机
您可以使用其内部完全限定域名 (FQDN) 连接到虚拟机 (VM)。
先决条件
- 
							已安装 virtctl工具。
- 
							您已从 web 控制台或将虚拟机映射到无头服务来识别虚拟机的内部 FQDN。内部 FQDN 的格式是 <vm.spec.hostname>.<vm.spec.subdomain>.<vm.metadata.namespace>.svc.cluster.local。
流程
- 输入以下命令连接到虚拟机控制台: - virtctl console vm-fedora - $ virtctl console vm-fedora- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 要使用请求的 FQDN 连接到虚拟机,请运行以下命令: - ping myvm.mysubdomain.<namespace>.svc.cluster.local - $ ping myvm.mysubdomain.<namespace>.svc.cluster.local- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - PING myvm.mysubdomain.default.svc.cluster.local (10.244.0.57) 56(84) bytes of data. 64 bytes from myvm.mysubdomain.default.svc.cluster.local (10.244.0.57): icmp_seq=1 ttl=64 time=0.029 ms - PING myvm.mysubdomain.default.svc.cluster.local (10.244.0.57) 56(84) bytes of data. 64 bytes from myvm.mysubdomain.default.svc.cluster.local (10.244.0.57): icmp_seq=1 ttl=64 time=0.029 ms- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 在前面的示例中, - myvm.mysubdomain.default.svc.cluster.local的 DNS 记录指向- 10.244.0.57,这是目前分配给虚拟机的集群 IP 地址。