2.8. 在 RHV 上创建机器集

您可以在 Red Hat Virtualization(RHV)的 OpenShift Container Platform 集群中创建不同的机器集来满足特定目的。例如,您可以创建基础架构机器集和相关的机器,以便将支持型工作负载转移到新机器上。

重要

您只能在 Machine API 操作的集群中使用高级机器管理和扩展功能。具有用户置备的基础架构的集群需要额外的验证和配置才能使用 Machine API。

具有基础架构平台类型 none 的集群无法使用 Machine API。即使附加到集群的计算机器安装在支持该功能的平台上,也会应用这个限制。在安装后无法更改此参数。

要查看集群的平台类型,请运行以下命令:

$ oc get infrastructure cluster -o jsonpath='{.status.platform}'

2.8.1. RHV 上机器集自定义资源的 YAML 示例

此 YAML 示例定义了一个在 RHV 上运行的机器集,并创建标记为 node-role.kubernetes.io/<node_role>: "" 的节点。

在本例中,<infrastructure_id> 是基础架构 ID 标签,该标签基于您在置备集群时设定的集群 ID,而 <role> 则是要添加的节点标签。

apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
  labels:
    machine.openshift.io/cluster-api-cluster: <infrastructure_id> 1
    machine.openshift.io/cluster-api-machine-role: <role> 2
    machine.openshift.io/cluster-api-machine-type: <role> 3
  name: <infrastructure_id>-<role> 4
  namespace: openshift-machine-api
spec:
  replicas: <number_of_replicas> 5
  selector: 6
    matchLabels:
      machine.openshift.io/cluster-api-cluster: <infrastructure_id> 7
      machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> 8
  template:
    metadata:
      labels:
        machine.openshift.io/cluster-api-cluster: <infrastructure_id> 9
        machine.openshift.io/cluster-api-machine-role: <role> 10
        machine.openshift.io/cluster-api-machine-type: <role> 11
        machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> 12
    spec:
      metadata:
        labels:
          node-role.kubernetes.io/<role>: "" 13
      providerSpec:
        value:
          apiVersion: ovirtproviderconfig.machine.openshift.io/v1beta1
          cluster_id: <ovirt_cluster_id> 14
          template_name: <ovirt_template_name> 15
          instance_type_id: <instance_type_id> 16
          cpu: 17
            sockets: <number_of_sockets> 18
            cores: <number_of_cores> 19
            threads: <number_of_threads> 20
          memory_mb: <memory_size> 21
          guaranteed_memory_mb:  <memory_size> 22
          os_disk: 23
            size_gb: <disk_size> 24
          network_interfaces: 25
            vnic_profile_id:  <vnic_profile_id> 26
          credentialsSecret:
            name: ovirt-credentials 27
          kind: OvirtMachineProviderSpec
          type: <workload_type> 28
          auto_pinning_policy: <auto_pinning_policy> 29
          hugepages: <hugepages> 30
          affinityGroupsNames:
            - compute 31
          userDataSecret:
            name: worker-user-data
1 7 9
指定基于置备集群时所设置的集群 ID 的基础架构 ID。如果已安装 OpenShift CLI(oc)软件包,您可以通过运行以下命令来获取基础架构 ID:
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
2 3 10 11 13
指定要添加的节点标签。
4 8 12
指定基础架构 ID 和节点标签。这两个字符串不能超过 35 个字符。
5
指定要创建的机器数量。
6
机器的选择器。
14
指定此虚拟机实例所属的 RHV 集群的 UUID。
15
指定用于创建机器的 RHV VM 模板。
16
可选:指定虚拟机实例类型。
警告

instance_type_id 字段已弃用,并将在以后的发行版本中删除。

如果包含这个参数,则不需要指定包括 CPU 和内存在内的虚拟机的硬件参数,因为这个参数会覆盖所有硬件参数。

17
可选:CPU 字段包含 CPU 配置,包括插槽、内核和线程。
18
可选:指定虚拟机的插槽数量。
19
可选:指定每个插槽的内核数。
20
可选:指定每个内核的线程数量。
21
可选:指定虚拟机的内存大小(MiB)。
22
可选:指定虚拟机保证内存的大小(以 MiB 为单位)。这是保证不会被气球机制消耗掉的内存量。如需更多信息,请参阅 Memory BallooningOptimization Settings Explained
注意

如果您使用比 RHV 4.4.8 更早的版本,请参阅 Red Hat Virtualization 集群上的 OpenShift 保证内存要求

23
可选:节点的 Root 磁盘。
24
可选:指定可引导磁盘的大小(GiB)。
25
可选:虚拟机网络接口列表。如果包含此参数,OpenShift Container Platform 会丢弃来自模板中的所有网络接口并创建新接口。
26
可选:指定 vNIC 配置集 ID。
27
指定包含 RHV 凭证的 secret 名称。
28
可选:指定实例优化的工作负载类型。这个值会影响 RHV VM 参数。支持的值包括:desktopserver(默认)、high_performancehigh_performance 提高了虚拟机的性能,但存在一些限制。例如,您无法使用图形控制台访问虚拟机。如需更多信息,请参阅虚拟机管理指南中的配置高性能虚拟机、模板和池
29
可选: AutoPinningPolicy 定义自动设置 CPU 和 NUMA 设置的策略,包括固定到此实例的主机。支持的值: noneresize_and_pin。如需更多信息,请参阅《 虚拟机管理指南 》中的 设置 NUMA 节点
30
可选:Helgepages 是以 KiB 为单位的大小,用于在虚拟机中定义巨页。支持的值: 20481048576。如需更多信息,请参阅《 虚拟机管理指南 》中的 配置大页
31
可选:应用于虚拟机的关联性组名称列表。oVirt 中必须存在关联性组。
注意

因为 RHV 在创建虚拟机时使用模板,如果您没有为可选参数指定值,RHV 将使用模板中指定的参数值。

2.8.2. 创建机器集

除了安装程序创建的计算机器集外,您还可以创建自己的来动态管理您选择的特定工作负载的机器计算资源。

先决条件

  • 部署一个 OpenShift Container Platform 集群。
  • 安装 OpenShift CLI(oc)。
  • 以具有 cluster-admin 权限的用户身份登录 oc

流程

  1. 创建一个包含机器集自定义资源(CR)示例的新 YAML 文件,并将其命名为 <file_name>.yaml

    确保设置 <clusterID><role> 参数值。

  2. 可选:如果您不确定要为特定字段设置哪个值,您可以从集群中检查现有计算机器集:

    1. 要列出集群中的计算机器集,请运行以下命令:

      $ oc get machinesets -n openshift-machine-api

      输出示例

      NAME                                DESIRED   CURRENT   READY   AVAILABLE   AGE
      agl030519-vplxk-worker-us-east-1a   1         1         1       1           55m
      agl030519-vplxk-worker-us-east-1b   1         1         1       1           55m
      agl030519-vplxk-worker-us-east-1c   1         1         1       1           55m
      agl030519-vplxk-worker-us-east-1d   0         0                             55m
      agl030519-vplxk-worker-us-east-1e   0         0                             55m
      agl030519-vplxk-worker-us-east-1f   0         0                             55m

    2. 要查看特定计算机器集自定义资源 (CR) 的值,请运行以下命令:

      $ oc get machineset <machineset_name> \
        -n openshift-machine-api -o yaml

      输出示例

      apiVersion: machine.openshift.io/v1beta1
      kind: MachineSet
      metadata:
        labels:
          machine.openshift.io/cluster-api-cluster: <infrastructure_id> 1
        name: <infrastructure_id>-<role> 2
        namespace: openshift-machine-api
      spec:
        replicas: 1
        selector:
          matchLabels:
            machine.openshift.io/cluster-api-cluster: <infrastructure_id>
            machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>
        template:
          metadata:
            labels:
              machine.openshift.io/cluster-api-cluster: <infrastructure_id>
              machine.openshift.io/cluster-api-machine-role: <role>
              machine.openshift.io/cluster-api-machine-type: <role>
              machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>
          spec:
            providerSpec: 3
              ...

      1
      集群基础架构 ID。
      2
      默认节点标签。
      注意

      对于具有用户置备的基础架构的集群,计算机器集只能创建 workerinfra 类型机器。

      3
      计算机器设置 CR 的 <providerSpec> 部分中的值是特定于平台的。有关 CR 中的 <providerSpec> 参数的更多信息,请参阅您的供应商计算机器设置 CR 配置示例。
  3. 运行以下命令来创建 MachineSet CR:

    $ oc create -f <file_name>.yaml

验证

  • 运行以下命令,查看计算机器集列表:

    $ oc get machineset -n openshift-machine-api

    输出示例

    NAME                                DESIRED   CURRENT   READY   AVAILABLE   AGE
    agl030519-vplxk-infra-us-east-1a    1         1         1       1           11m
    agl030519-vplxk-worker-us-east-1a   1         1         1       1           55m
    agl030519-vplxk-worker-us-east-1b   1         1         1       1           55m
    agl030519-vplxk-worker-us-east-1c   1         1         1       1           55m
    agl030519-vplxk-worker-us-east-1d   0         0                             55m
    agl030519-vplxk-worker-us-east-1e   0         0                             55m
    agl030519-vplxk-worker-us-east-1f   0         0                             55m

    当新机器集可用时,DESIREDCURRENT 的值会匹配。如果机器集不可用,请等待几分钟,然后再次运行命令。