×

开始使用控制平面机器集的过程取决于集群中ControlPlaneMachineSet自定义资源 (CR) 的状态。

具有活动生成的 CR 的集群

具有活动状态的生成 CR 的集群默认使用控制平面机器集。不需要管理员操作。

具有非活动生成的 CR 的集群

对于包含非活动生成 CR 的集群,您必须检查 CR 配置并激活 CR

没有生成 CR 的集群

对于不包含生成 CR 的集群,您必须创建并激活一个 CR,其中包含适合您集群的配置。

如果您不确定集群中ControlPlaneMachineSet CR 的状态,您可以验证 CR 状态

支持的云提供商

在 OpenShift Container Platform 4.17 中,控制平面机器集支持 Amazon Web Services (AWS)、Google Cloud Platform (GCP)、Microsoft Azure、Nutanix 和 VMware vSphere 集群。

安装后控制平面机器集的状态取决于您的云提供商和您在集群上安装的 OpenShift Container Platform 版本。

表 1. OpenShift Container Platform 4.17 的控制平面机器集实现
云提供商 默认情况下处于活动状态 生成的 CR 需要手动创建 CR

Amazon Web Services (AWS)

X [1]

X

Google Cloud Platform (GCP)

X [2]

X

Microsoft Azure

X [2]

X

Nutanix

X [3]

X

Red Hat OpenStack Platform (RHOSP)

X [3]

X

VMware vSphere

X [4]

X

  1. 从 4.11 版或更早版本升级的 AWS 集群需要激活 CR

  2. 从 4.12 版或更早版本升级的 GCP 和 Azure 集群需要激活 CR

  3. 从 4.13 版或更早版本升级的 Nutanix 和 RHOSP 集群需要激活 CR

  4. 从 4.15 版或更早版本升级的 vSphere 集群需要激活 CR

检查控制平面机器集自定义资源状态

您可以验证ControlPlaneMachineSet自定义资源 (CR) 的存在和状态。

步骤
  • 通过运行以下命令确定 CR 的状态

    $ oc get controlplanemachineset.machine.openshift.io cluster \
      --namespace openshift-machine-api
    • Active的结果表明ControlPlaneMachineSet CR 存在并已激活。不需要管理员操作。

    • 如果结果为Inactive,则表示ControlPlaneMachineSet CR 存在但未激活。

    • 如果结果为NotFound,则表示不存在ControlPlaneMachineSet CR。

后续步骤

要使用控制平面机器集,必须确保存在一个具有集群正确设置的ControlPlaneMachineSet CR。

  • 如果您的集群已存在 CR,则必须验证 CR 中的配置是否适合您的集群。

  • 如果您的集群不存在 CR,则必须创建一个具有集群正确配置的 CR。

激活控制平面机器集自定义资源

要使用控制平面机器集,必须确保存在一个具有集群正确设置的ControlPlaneMachineSet 自定义资源 (CR)。在具有生成的 CR 的集群上,必须验证 CR 中的配置是否适合您的集群并将其激活。

有关 CR 中参数的更多信息,请参见“控制平面机器集配置”。

步骤
  1. 运行以下命令查看 CR 的配置

    $ oc --namespace openshift-machine-api edit controlplanemachineset.machine.openshift.io cluster
  2. 更改与您的集群配置不符的任何字段的值。

  3. 配置正确后,通过将.spec.state字段设置为Active并保存更改来激活 CR。

    要激活 CR,必须在用于更新 CR 配置的同一oc edit会话中将.spec.state字段更改为Active。如果 CR 保存时状态仍为Inactive,则控制平面机器集生成器会将 CR 重置为其原始设置。

创建控制平面机器集自定义资源

要使用控制平面机器集,必须确保存在一个具有集群正确设置的ControlPlaneMachineSet 自定义资源 (CR)。在没有生成 CR 的集群上,必须手动创建 CR 并将其激活。

有关 CR 的结构和参数的更多信息,请参见“控制平面机器集配置”。

步骤
  1. 使用以下模板创建一个 YAML 文件

    控制平面机器集 CR YAML 文件模板
    apiVersion: machine.openshift.io/v1
    kind: ControlPlaneMachineSet
    metadata:
      name: cluster
      namespace: openshift-machine-api
    spec:
      replicas: 3
      selector:
        matchLabels:
          machine.openshift.io/cluster-api-cluster: <cluster_id> (1)
          machine.openshift.io/cluster-api-machine-role: master
          machine.openshift.io/cluster-api-machine-type: master
      state: Active (2)
      strategy:
        type: RollingUpdate (3)
      template:
        machineType: machines_v1beta1_machine_openshift_io
        machines_v1beta1_machine_openshift_io:
          failureDomains:
            platform: <platform> (4)
            <platform_failure_domains> (5)
          metadata:
            labels:
              machine.openshift.io/cluster-api-cluster: <cluster_id> (6)
              machine.openshift.io/cluster-api-machine-role: master
              machine.openshift.io/cluster-api-machine-type: master
          spec:
            providerSpec:
              value:
                <platform_provider_spec> (7)
    1 指定基于您在预配集群时设置的集群 ID 的基础架构 ID。创建ControlPlaneMachineSet CR 时必须指定此值。如果您已安装 OpenShift CLI (oc),则可以通过运行以下命令获取基础架构 ID
    $ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
    2 指定操作员的状态。当状态为Inactive时,操作员不可用。您可以通过将值设置为Active来激活操作员。

    在激活 CR 之前,必须确保其配置符合您的集群要求。

    3 指定集群的更新策略。有效值为OnDeleteRollingUpdate。默认值为RollingUpdate。有关更新策略的更多信息,请参见“更新控制平面配置”。
    4 指定您的云提供商平台名称。有效值为AWSAzureGCPNutanixVSphereOpenStack
    5 为集群添加<platform_failure_domains>配置。此部分的格式和值是特定于提供商的。有关更多信息,请参见您的云提供商的故障域配置示例。
    6 指定基础架构 ID。
    7 为集群添加<platform_provider_spec>配置。此部分的格式和值是特定于提供商的。有关更多信息,请参见您的云提供商的提供商规范示例。
  2. 参考控制平面机器集 CR 的 YAML 示例,并使用适合您的集群配置的值填充您的文件。

  3. 参考您的云提供商的故障域配置示例和提供商规范示例,并使用适当的值更新文件的这些部分。

  4. 配置正确后,通过将.spec.state字段设置为Active并保存更改来激活 CR。

  5. 通过运行以下命令从您的 YAML 文件创建 CR

    $ oc create -f <control_plane_machine_set>.yaml

    其中<control_plane_machine_set>是包含 CR 配置的 YAML 文件的名称。