2.10. 在 vSphere 上创建计算机器设置
您可以在 VMware vSphere 上的 OpenShift Container Platform 集群中创建不同的计算机器集来满足特定目的。例如,您可以创建基础架构机器集和相关的机器,以便将支持型工作负载转移到新机器上。
您只能在 Machine API 操作的集群中使用高级机器管理和扩展功能。具有用户置备的基础架构的集群需要额外的验证和配置才能使用 Machine API。
					具有基础架构平台类型 none 的集群无法使用 Machine API。即使附加到集群的计算机器安装在支持该功能的平台上,也会应用这个限制。在安装后无法更改此参数。
				
要查看集群的平台类型,请运行以下命令:
oc get infrastructure cluster -o jsonpath='{.status.platform}'
$ oc get infrastructure cluster -o jsonpath='{.status.platform}'2.10.1. vSphere 上计算机器设置自定义资源的 YAML 示例
					此 YAML 示例定义了一个在 VMware vSphere 上运行的计算机器集,并创建通过 node-role.kubernetes.io/<role>: "" 标记的节点。
				
					在本例中,<infrastructure_id> 是基础架构 ID 标签,该标签基于您在置备集群时设定的集群 ID,而 <role> 则是要添加的节点标签。
				
- 1
- 指定基于置备集群时所设置的集群 ID 的基础架构 ID。如果已安装 OpenShift CLI(oc)软件包,您可以通过运行以下命令来获取基础架构 ID:oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
- 2
- 指定基础架构 ID 和节点标签。
- 3
- 指定要添加的节点标签。
- 4
- 指定要将计算机器设置为的 vSphere VM 网络。此虚拟机网络必须是集群中其他计算机器所处的位置。
- 5
- 指定要使用的 vSphere 虚拟机模板,如user-5ddjd-rhcos。
- 6
- 指定要将计算机器设置为的 vCenter Datacenter。
- 7
- 指定要部署计算机器的 vCenter Datastore。
- 8
- 指定 vCenter 中 vSphere 虚拟机文件夹的路径,如/dc1/vm/user-inst-5ddjd。
- 9
- 指定虚拟机的 vSphere 资源池。
- 10
- 指定 vCenter 服务器 IP 或完全限定域名。
2.10.2. 计算机器设置管理的最低 vCenter 权限
要在 vCenter 上的 OpenShift Container Platform 集群中管理计算机器,您必须使用一个具有特权的帐户来读取、创建和删除所需资源。使用具有全局管理特权的帐户是访问所有所需权限的最简单方法。
如果无法使用具有全局管理权限的帐户,您必须创建一个角色来授予最低所需的权限。下表列出了创建、扩展和删除 OpenShift Container Platform 集群中的机器所需的最低 vCenter 角色和特权。
例 2.1. 计算机器设置管理所需的最低 vCenter 角色和权限
| 适用于角色的 vSphere 对象 | 必要时 | 所需的权限 | 
|---|---|---|
| vSphere vCenter | Always | 
										 | 
| vSphere vCenter 集群 | Always | 
										 | 
| vSphere Datastore | Always | 
										 | 
| vSphere 端口组 | Always | 
										 | 
| 虚拟机文件夹 | Always | 
										 | 
| vSphere vCenter 数据中心 | 如果安装程序创建虚拟机文件夹 | 
										 | 
| 
										1  | ||
下表详细介绍了计算机器设置管理所需的权限和传播设置。
例 2.2. 所需的权限和传播设置
| vSphere object | 文件夹类型 | 传播到子对象 | 所需的权限 | 
|---|---|---|---|
| vSphere vCenter | Always | 不是必需的 | 列出所需的权限 | 
| vSphere vCenter Datacenter | 现有文件夹 | 不是必需的 | 
										 | 
| 安装程序创建文件夹 | 必填 | 列出所需的权限 | |
| vSphere vCenter 集群 | Always | 必填 | 列出所需的权限 | 
| vSphere vCenter 数据存储 | Always | 不是必需的 | 列出所需的权限 | 
| vSphere Switch | Always | 不是必需的 | 
										 | 
| vSphere 端口组 | Always | 不是必需的 | 列出所需的权限 | 
| vSphere vCenter 虚拟机文件夹 | 现有文件夹 | 必填 | 列出所需的权限 | 
有关只使用所需权限创建帐户的更多信息,请参阅 vSphere 文档中的 vSphere 权限和用户管理任务。
2.10.3. 具有用户置备基础架构的集群的要求以使用计算机器集
要在具有用户置备的基础架构的集群中使用计算机器集,您必须确保集群配置支持使用 Machine API。
2.10.3.1. 获取基础架构 ID
要创建计算机器集,您必须能够为集群提供基础架构 ID。
流程
- 要获取集群的基础架构 ID,请运行以下命令: - oc get infrastructure cluster -o jsonpath='{.status.infrastructureName}'- $ oc get infrastructure cluster -o jsonpath='{.status.infrastructureName}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
2.10.3.2. 满足 vSphere 凭证要求
						要使用计算机器集,Machine API 必须能够与 vCenter 交互。授权 Machine API 组件与 vCenter 交互的凭证必须存在于 openshift-machine-api 命名空间中的 secret 中。
					
流程
- 要确定所需的凭证是否存在,请运行以下命令: - oc get secret \ -n openshift-machine-api vsphere-cloud-credentials \ -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'- $ oc get secret \ -n openshift-machine-api vsphere-cloud-credentials \ -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - <vcenter-server>.password=<openshift-user-password> <vcenter-server>.username=<openshift-user> - <vcenter-server>.password=<openshift-user-password> <vcenter-server>.username=<openshift-user>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 其中 - <vcenter-server>是 vCenter 服务器的 IP 地址或完全限定域名(FQDN),- <openshift-user>和- <openshift-user-password>是要使用的 OpenShift Container Platform 管理员凭证。
- 如果 secret 不存在,请运行以下命令来创建它: - oc create secret generic vsphere-cloud-credentials \ -n openshift-machine-api \ --from-literal=<vcenter-server>.username=<openshift-user> --from-literal=<vcenter-server>.password=<openshift-user-password> - $ oc create secret generic vsphere-cloud-credentials \ -n openshift-machine-api \ --from-literal=<vcenter-server>.username=<openshift-user> --from-literal=<vcenter-server>.password=<openshift-user-password>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
2.10.3.3. 满足 Ignition 配置要求
						置备虚拟机 (VM) 需要有效的 Ignition 配置。Ignition 配置包含 machine-config-server 地址和系统信任捆绑包,用于从 Machine Config Operator 获取进一步的 Ignition 配置。
					
						默认情况下,此配置存储在 machine-api-operator 命名空间中的 worker-user-data secret 中。计算机器集在机器创建过程中引用 secret。
					
流程
- 要确定所需的 secret 是否存在,请运行以下命令: - oc get secret \ -n openshift-machine-api worker-user-data \ -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'- $ oc get secret \ -n openshift-machine-api worker-user-data \ -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 此处省略了完整输出,但应该具有此格式。
 
- 如果 secret 不存在,请运行以下命令来创建它: - oc create secret generic worker-user-data \ -n openshift-machine-api \ --from-file=<installation_directory>/worker.ign - $ oc create secret generic worker-user-data \ -n openshift-machine-api \ --from-file=<installation_directory>/worker.ign- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 其中 - <installation_directory>是在集群安装过程中存储安装资产的目录。
2.10.4. 创建计算机器集
除了安装程序创建的计算机器集外,您还可以创建自己的来动态管理您选择的特定工作负载的机器计算资源。
						使用用户置备的基础架构安装的集群有不同的网络堆栈,与带有安装程序置备的基础架构的集群不同。因此,具有用户置备的基础架构的集群中不支持自动负载均衡器管理。对于这些集群,计算机器集只能创建 worker 和 infra 类型的机器。
					
先决条件
- 部署一个 OpenShift Container Platform 集群。
- 
							安装 OpenShift CLI(oc)。
- 
							以具有 cluster-admin权限的用户身份登录oc。
- 具有在 vCenter 实例中部署虚拟机所需的权限,并对指定的数据存储具有所需的访问权限。
- 如果您的集群使用用户置备的基础架构,则代表已满足该配置的特定 Machine API 要求。
流程
- 创建一个包含计算机器集自定义资源(CR)示例的新 YAML 文件,并将其命名为 - <file_name>.yaml。- 确保设置 - <clusterID>和- <role>参数值。
- 可选:如果您不确定要为特定字段设置哪个值,您可以从集群中检查现有计算机器集: - 要列出集群中的计算机器集,请运行以下命令: - oc get machinesets -n openshift-machine-api - $ oc get machinesets -n openshift-machine-api- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 要查看特定计算机器集自定义资源 (CR) 的值,请运行以下命令: - oc get machineset <machineset_name> \ -n openshift-machine-api -o yaml - $ oc get machineset <machineset_name> \ -n openshift-machine-api -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 如果您要为具有用户置备的基础架构的集群创建计算机器集,请注意以下重要值: - vSphere - providerSpec值示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 运行以下命令来创建 - MachineSetCR:- oc create -f <file_name>.yaml - $ oc create -f <file_name>.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 运行以下命令,查看计算机器集列表: - oc get machineset -n openshift-machine-api - $ oc get machineset -n openshift-machine-api- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 当新的计算机器集可用时, - DESIRED和- CURRENT的值会匹配。如果 compute 机器集不可用,请等待几分钟,然后再次运行命令。
2.10.5. 为集群自动扩展标记 GPU 机器集
您可以使用机器集标签来指示集群自动扩展可以用来部署启用了 GPU 的节点的机器。
先决条件
- 集群使用集群自动扩展。
流程
- 在您要为集群自动扩展创建机器的机器集中,用来部署启用了 GPU 的节点,添加 - cluster-api/accelerator标签:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定您选择的标签,其由字母数字字符、-、_或.组成,并以字母数字字符开头,并以字母数字字符结尾。例如,您可以使用nvidia-t4代表 Nvidia T4 GPU,或使用nvidia-a10g代表 A10G GPU。注意您必须为 ClusterAutoscalerCR 中的spec.resourceLimits.gpus.type参数指定此标签的值。如需更多信息,请参阅"集群自动扩展资源定义"。