6.4. 在 Nutanix 上创建 Windows MachineSet 对象
您可以在 Nutanix 上的 OpenShift Container Platform 集群中创建 Windows MachineSet
对象来满足特定目的。例如,您可以创建基础架构 Windows 机器集和相关机器,以便将支持的 Windows 工作负载转移到新的 Windows 机器上。
6.4.1. 先决条件 复制链接链接已复制到粘贴板!
- 已使用 Operator Lifecycle Manager(OLM)安装 Windows Machine Config Operator(WMCO)。
- 您可以使用受支持的 Windows Server 作为操作系统镜像。
-
您为内部 API 服务器 URL
api-int.<cluster_name>.<base_domain>
添加了一个新的 DNS 条目,它指向外部 API 服务器 URLapi.<cluster_name>.<base_domain>
。这可以是一个 CNAME 或一个 A 记录。
6.4.2. Machine API 概述 复制链接链接已复制到粘贴板!
Machine API 将基于上游 Cluster API 项目的主要资源与自定义 OpenShift Container Platform 资源相结合。
对于 OpenShift Container Platform 4.19 集群,在集群安装完成后,Machine API 会执行所有节点主机置备管理操作。因此,OpenShift Container Platform 4.19 在公有或私有云基础架构之上提供了一种弹性动态置备的方法。
两种主要资源分别是:
- Machines
-
描述节点主机的基本单元。机器具有
providerSpec
规格,用于描述为不同云平台提供的计算节点的类型。例如,计算节点的机器类型可能会定义特定的机器类型和所需的元数据。 - 机器集
MachineSet
资源是计算机器组。计算机器集适用于计算机器,因为副本集是针对 pod。如果需要更多计算机器或必须缩减规模,您可以更改MachineSet
资源的replicas
字段来满足您的计算需求。警告control plane 机器不能由计算机器集管理。
control plane 机器集为 control plane 机器提供管理功能,与为计算机器提供的计算机器集类似。
如需更多信息,请参阅"管理 control plane 机器"。
以下自定义资源可为集群添加更多功能:
- 机器自动扩展
MachineAutoscaler
资源自动扩展云中的计算机器。您可以为指定计算机器集中的节点设置最小和最大扩展界限,机器自动扩展则维护该范围内的节点。ClusterAutoscaler
对象存在后,MachineAutoscaler
对象生效。ClusterAutoscaler
和MachineAutoscaler
资源都由ClusterAutoscalerOperator
对象提供。- 集群自动扩展
此资源基于上游集群自动扩展项目。在 OpenShift Container Platform 实现中,它通过扩展计算机器设置 API 来与 Machine API 集成。您可以使用以下方法使用集群自动扩展来管理集群:
- 为内核、节点、内存和 GPU 等资源设置集群范围的扩展限制
- 设置优先级,以便集群对 pod 和新节点进行优先排序,而在不太重要的 pod 时不会上线
- 设置扩展策略,以便您可以扩展节点,但不会缩减节点
- 机器健康检查
-
MachineHealthCheck
资源可检测机器何时处于不健康状态并将其删除,然后在支持的平台上生成新的机器。
在 OpenShift Container Platform 版本 3.11 中,您无法轻松地推出多区架构,因为集群不负责管理机器置备。自 OpenShift Container Platform 版本 4.1 起,此过程变得更加容易。每个计算机器集限定在一个区,因此安装程序可以代表您的可用区向计算机器集发送。然后,由于您的计算是动态的,因此在面对区域故障时,您始终都有一个区域来应对必须重新平衡机器的情况。在没有多个可用区的全局 Azure 区域,您可以使用可用性集来确保高可用性。自动扩展器在集群生命周期内尽可能提供平衡。
6.4.3. Nutanix 上 Windows MachineSet 对象的 YAML 示例 复制链接链接已复制到粘贴板!
此 YAML 示例定义了一个在 Nutanix 上运行的 Windows MachineSet
对象,Windows Machine Config Operator (WMCO) 可以响应。
- 1 3 5
- 指定基于置备集群时所设置的集群 ID 的基础架构 ID。您可以运行以下命令来获取基础架构 ID:
oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 2 4 6
- 指定基础架构 ID、worker 标签和区。
- 7
- 将计算机器设置为 Windows 机器。
- 8
- 将 Windows 节点配置为计算机器。
- 9
- 注意
您必须在 OpenShift Container Platform 4.19 中使用
Legacy
引导类型。 - 10
- 指定 Nutanix Prism Element 集群配置。在本例中,集群类型是
uuid
,因此有一个uuid
小节。 - 11
- 指定集群的 secret 名称。不要更改这个值。
- 12
- 指定要使用的镜像。使用集群的现有默认计算机器集中的镜像。
- 13
- 指定云供应商平台类型。不要更改这个值。
- 14
- 指定集群的内存量(以 Gi 为单位)。
- 15
- 指定子网配置。在本例中,子网类型是
uuid
,因此有一个uuid
小节。 - 16
- 以 Gi 为单位指定系统磁盘大小。
- 17
- 指定
openshift-machine-api
命名空间中的用户数据 YAML 文件中的 secret 名称。安装程序在默认计算机器集中填充时使用的值。 - 18
- 指定 vCPU 插槽数量。
- 19
- 指定每个插槽的 vCPU 数量。
6.4.4. 创建计算机器集 复制链接链接已复制到粘贴板!
除了安装程序创建的计算机器集外,您还可以创建自己的来动态管理您选择的特定工作负载的机器计算资源。
先决条件
- 部署一个 OpenShift Container Platform 集群。
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
权限的用户身份登录oc
。
流程
创建一个包含计算机器集自定义资源(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
运行以下命令来创建
MachineSet
CR: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 机器集不可用,请等待几分钟,然后再次运行命令。