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
)。
流程
创建一个类似如下的 YAML 文件:此流程使用
<machine_template_resource_file>.yaml
作为示例文件名。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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 示例。
运行以下命令来创建虚拟机模板 CR:
oc create -f <machine_template_resource_file>.yaml
$ oc create -f <machine_template_resource_file>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令确认机器模板 CR 已创建:
oc get <machine_template_kind> -n openshift-cluster-api
$ oc get <machine_template_kind> -n openshift-cluster-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这里的
<machine_template_kind>
是与您的平台对应的值。输出示例
NAME AGE <template_name> 77m
NAME AGE <template_name> 77m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.2.1.2. 创建 Cluster API 计算机器集 复制链接链接已复制到粘贴板!
您可以创建使用集群 API 的计算机器集来动态管理您选择的特定工作负载的机器计算资源。
先决条件
- 您已部署了 OpenShift Container Platform 集群。
- 您已启用了 Cluster API 的使用。
-
您可以使用具有
cluster-admin
权限的账户访问集群。 -
已安装 OpenShift CLI(
oc
)。 - 您已创建了机器模板资源。
流程
创建一个类似如下的 YAML 文件:此流程使用
<machine_set_resource_file>.yaml
作为示例文件名。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 为计算机器设置指定一个名称。集群 ID、机器角色和区域形成一个典型模式,格式为:
<cluster_name>-<role>-<region>
。 - 2
- 指定集群的名称。运行以下命令来获取集群 ID 的值:
oc get infrastructure cluster \ -o jsonpath='{.status.infrastructureName}'
$ oc get infrastructure cluster \ -o jsonpath='{.status.infrastructureName}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 3
- 指定您的环境的详情。这些参数特定于具体的供应商。如需更多信息,请参阅您的供应商的 Cluster API 计算机器设置 YAML 示例。
运行以下命令来创建计算机器设置 CR:
oc create -f <machine_set_resource_file>.yaml
$ oc create -f <machine_set_resource_file>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令确认已创建了计算机器设置 CR:
oc get machineset.cluster.x-k8s.io -n openshift-cluster-api
$ oc get machineset.cluster.x-k8s.io -n openshift-cluster-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME CLUSTER REPLICAS READY AVAILABLE AGE VERSION <machine_set_name> <cluster_name> 1 1 1 17m
NAME CLUSTER REPLICAS READY AVAILABLE AGE VERSION <machine_set_name> <cluster_name> 1 1 1 17m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当新的计算机器集可用时,
REPLICAS
和AVAILABLE
值会匹配。如果 compute 机器集不可用,请等待几分钟,然后再次运行命令。
验证
要验证计算机器是否会根据所需配置创建机器,请按照以下步骤查看集群中的机器和节点列表:
查看 Cluster API 机器列表:
oc get machine.cluster.x-k8s.io -n openshift-cluster-api
$ oc get machine.cluster.x-k8s.io -n openshift-cluster-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION <machine_set_name>-<string_id> <cluster_name> <ip_address>.<region>.compute.internal <provider_id> Running 8m23s
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 Copied! Toggle word wrap Toggle overflow 查看节点列表:
oc get node
$ oc get node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
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
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 Copied! Toggle word wrap Toggle overflow
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 组可以对支持机器的底层实例的更改。
您只能在支持的基础架构类型中迁移某些资源。
基础架构 | 计算机器 | 计算机器集 | 机器健康检查 | 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
)。
流程
运行以下命令,识别您要迁移到 Cluster API 资源的 Machine API 资源:
oc get <resource_kind> -n openshift-machine-api
$ oc get <resource_kind> -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<resource_kind>
是以下值之一:machine.machine.openshift.io
- compute 或 control plane 机器的资源类型的完全限定名称。
machineset.machine.openshift.io
- 计算机器设置的资源 kind 的完全限定名称。
运行以下命令来编辑资源规格:
oc edit <resource_kind>/<resource_name> -n openshift-machine-api
$ oc edit <resource_kind>/<resource_name> -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
<resource_kind>
-
使用
machine.machine.openshift.io
指定计算机器,使用machineset.machine.openshift.io
指定计算 机器集 <resource_name>
- 指定您要迁移到 Cluster API 资源的 Machine API 资源的名称。
在资源规格中,更新
spec.authoritativeAPI
字段的值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令检查转换的状态:
oc -n openshift-machine-api get <resource_kind>/<resource_name> -o json | jq .status.authoritativeAPI
$ oc -n openshift-machine-api get <resource_kind>/<resource_name> -o json | jq .status.authoritativeAPI
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
<resource_kind>
-
使用
machine.machine.openshift.io
指定计算机器,使用machineset.machine.openshift.io
指定计算 机器集 <resource_name>
- 指定您要迁移到 Cluster API 资源的 Machine API 资源的名称。
-
在转换进行时,这个命令会返回一个
Migrating
的值。如果这个值长时间保留,请检查openshift-cluster-api
命名空间中的cluster-capi-operator
部署的日志以了解更多信息,并识别潜在的问题。 -
转换完成后,这个命令会返回
ClusterAPI
值。
11.2.2.2. 使用 Machine API 计算机器集部署 Cluster API 计算机器 复制链接链接已复制到粘贴板!
您可以配置 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
)。
流程
运行以下命令,列出集群中的 Machine API 计算机器集:
oc get machineset.machine.openshift.io -n openshift-machine-api
$ oc get machineset.machine.openshift.io -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来编辑资源规格:
oc edit machineset.machine.openshift.io <machine_set_name> \ -n openshift-machine-api
$ oc edit machineset.machine.openshift.io <machine_set_name> \ -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<machine_set_name>
是您要配置为部署 Cluster API 计算机器的 Machine API 计算机器集的名称。在资源规格中,更新
spec.template.spec.authoritativeAPI
字段的值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,列出由更新的计算机器集管理的机器:
oc get machines.machine.openshift.io \ -n openshift-machine-api \ -l machine.openshift.io/cluster-api-machineset=<machine_set_name>
$ oc get machines.machine.openshift.io \ -n openshift-machine-api \ -l machine.openshift.io/cluster-api-machineset=<machine_set_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证更新的机器集创建的机器是否有正确的配置,请运行以下命令来检查 CR 中的
status.authoritativeAPI
字段:oc describe machines.machine.openshift.io <machine_name> \ -n openshift-machine-api
$ oc describe machines.machine.openshift.io <machine_name> \ -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Cluster API 计算机器,字段的值是
ClusterAPI
。