×

您可以创建一个 Windows MachineSet 对象,以在 Nutanix 上的 OpenShift Container Platform 集群中实现特定目的。例如,您可以创建基础架构 Windows 机器集和相关机器,以便您可以将支持 Windows 的工作负载迁移到新的 Windows 机器。

先决条件

  • 您已使用 Operator Lifecycle Manager (OLM) 安装了 Windows Machine Config Operator (WMCO)。

  • 您正在使用受支持的 Windows Server 作为操作系统镜像。

  • 您为内部 API 服务器 URL api-int.<cluster_name>.<base_domain> 添加了一个新的 DNS 条目,该条目指向外部 API 服务器 URL api.<cluster_name>.<base_domain>。这可以是 CNAME 或额外的 A 记录。

Machine API 概述

Machine API 是基于上游 Cluster API 项目和自定义 OpenShift Container Platform 资源的主要资源的组合。

对于 OpenShift Container Platform 4.17 集群,在集群安装完成后,Machine API 将执行所有节点主机配置管理操作。由于此系统,OpenShift Container Platform 4.17 在公共或私有云基础设施之上提供了一种弹性、动态的配置方法。

两个主要资源是

机器

描述节点主机的基本单元。机器具有一个providerSpec规范,该规范描述了不同云平台上提供的计算节点类型。例如,计算节点的机器类型可能定义特定的机器类型和所需的元数据。

机器集

MachineSet资源是计算机器的组。计算机器集与计算机器的关系,就像副本集与 Pod 的关系一样。如果您需要更多计算机器或必须缩减其规模,您可以更改MachineSet资源上的replicas字段以满足您的计算需求。

控制平面机器无法由计算机器集管理。

控制平面机器集为受支持的控制平面机器提供管理功能,类似于计算机器集为计算机器提供的功能。

有关更多信息,请参阅“管理控制平面机器”。

以下自定义资源为您的集群添加更多功能

机器自动缩放器

MachineAutoscaler资源自动缩放云中的计算机器。您可以为指定计算机器集中的节点设置最小和最大缩放边界,机器自动缩放器将保持该节点范围。

MachineAutoscaler对象在ClusterAutoscaler对象存在后生效。ClusterAutoscalerMachineAutoscaler资源均由ClusterAutoscalerOperator对象提供。

集群自动缩放器

此资源基于上游集群自动缩放器项目。在 OpenShift Container Platform 实现中,它通过扩展计算机器集 API 与机器 API 集成。您可以使用集群自动缩放器以以下方式管理您的集群

  • 为核心、节点、内存和 GPU 等资源设置集群范围的缩放限制

  • 设置优先级,以便集群优先处理 Pod,并且不会为不太重要的 Pod 在线添加新节点

  • 设置缩放策略,以便您可以向上扩展节点,但不能向下扩展它们

机器健康检查

MachineHealthCheck资源检测机器何时不健康,将其删除,并在受支持的平台上创建一个新机器。

在 OpenShift Container Platform 3.11 版本中,您无法轻松推出多区域架构,因为集群不管理机器配置。从 OpenShift Container Platform 4.1 版本开始,此过程更加容易。每个计算机器集的范围限定为单个区域,因此安装程序代表您跨可用性区域发送计算机器集。然后,因为您的计算是动态的,并且在区域故障的情况下,您始终拥有一个区域以供您重新平衡机器时使用。在没有多个可用性区域的全球 Azure 区域中,您可以使用可用性集来确保高可用性。自动缩放器在集群的整个生命周期中提供尽力而为的平衡。

Nutanix 上 Windows MachineSet 对象的示例 YAML

此示例 YAML 定义在 Nutanix 上运行的 Windows MachineSet 对象,Windows 机器配置操作员 (WMCO) 可以对此对象做出反应。

apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
  labels:
    machine.openshift.io/cluster-api-cluster: <infrastructure_id> (1)
  name: <infrastructure_id>-windows-worker-<zone> (2)
  namespace: openshift-machine-api
spec:
  replicas: 1
  selector:
    matchLabels:
      machine.openshift.io/cluster-api-cluster: <infrastructure_id> (1)
      machine.openshift.io/cluster-api-machineset: <infrastructure_id>-windows-worker-<zone> (2)
  template:
    metadata:
      labels:
        machine.openshift.io/cluster-api-cluster: <infrastructure_id> (1)
        machine.openshift.io/cluster-api-machine-role: worker
        machine.openshift.io/cluster-api-machine-type: worker
        machine.openshift.io/cluster-api-machineset: <infrastructure_id>-windows-worker-<zone> (2)
        machine.openshift.io/os-id: Windows (3)
    spec:
      metadata:
        labels:
          node-role.kubernetes.io/worker: "" (4)
      providerSpec:
        value:
          apiVersion: machine.openshift.io/v1
          bootType: "" (5)
          categories: null
          cluster: (6)
            type: uuid
            uuid: <cluster_uuid>
          credentialsSecret:
            name: nutanix-credentials (7)
          image: (8)
            name: <image_id>
            type: name
          kind: NutanixMachineProviderConfig (9)
          memorySize: 16Gi (10)
          project:
            type: ""
          subnets: (11)
          - type: uuid
            uuid: <subnet_uuid>
          systemDiskSize: 120Gi (12)
          userDataSecret:
            name: windows-user-data (13)
          vcpuSockets: 4 (14)
          vcpusPerSocket: 1 (15)
1 指定基于您在配置集群时设置的集群 ID 的基础设施 ID。您可以通过运行以下命令获取基础设施 ID
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
2 指定基础设施 ID、工作程序标签和区域。
3 将计算机器集配置为 Windows 机器。
4 将 Windows 节点配置为计算机器。
5 指定计算机器使用的引导类型。有关引导类型的更多信息,请参阅了解虚拟化环境中的 UEFI、安全启动和 TPM。有效值为LegacySecureBootUEFI。默认为Legacy

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

6 指定 Nutanix Prism Element 集群配置。在此示例中,集群类型为uuid,因此存在uuid节。
7 指定集群的密钥名称。请勿更改此值。
8 指定要使用的镜像。使用集群中现有默认计算机器集中的镜像。
9 指定云提供商平台类型。请勿更改此值。
10 指定集群的内存量(以 Gi 为单位)。
11 指定子网配置。在此示例中,子网类型为uuid,因此存在uuid节。
12 指定系统磁盘的大小(以 Gi 为单位)。
13 指定位于openshift-machine-api命名空间的用户数据 YAML 文件中密钥的名称。使用安装程序在默认计算机器集中填充的值。
14 指定 vCPU 套接字数。
15 指定每个套接字的 vCPU 数。

创建计算机器集

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

先决条件
  • 部署 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值匹配。如果计算机器集不可用,请等待几分钟然后再次运行该命令。

其他资源