11.2. Cluster API 入门


Machine API 和 Cluster API 是具有类似资源的不同 API 组。您可以使用这些 API 组自动管理 OpenShift Container Platform 集群中的基础架构资源。

重要

使用集群 API 管理机器只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

当您安装具有三个 control plane 节点的标准 OpenShift Container Platform 集群时,三个计算节点,并使用默认配置选项时,安装程序会在 openshift-machine-api 命名空间中置备以下基础架构资源

  • 管理三台 control plane 机器的 control plane 机器集。
  • 管理三台计算机器的一个或多个计算机器集。
  • 管理 spot 实例的机器健康检查。

当您安装支持使用 Cluster API 管理基础架构资源的集群时,安装程序会在 openshift-cluster-api 命名空间中置备以下资源:

  • 一个集群资源。
  • 一个特定于供应商的基础架构集群资源。

在支持将 Machine API 资源迁移到 Cluster API 资源的集群上,双向同步控制器会自动创建这些主资源。如需更多信息,请参阅将 Machine API 资源迁移到集群 API 资源

11.2.1. 创建 Cluster API 主资源

对于不支持将 Machine API 资源迁移到 Cluster API 资源的集群,您必须在 openshift-cluster-api 命名空间中手动创建以下 Cluster API 资源:

  • 与计算机器集对应的一个或多个机器模板。
  • 管理三台计算机器的一个或多个计算机器集。

11.2.1.1. 创建 Cluster API 机器模板

您可以通过创建 YAML 清单文件并使用 OpenShift CLI (oc) 应用它来创建特定于供应商的机器模板资源。

先决条件

  • 您已部署了 OpenShift Container Platform 集群。
  • 您已启用了 Cluster API 的使用。
  • 您可以使用具有 cluster-admin 权限的账户访问集群。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 创建一个类似如下的 YAML 文件:此流程使用 <machine_template_resource_file>.yaml 作为示例文件名。

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: <machine_template_kind> 
    1
    
    metadata:
      name: <template_name> 
    2
    
      namespace: openshift-cluster-api
    spec:
      template:
        spec: 
    3
    Copy to Clipboard Toggle word wrap
    1
    指定机器模板类型。这个值必须与您的平台的值匹配。以下值有效:
    Expand
    集群基础架构供应商value

    Amazon Web Services (AWS)

    AWSMachineTemplate

    Google Cloud Platform (GCP)

    GCPMachineTemplate

    Microsoft Azure

    AzureMachineTemplate

    Red Hat OpenStack Platform (RHOSP)

    OpenStackMachineTemplate

    VMware vSphere

    VSphereMachineTemplate

    裸机

    Metal3MachineTemplate

    2
    为机器模板指定名称。
    3
    指定您的环境的详情。这些参数特定于具体的供应商。如需更多信息,请参阅您的供应商的 Cluster API 机器模板 YAML 示例。
  2. 运行以下命令来创建虚拟机模板 CR:

    $ oc create -f <machine_template_resource_file>.yaml
    Copy to Clipboard Toggle word wrap

验证

  • 运行以下命令确认机器模板 CR 已创建:

    $ oc get <machine_template_kind> -n openshift-cluster-api
    Copy to Clipboard Toggle word wrap

    这里的 <machine_template_kind> 是与您的平台对应的值。

    输出示例

    NAME              AGE
    <template_name>   77m
    Copy to Clipboard Toggle word wrap

11.2.1.2. 创建 Cluster API 计算机器集

您可以创建使用集群 API 的计算机器集来动态管理您选择的特定工作负载的机器计算资源。

先决条件

  • 您已部署了 OpenShift Container Platform 集群。
  • 您已启用了 Cluster API 的使用。
  • 您可以使用具有 cluster-admin 权限的账户访问集群。
  • 已安装 OpenShift CLI(oc)。
  • 您已创建了机器模板资源。

流程

  1. 创建一个类似如下的 YAML 文件:此流程使用 <machine_set_resource_file>.yaml 作为示例文件名。

    apiVersion: cluster.x-k8s.io/v1beta1
    kind: MachineSet
    metadata:
      name: <machine_set_name> 
    1
    
      namespace: openshift-cluster-api
    spec:
      clusterName: <cluster_name> 
    2
    
      replicas: 1
      selector:
        matchLabels:
          test: example
      template:
        metadata:
          labels:
            test: example
        spec: 
    3
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    为计算机器设置指定一个名称。集群 ID、机器角色和区域形成一个典型模式,格式为:<cluster_name>-<role>-<region>
    2
    指定集群的名称。运行以下命令来获取集群 ID 的值:
    $  oc get infrastructure cluster \
       -o jsonpath='{.status.infrastructureName}'
    Copy to Clipboard Toggle word wrap
    3
    指定您的环境的详情。这些参数特定于具体的供应商。如需更多信息,请参阅您的供应商的 Cluster API 计算机器设置 YAML 示例。
  2. 运行以下命令来创建计算机器设置 CR:

    $ oc create -f <machine_set_resource_file>.yaml
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令确认已创建了计算机器设置 CR:

    $ oc get machineset.cluster.x-k8s.io -n openshift-cluster-api
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                 CLUSTER          REPLICAS   READY   AVAILABLE   AGE   VERSION
    <machine_set_name>   <cluster_name>   1          1       1           17m
    Copy to Clipboard Toggle word wrap

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

验证

  • 要验证计算机器是否会根据所需配置创建机器,请按照以下步骤查看集群中的机器和节点列表:

    • 查看 Cluster API 机器列表:

      $ oc get machine.cluster.x-k8s.io -n openshift-cluster-api
      Copy to Clipboard Toggle word wrap

      输出示例

      NAME                             CLUSTER          NODENAME                                 PROVIDERID      PHASE     AGE     VERSION
      <machine_set_name>-<string_id>   <cluster_name>   <ip_address>.<region>.compute.internal   <provider_id>   Running   8m23s
      Copy to Clipboard Toggle word wrap

    • 查看节点列表:

      $ oc get node
      Copy to Clipboard Toggle word wrap

      输出示例

      NAME                                       STATUS   ROLES    AGE     VERSION
      <ip_address_1>.<region>.compute.internal   Ready    worker   5h14m   v1.28.5
      <ip_address_2>.<region>.compute.internal   Ready    master   5h19m   v1.28.5
      <ip_address_3>.<region>.compute.internal   Ready    worker   7m      v1.28.5
      Copy to Clipboard Toggle word wrap

11.2.2. 将 Machine API 资源迁移到集群 API 资源

在支持将 Machine API 资源迁移到 Cluster API 资源的集群上,双向同步控制器会在 openshift-cluster-api 命名空间中创建以下 Cluster API 资源:

  • 与计算机器集对应的一个或多个机器模板。
  • 管理三台计算机器的一个或多个计算机器集。
  • 与每个 Machine API 计算机器对应的一个或多个 Cluster API 计算机器。
注意

双向同步控制器仅在启用了 TechPreviewNoUpgrade 功能集中的 MachineAPIMigration 功能门的集群中运行。

这些 Cluster API 资源与安装程序在 openshift-machine-api 命名空间中为使用默认配置选项的集群置备的资源对应。Cluster API 资源的名称与其 Machine API 对应的名称相同,并出现在命令输出中,如 oc get,用于列出资源。同步控制器以未置备(Paused)状态创建 Cluster API 资源,以防止意外的协调。

对于支持的配置,您可以通过更改它认为权威的 API,将 Machine API 资源迁移到等同的 Cluster API 资源。将 Machine API 资源迁移到 Cluster API 时,您可以将资源的管理传送到 Cluster API。

通过迁移 Machine API 资源以使用 Cluster API,您可以在决定在生产环境中使用 Cluster API 前验证所有内容是否可以正常工作。将 Machine API 资源迁移到等同的 Cluster API 资源后,您可以检查新资源以验证功能和配置是否与原始 Machine API 资源匹配。

当您更改计算机器集的权威 API 时,计算机器管理的任何现有计算机器保留其原始权威 API。因此,管理使用不同的权威 API 的机器的计算机器集是支持在这些 API 类型之间迁移的集群中有效且预期的情况。

当您更改计算机器的权威 API 时,支持机器的底层基础架构上的实例不会被重新创建或重新置备。原位更改(如修改 label、tag、污点或注解)是唯一 API 组可以对支持机器的底层实例的更改。

注意

您只能在支持的基础架构类型中迁移某些资源。

Expand
表 11.1. 支持的资源转换
基础架构计算机器计算机器集机器健康检查control plane 机器集集群自动扩展

AWS

技术预览

技术预览

不可用

不可用

不可用

所有其他基础架构类型

不可用

不可用

不可用

不可用

不可用

11.2.2.1. 迁移 Machine API 资源以使用集群 API

您可以将单个 Machine API 对象迁移到等同的 Cluster API 对象。

重要

迁移 Machine API 资源以使用集群 API 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

先决条件

  • 您已在受支持的基础架构类型上部署了 OpenShift Container Platform 集群。
  • 您已启用了 Cluster API 的使用。
  • 您已在 TechPreviewNoUpgrade 功能集中启用了 MachineAPIMigration 功能门。
  • 您可以使用具有 cluster-admin 权限的账户访问集群。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 运行以下命令,识别您要迁移到 Cluster API 资源的 Machine API 资源:

    $ oc get <resource_kind> -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    其中 <resource_kind> 是以下值之一:

    machine.machine.openshift.io
    compute 或 control plane 机器的资源类型的完全限定名称。
    machineset.machine.openshift.io
    计算机器设置的资源 kind 的完全限定名称。
  2. 运行以下命令来编辑资源规格:

    $ oc edit <resource_kind>/<resource_name> -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    其中:

    <resource_kind>
    使用 machine.machine.openshift.io 指定计算机器,使用 machineset.machine.openshift.io 指定计算 机器集
    <resource_name>
    指定您要迁移到 Cluster API 资源的 Machine API 资源的名称。
  3. 在资源规格中,更新 spec.authoritativeAPI 字段的值:

    apiVersion: machine.openshift.io/v1beta1
    kind: <resource_kind> 
    1
    
    metadata:
      name: <resource_name> 
    2
    
      [...]
    spec:
      authoritativeAPI: ClusterAPI 
    3
    
      [...]
    status:
      authoritativeAPI: MachineAPI 
    4
    
      [...]
    Copy to Clipboard Toggle word wrap
    1
    资源类型因资源类型而异。例如,计算机器集的资源类型是 MachineSet,计算机器的资源类型是 Machine
    2
    要迁移的资源的名称。
    3
    指定希望此资源使用的权威 API。例如,要开始将 Machine API 资源迁移到 Cluster API,请指定 ClusterAPI
    4
    当前权威 API 的值。这个值表示当前管理此资源的 API。不要更改规范的这个部分中的值。

验证

  • 运行以下命令检查转换的状态:

    $ oc -n openshift-machine-api get <resource_kind>/<resource_name> -o json | jq .status.authoritativeAPI
    Copy to Clipboard Toggle word wrap

    其中:

    <resource_kind>
    使用 machine.machine.openshift.io 指定计算机器,使用 machineset.machine.openshift.io 指定计算 机器集
    <resource_name>
    指定您要迁移到 Cluster API 资源的 Machine API 资源的名称。
    • 在转换进行时,这个命令会返回一个 Migrating 的值。如果这个值长时间保留,请检查 openshift-cluster-api 命名空间中的 cluster-capi-operator 部署的日志以了解更多信息,并识别潜在的问题。
    • 转换完成后,这个命令会返回 ClusterAPI 值。

您可以配置 Machine API 计算机器集来部署 Cluster API 计算机器。通过此过程,您可以在不创建和扩展 Cluster API 计算机器集的情况下测试 Cluster API 计算机器创建工作流。

使用这个配置的 Machine API 计算机器集会创建使用 Cluster API 作为权威的非权威 Machine API 计算机器。然后,双向同步控制器会创建底层基础架构上置备的相应权威集群 API 机器。

重要

使用 Machine API 计算机器集部署集群 API 计算机器只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

先决条件

  • 您已在受支持的基础架构类型上部署了 OpenShift Container Platform 集群。
  • 您已启用了 Cluster API 的使用。
  • 您已在 TechPreviewNoUpgrade 功能集中启用了 MachineAPIMigration 功能门。
  • 您可以使用具有 cluster-admin 权限的账户访问集群。
  • 已安装 OpenShift CLI(oc)。

流程

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

    $ oc get machineset.machine.openshift.io -n openshift-machine-api
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来编辑资源规格:

    $ oc edit machineset.machine.openshift.io <machine_set_name> \
      -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    其中 <machine_set_name> 是您要配置为部署 Cluster API 计算机器的 Machine API 计算机器集的名称。

  3. 在资源规格中,更新 spec.template.spec.authoritativeAPI 字段的值:

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    metadata:
      [...]
      name: <machine_set_name>
      [...]
    spec:
      authoritativeAPI: MachineAPI 
    1
    
      [...]
      template:
        [...]
        spec:
          authoritativeAPI: ClusterAPI 
    2
    
    status:
      authoritativeAPI: MachineAPI 
    3
    
      [...]
    Copy to Clipboard Toggle word wrap
    1
    Machine API 计算机器集的为转换的值。不要更改规范的这个部分中的值。
    2
    指定 ClusterAPI,将计算机器集配置为部署 Cluster API 计算机器。
    3
    Machine API 计算机器集的当前值。不要更改规范的这个部分中的值。

验证

  1. 运行以下命令,列出由更新的计算机器集管理的机器:

    $ oc get machines.machine.openshift.io \
      -n openshift-machine-api \
      -l machine.openshift.io/cluster-api-machineset=<machine_set_name>
    Copy to Clipboard Toggle word wrap
  2. 要验证更新的机器集创建的机器是否有正确的配置,请运行以下命令来检查 CR 中的 status.authoritativeAPI 字段:

    $ oc describe machines.machine.openshift.io <machine_name> \
      -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    对于 Cluster API 计算机器,字段的值是 ClusterAPI

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat