×

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

您可以验证 `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。

添加丢失的 Azure 内部负载均衡器

Azure 中的 `ControlPlaneMachineSet` 和控制平面 `Machine` 自定义资源 (CR) 都需要 `internalLoadBalancer` 参数。如果此参数未在您的集群上预配置,则必须将其添加到这两个 CR。

有关此参数在 Azure 提供程序规范中的位置的更多信息,请参见 Azure 提供程序规范示例。在控制平面 `Machine` CR 中的位置类似。

步骤
  1. 通过运行以下命令列出集群中的控制平面机器

    $ oc get machines \
      -l machine.openshift.io/cluster-api-machine-role==master \
      -n openshift-machine-api
  2. 对于每台控制平面机器,通过运行以下命令编辑 CR

    $ oc edit machine <control_plane_machine_name>
  3. 添加具有适合您集群的正确详细信息的 `internalLoadBalancer` 参数并保存您的更改。

  4. 通过运行以下命令编辑您的控制平面机器集 CR

    $ oc edit controlplanemachineset.machine.openshift.io cluster \
      -n openshift-machine-api
  5. 添加具有适合您集群的正确详细信息的 `internalLoadBalancer` 参数并保存您的更改。

后续步骤
  • 对于使用默认 `RollingUpdate` 更新策略的集群,操作符会自动将更改传播到您的控制平面配置。

  • 对于配置为使用 `OnDelete` 更新策略的集群,您必须手动替换控制平面机器。

恢复降级的 etcd 操作符

某些情况可能导致 etcd 操作符降级。

例如,在执行补救措施时,机器健康检查可能会删除托管 etcd 的控制平面机器。如果此时无法访问 etcd 成员,则 etcd 操作符将降级。

当 etcd 操作符降级时,需要手动干预以强制操作符删除失败的成员并恢复集群状态。

步骤
  1. 通过运行以下命令列出集群中的控制平面机器

    $ oc get machines \
      -l machine.openshift.io/cluster-api-machine-role==master \
      -n openshift-machine-api \
      -o wide

    以下任何条件都可能表示控制平面机器失败

    • `STATE` 值为 `stopped`。

    • `PHASE` 值为 `Failed`。

    • `PHASE` 值超过十分钟为 `Deleting`。

    在继续之前,请确保您的集群有两个健康的控制平面机器。在这个过程中对超过一台控制平面机器执行操作可能会导致 etcd 失去仲裁,并可能导致数据丢失。

    如果您丢失了大部分控制平面主机,导致 etcd 失去仲裁,则必须遵循灾难恢复过程“恢复到之前的集群状态”,而不是此过程。

  2. 运行以下命令来编辑故障控制平面机器的机器 CR:

    $ oc edit machine <control_plane_machine_name>
  3. 删除故障控制平面机器的lifecycleHooks参数的内容,并保存更改。

    etcd 运算符会将故障机器从集群中移除,然后可以安全地添加新的 etcd 成员。

升级在 RHOSP 上运行的集群

对于使用 OpenShift Container Platform 4.13 或更早版本创建的 Red Hat OpenStack Platform (RHOSP) 上运行的集群,您可能必须在可以使用控制平面机器集之前执行升级后任务。

配置升级后具有根卷可用区机器的 RHOSP 集群

对于您升级的一些在 Red Hat OpenStack Platform (RHOSP) 上运行的集群,如果满足以下配置,则必须手动更新机器资源才能使用控制平面机器集:

  • 升级的集群使用 OpenShift Container Platform 4.13 或更早版本创建。

  • 集群基础设施由安装程序配置。

  • 机器分布在多个可用区。

  • 机器配置为使用未定义块存储可用区的根卷。

要了解此过程为何必要,请参见 解决方案 #7024383

步骤
  1. 对于所有控制平面机器,请编辑与环境匹配的所有控制平面机器的提供程序规范。例如,要编辑机器master-0,请输入以下命令:

    $ oc edit machine/<cluster_id>-master-0 -n openshift-machine-api

    其中

    <cluster_id>

    指定升级集群的 ID。

  2. 在提供程序规范中,将属性rootVolume.availabilityZone的值设置为要使用的可用区的卷。

    RHOSP 提供程序规范示例
    providerSpec:
      value:
        apiVersion: machine.openshift.io/v1alpha1
        availabilityZone: az0
          cloudName: openstack
        cloudsSecret:
          name: openstack-cloud-credentials
          namespace: openshift-machine-api
        flavor: m1.xlarge
        image: rhcos-4.14
        kind: OpenstackProviderSpec
        metadata:
          creationTimestamp: null
        networks:
        - filter: {}
          subnets:
          - filter:
              name: refarch-lv7q9-nodes
              tags: openshiftClusterID=refarch-lv7q9
        rootVolume:
            availabilityZone: nova (1)
            diskSize: 30
            sourceUUID: rhcos-4.12
            volumeType: fast-0
        securityGroups:
        - filter: {}
          name: refarch-lv7q9-master
        serverGroupName: refarch-lv7q9-master
        serverMetadata:
          Name: refarch-lv7q9-master
          openshiftClusterID: refarch-lv7q9
        tags:
        - openshiftClusterID=refarch-lv7q9
        trunk: true
        userDataSecret:
          name: master-user-data
    1 将区域名称设置为此值。

    如果您在初始集群部署后编辑或重新创建了机器资源,则可能需要根据您的配置调整这些步骤。

    在您的 RHOSP 集群中,找到机器根卷的可用区,并将其用作值。

  3. 运行以下命令来检索有关控制平面机器集资源的信息:

    $ oc describe controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
  4. 运行以下命令来编辑资源:

    $ oc edit controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
  5. 对于该资源,将spec.state属性的值设置为Active以激活集群的控制平面机器集。

您的控制平面已准备好由集群控制平面机器集运算符管理。

配置升级后具有可用区控制平面机器的 RHOSP 集群

对于您升级的一些在 Red Hat OpenStack Platform (RHOSP) 上运行的集群,如果满足以下配置,则必须手动更新机器资源才能使用控制平面机器集:

  • 升级的集群使用 OpenShift Container Platform 4.13 或更早版本创建。

  • 集群基础设施由安装程序配置。

  • 控制平面机器分布在多个计算可用区。

要了解此过程为何必要,请参见 解决方案 #7013893

步骤
  1. 对于master-1master-2控制平面机器,打开提供程序规范进行编辑。例如,要编辑第一台机器,请输入以下命令:

    $ oc edit machine/<cluster_id>-master-1 -n openshift-machine-api

    其中

    <cluster_id>

    指定升级集群的 ID。

  2. 对于master-1master-2控制平面机器,请编辑其提供程序规范中serverGroupName属性的值,使其与机器master-0的值匹配。

    RHOSP 提供程序规范示例
    providerSpec:
      value:
        apiVersion: machine.openshift.io/v1alpha1
        availabilityZone: az0
          cloudName: openstack
        cloudsSecret:
          name: openstack-cloud-credentials
          namespace: openshift-machine-api
        flavor: m1.xlarge
        image: rhcos-4.17
        kind: OpenstackProviderSpec
        metadata:
          creationTimestamp: null
        networks:
        - filter: {}
          subnets:
          - filter:
              name: refarch-lv7q9-nodes
              tags: openshiftClusterID=refarch-lv7q9
        securityGroups:
        - filter: {}
          name: refarch-lv7q9-master
        serverGroupName: refarch-lv7q9-master-az0 (1)
        serverMetadata:
          Name: refarch-lv7q9-master
          openshiftClusterID: refarch-lv7q9
        tags:
        - openshiftClusterID=refarch-lv7q9
        trunk: true
        userDataSecret:
          name: master-user-data
    1 机器master-0master-1master-3的值必须匹配。

    如果您在初始集群部署后编辑或重新创建了机器资源,则可能需要根据您的配置调整这些步骤。

    在您的 RHOSP 集群中,找到控制平面实例所在的服务器组,并将其用作值。

  3. 运行以下命令来检索有关控制平面机器集资源的信息:

    $ oc describe controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
  4. 运行以下命令来编辑资源:

    $ oc edit controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
  5. 对于该资源,将spec.state属性的值设置为Active以激活集群的控制平面机器集。

您的控制平面已准备好由集群控制平面机器集运算符管理。