×

您可以创建不同的计算机器集来为您的 Nutanix 上的 OpenShift Container Platform 集群提供特定用途。例如,您可以创建基础设施机器集和相关的机器,以便您可以将支持的工作负载迁移到新机器。

您只能在 Machine API 可运行的集群中使用高级机器管理和扩展功能。具有用户预配基础设施的集群需要额外的验证和配置才能使用 Machine API。

基础设施平台类型为none的集群无法使用 Machine API。即使连接到集群的计算机器安装在支持此功能的平台上,此限制也适用。此参数安装后无法更改。

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

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

Nutanix 上计算机器集自定义资源的示例 YAML

此示例 YAML 定义了一个 Nutanix 计算机器集,该机器集创建标记有node-role.kubernetes.io/<role>: ""的节点。

在此示例中,<infrastructure_id>是基于您在预配集群时设置的集群 ID 的基础设施 ID 标签,<role>是要添加的节点标签。

使用 OpenShift CLI 获取的值

在以下示例中,您可以使用 OpenShift CLI (oc) 获取集群的一些值。

基础设施 ID

<infrastructure_id>字符串是基于您在预配集群时设置的集群 ID 的基础设施 ID。如果您安装了 OpenShift CLI,则可以通过运行以下命令获取基础设施 ID

$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
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>
  name: <infrastructure_id>-<role>-<zone> (3)
  namespace: openshift-machine-api
  annotations: (4)
    machine.openshift.io/memoryMb: "16384"
    machine.openshift.io/vCPU: "4"
spec:
  replicas: 3
  selector:
    matchLabels:
      machine.openshift.io/cluster-api-cluster: <infrastructure_id>
      machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>-<zone>
  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>-<zone>
    spec:
      metadata:
        labels:
          node-role.kubernetes.io/<role>: ""
      providerSpec:
        value:
          apiVersion: machine.openshift.io/v1
          bootType: "" (5)
          categories: (6)
          - key: <category_name>
            value: <category_value>
          cluster: (7)
            type: uuid
            uuid: <cluster_uuid>
          credentialsSecret:
            name: nutanix-credentials
          image:
            name: <infrastructure_id>-rhcos (8)
            type: name
          kind: NutanixMachineProviderConfig
          memorySize: 16Gi (9)
          project: (10)
            type: name
            name: <project_name>
          subnets:
          - type: uuid
            uuid: <subnet_uuid>
          systemDiskSize: 120Gi (11)
          userDataSecret:
            name: <user_data_secret> (12)
          vcpuSockets: 4 (13)
          vcpusPerSocket: 1 (14)
1 对于<infrastructure_id>,请指定基于您在预配集群时设置的集群 ID 的基础设施 ID。
2 指定要添加的节点标签。
3 指定基础设施 ID、节点标签和区域。
4 集群自动伸缩器的批注。
5 指定计算机器使用的引导类型。有关引导类型的更多信息,请参见了解虚拟化环境中的 UEFI、安全启动和 TPM。有效值为LegacySecureBootUEFI。默认值为Legacy

您必须在 OpenShift Container Platform 4.17 中使用Legacy引导类型。

6 指定要应用于计算机器的一个或多个 Nutanix Prism 类别。此节需要keyvalue参数,用于 Prism Central 中存在的类别键值对。有关类别的更多信息,请参见类别管理
7 指定 Nutanix Prism Element 集群配置。在此示例中,集群类型为uuid,因此有一个uuid节。
8 指定要使用的镜像。使用集群中现有默认计算机器集中的镜像。
9 指定集群的内存大小(以 Gi 为单位)。
10 指定用于集群的 Nutanix 项目。在此示例中,项目类型为name,因此有一个name节。
11 指定系统磁盘的大小(以 Gi 为单位)。
12 指定用户数据 YAML 文件中openshift-machine-api命名空间中的密钥名称。使用安装程序在默认计算机器集中填充的值。
13 指定 vCPU 套接字数。
14 指定每个套接字的 vCPU 数量。

创建计算机器集

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

先决条件
  • 部署 OpenShift Container Platform 集群。

  • 安装 OpenShift CLI (oc)。

  • 以具有cluster-admin权限的用户身份登录到oc

步骤
  1. 创建一个新的YAML文件,其中包含计算机器集自定义资源 (CR) 示例,并将其命名为<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值匹配。如果计算机器集不可用,请等待几分钟,然后再次运行该命令。

为集群自动缩放器标记 GPU 机器集

您可以使用机器集标签来指示集群自动缩放器可以使用哪些机器来部署支持 GPU 的节点。

先决条件
  • 您的集群使用集群自动缩放器。

步骤
  • 在您要为集群自动缩放器创建机器以用于部署支持 GPU 的节点的机器集上,添加cluster-api/accelerator标签

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    metadata:
      name: machine-set-name
    spec:
      template:
        spec:
          metadata:
            labels:
              cluster-api/accelerator: nvidia-t4 (1)
    1 指定您选择的标签,该标签由字母数字字符、-_.组成,并且以字母数字字符开头和结尾。例如,您可以使用nvidia-t4表示 Nvidia T4 GPU,或使用nvidia-a10g表示 A10G GPU。

    您必须为ClusterAutoscaler CR 中的spec.resourceLimits.gpus.type参数指定此标签的值。有关更多信息,请参见“集群自动缩放器资源定义”。

Nutanix 集群的故障域

要在 Nutanix 集群上添加或更新故障域配置,您必须对多个资源进行协调更改。需要执行以下操作

  1. 修改集群基础设施自定义资源 (CR)。

  2. 修改集群控制平面机器集 CR。

  3. 修改或替换计算机器集 CR。

有关更多信息,请参阅安装后配置内容中的“将故障域添加到现有的 Nutanix 集群”。