2.7. SiteConfig 高级主题


SiteConfig 操作符提供了额外的功能,例如创建自定义模板或扩展工作节点,扩展适用于大多数用例的标准操作。有关 SiteConfig 运算符的高级主题,请参阅以下文档:

2.7.1. 使用 SiteConfig operator 创建自定义模板

创建在默认模板集合中未提供的用户定义模板。

需要的访问权限:集群管理员

在创建自定义模板中完成以下步骤:

  1. 创建名为 my-custom-secret.yaml 的 YAML 文件,该文件在 ConfigMap 中包含集群级别模板:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: my-custom-secret
      namespace: rhacm
    data:
      MySecret: |-
        apiVersion: v1
        kind: Secret
        metadata:
          name: "{{ .Spec.ClusterName }}-my-custom-secret-key"
          namespace: "clusters"
          annotations:
            siteconfig.open-cluster-management.io/sync-wave: "1" 
    1
    
        type: Opaque
        data:
          key: <key>
    Copy to Clipboard Toggle word wrap
    1
    siteconfig.open-cluster-management.io/sync-wave 注解控制创建、更新或删除清单的顺序。
  2. 运行以下命令,在 hub 集群中应用自定义模板:

    oc apply -f my-custom-secret.yaml
    Copy to Clipboard Toggle word wrap
  3. 在名为 clusterinstance-my-custom-secret.yamlClusterInstance 自定义资源中引用您的模板:

    spec:
        ...
      templateRefs:
        - name: ai-cluster-templates-v1.yaml
          namespace: rhacm
        - name: my-custom-secret.yaml
          namespace: rhacm
        ...
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令来应用 ClusterInstance 自定义资源:

    oc apply -f clusterinstance-my-custom-secret.yaml
    Copy to Clipboard Toggle word wrap

在由 SiteConfig operator 安装的受管集群中扩展。您可以通过删除 worker 节点来在集群中扩展。

需要的访问权限:集群管理员

2.7.2.1. 先决条件

2.7.2.2. 为 worker 节点添加注解

向 worker 节点添加注解以进行移除。

完成以下步骤,从受管集群注解 worker 节点:

  1. 在用于置备集群的 ClusterInstance 自定义资源中的 worker 节点条目的 extraAnnotations 字段中添加注解:

    spec:
       ...
       nodes:
       - hostName: "worker-node2.example.com"
          role: "worker"
          ironicInspect: ""
          extraAnnotations:
            BareMetalHost:
              bmac.agent-install.openshift.io/remove-agent-and-node-on-delete: "true"
    ...
    Copy to Clipboard Toggle word wrap
  2. 应用更改。设置以下选项:

    1. 如果您在没有 Red Hat OpenShift GitOps 的情况下使用 Red Hat Advanced Cluster Management,请在 hub 集群中运行以下命令:
    oc apply -f <clusterinstance>.yaml
    Copy to Clipboard Toggle word wrap
    1. 如果使用 GitOps ZTP,请推送到 Git 存储库并等待 Argo CD 同步更改。
  3. 在 hub 集群中运行以下命令来验证注解是否已应用到 BaremetalHost worker 资源:

    oc get bmh -n <clusterinstance_namespace> worker-node2.example.com -ojsonpath='{.metadata.annotations}' | jq
    Copy to Clipboard Toggle word wrap

    有关注解成功应用程序的示例输出:

{
  "baremetalhost.metal3.io/detached": "assisted-service-controller",
  "bmac.agent-install.openshift.io/hostname": "worker-node2.example.com",
  "bmac.agent-install.openshift.io/remove-agent-and-node-on-delete": "true"
  "bmac.agent-install.openshift.io/role": "master",
  "inspect.metal3.io": "disabled",
  "siteconfig.open-cluster-management.io/sync-wave": "1",
}
Copy to Clipboard Toggle word wrap

2.7.2.3. 删除 worker 节点的 BareMetalHost 资源

删除您要删除的 worker 节点的 BareMetalHost 资源。

完成以下步骤,从受管集群中删除 worker 节点:

  1. 使用以下配置更新要在现有 ClusterInstance 自定义资源中删除的节点对象:

    ...
    spec:
       ...
       nodes:
         - hostName: "worker-node2.example.com"
           ...
           pruneManifests:
             - apiVersion: metal3.io/v1alpha1
               kind: BareMetalHost
    ...
    Copy to Clipboard Toggle word wrap
  2. 应用更改。设置以下选项:

    1. 如果您在没有 Red Hat OpenShift GitOps 的情况下使用 Red Hat Advanced Cluster Management,请在 hub 集群中运行以下命令:
    oc apply -f <clusterinstance>.yaml
    Copy to Clipboard Toggle word wrap
    1. 如果使用 GitOps ZTP,请推送到 Git 存储库并等待 Argo CD 同步更改。
  3. 在 hub 集群中运行以下命令来验证 BareMetalHost 资源是否已移除:

    oc get bmh -n <clusterinstance_namespace> --watch --kubeconfig <hub_cluster_kubeconfig_filename>
    Copy to Clipboard Toggle word wrap

    请参见以下示例输出:

    NAME                        STATE                        CONSUMER         ONLINE   ERROR   AGE
    master-node1.example.com    provisioned                  true             81m
    worker-node2.example.com    deprovisioning               true             44m
    worker-node2.example.com    powering off before delete   true             20h
    worker-node2.example.com    deleting                     true             50m
    Copy to Clipboard Toggle word wrap
  4. 在 hub 集群中运行以下命令来验证 Agent 资源是否已移除:

    oc get agents -n <clusterinstance_namespace> --kubeconfig <hub_cluster_kubeconfig_filename>
    Copy to Clipboard Toggle word wrap

    请参见以下示例输出:

    NAME                       CLUSTER                  APPROVED   ROLE     STAGE
    master-node1.example.com   <managed_cluster_name>   true       master   Done
    master-node2.example.com   <managed_cluster_name>   true       master   Done
    master-node3.example.com   <managed_cluster_name>   true       master   Done
    worker-node1.example.com   <managed_cluster_name>   true       worker   Done
    Copy to Clipboard Toggle word wrap
  5. 在受管集群中运行以下命令来验证 Node 资源是否已移除:

    oc get nodes --kubeconfig <managed_cluster_kubeconfig_filename>
    Copy to Clipboard Toggle word wrap

    请参见以下示例输出:

    NAME                       STATUS                        ROLES                  AGE   VERSION
    worker-node2.example.com   NotReady,SchedulingDisabled   worker                 19h   v1.30.5
    worker-node1.example.com   Ready                         worker                 19h   v1.30.5
    master-node1.example.com   Ready                         control-plane,master   19h   v1.30.5
    master-node2.example.com   Ready                         control-plane,master   19h   v1.30.5
    master-node3.example.com   Ready                         control-plane,master   19h   v1.30.5
    Copy to Clipboard Toggle word wrap
  6. 成功删除工作节点的BareMetalHost对象后,从ClusterInstance资源中的spec.nodes部分中删除关联的工作节点定义。

扩展由 SiteConfig operator 安装的受管集群。您可以通过添加 worker 节点来扩展集群。

需要的访问权限:集群管理员

2.7.3.1. 先决条件

2.7.3.2. 添加 worker 节点

通过更新用于置备集群的 ClusterInstance 自定义资源来添加 worker 节点。

完成以下步骤,将 worker 节点添加到受管集群:

  1. 在现有 ClusterInstance 自定义资源中定义新节点对象:

    spec:
      ...
      nodes:
        - hostName: "<host_name>"
          role: "worker"
          templateRefs:
            - name: ai-node-templates-v1
              namespace: rhacm
          bmcAddress: "<bmc_address>"
          bmcCredentialsName:
            name: "<bmc_credentials_name>"
          bootMACAddress: "<boot_mac_address>"
    ...
    Copy to Clipboard Toggle word wrap
  2. 应用更改。设置以下选项:

    1. 如果您在没有 Red Hat OpenShift GitOps 的情况下使用 Red Hat Advanced Cluster Management,请在 hub 集群中运行以下命令:
    oc apply -f <clusterinstance>.yaml
    Copy to Clipboard Toggle word wrap
    1. 如果使用 GitOps ZTP,请推送到 Git 存储库并等待 Argo CD 同步更改。
  3. 在 hub 集群中运行以下命令来验证是否已添加新 BareMetalHost 资源:

    oc get bmh -n <clusterinstance_namespace> --watch --kubeconfig <hub_cluster_kubeconfig_filename>
    Copy to Clipboard Toggle word wrap

    请参见以下示例输出:

    NAME                        STATE          CONSUMER   ONLINE   ERROR   AGE
    master-node1.example.com    provisioned               true             81m
    worker-node2.example.com    provisioning              true             44m
    Copy to Clipboard Toggle word wrap
  4. 在 hub 集群中运行以下命令来验证是否已添加新 Agent 资源:

    oc get agents -n <clusterinstance_namespace> --kubeconfig <hub_cluster_kubeconfig_filename>
    Copy to Clipboard Toggle word wrap

    请参见以下示例输出:

    NAME                       CLUSTER                   APPROVED    ROLE     STAGE
    master-node1.example.com   <managed_cluster_name>    true        master   Done
    master-node2.example.com   <managed_cluster_name>    true        master   Done
    master-node3.example.com   <managed_cluster_name>    true        master   Done
    worker-node1.example.com   <managed_cluster_name>    false       worker
    worker-node2.example.com   <managed_cluster_name>    true        worker   Starting installation
    worker-node2.example.com   <managed_cluster_name>    true        worker   Installing
    worker-node2.example.com   <managed_cluster_name>    true        worker   Writing image to disk
    worker-node2.example.com   <managed_cluster_name>    true        worker   Waiting for control plane
    worker-node2.example.com   <managed_cluster_name>    true        worker   Rebooting
    worker-node2.example.com   <managed_cluster_name>    true        worker   Joined
    worker-node2.example.com   <managed_cluster_name>    true        worker   Done
    Copy to Clipboard Toggle word wrap
  5. 在受管集群中运行以下命令来验证是否已添加新 Node 资源:

    oc get nodes --kubeconfig <managed_cluster_kubeconfig_filename>
    Copy to Clipboard Toggle word wrap

    请参见以下示例输出:

    NAME                       STATUS    ROLES                  AGE   VERSION
    worker-node2.example.com   Ready     worker                 1h    v1.30.5
    worker-node1.example.com   Ready     worker                 19h   v1.30.5
    master-node1.example.com   Ready     control-plane,master   19h   v1.30.5
    master-node2.example.com   Ready     control-plane,master   19h   v1.30.5
    master-node3.example.com   Ready     control-plane,master   19h   v1.30.5
    Copy to Clipboard Toggle word wrap

2.7.4. 为断开连接的环境镜像

您可以使用基于映像的安装操作员作为底层操作员,通过 SiteConfig 操作员部署集群。如果您在断开连接的环境中使用基于映像的安装操作员部署集群,则必须在ClusterInstance自定义资源中提供镜像作为额外清单。

需要的访问权限:集群管理员

完成以下步骤来为断开连接的环境镜像:

  1. 为您的ImageDigestMirrorSet对象创建一个名为idms-configmap.yaml的 YAML 文件,其中包含您的镜像注册表位置:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: "idms-configmap"
      namespace: "example-sno"
    data:
      99-example-idms.yaml: |
        apiVersion: config.openshift.io/v1
        kind: ImageDigestMirrorSet
        metadata:
          name: example-idms
        spec:
          imageDigestMirrors:
          - mirrors:
            - mirror.registry.example.com/image-repo/image
            source: registry.example.com/image-repo/image
    Copy to Clipboard Toggle word wrap

重要提示:在与ClusterInstance资源相同的命名空间中定义包含额外清单的ConfigMap资源。

  1. 在 hub 集群中运行以下命令来创建资源:

    oc apply -f idms-configmap.yaml
    Copy to Clipboard Toggle word wrap
  2. ClusterInstance自定义资源中引用您的ImageDigestMirrorSet对象:

    apiVersion: siteconfig.open-cluster-management.io/v1alpha1
    kind: ClusterInstance
    metadata:
      name: "example-sno"
      namespace: "example-sno"
    spec:
      ...
      extraManifestsRefs:
        - name: idms-configmap
    ...
    Copy to Clipboard Toggle word wrap

SiteConfig 操作员通过ClusterInstance API 简化 OpenShift 集群重新安装,同时保留关键配置数据。

通过与 GitOps 兼容的声明式方法,用户可以通过更新ClusterInstance资源来触发重新安装。该操作员还包括中心端SecretConfigMap资源的备份和恢复机制,确保基本集群数据(例如身份验证凭据和配置资源)保持完整。

2.7.5.1. 集群身份保存

集群重新安装支持单节点 OpenShift 集群和多节点 OpenShift 集群。但是,仅使用基于映像的安装配置方法安装的单节点 OpenShift 集群支持集群身份保存。

有关基于映像的安装的更多信息,请参阅基于映像的单节点 OpenShift 安装

2.7.5.2. 集群重新安装工作流程

请参阅集群重新安装工作流程的以下步骤:

  • 标记资源以便保存。如果您不想保留资源,这是可选的。您可以在启动集群重新安装之前标记您的资源。
  • 启动集群重新安装。
  • 监控重新安装进度并验证重新安装的集群是否可用。这是可选的。

2.7.5.3. 资源标签保存

如果您希望在重新安装后保留必要的集群配置数据,SiteConfig 操作员为ClusterInstance命名空间内的中心端SecretConfigMap资源提供了备份和恢复机制。

您可以通过在ClusterInstance资源中设置preservationMode并向资源添加适当的保存标签来控制数据保存。有以下保存模式可供选择:

Expand
表 2.1. 保存模式
保存模式行为使用方法标签要求

None

ConfigMapSecret资源未被保留。

如果重装集群时不需要保留数据,请选择“无”模式。

None

All

ClusterInstance资源位于同一命名空间内的所有带标签的ConfigMapSecret资源均已备份。如果 SiteConfig 操作员没有找到任何标记的资源,操作员将继续重新安装而不保留数据。原始资源存储为不可变的 Kubernetes 机密。

如果您想保留标记的资源(如果有),请选择全部模式。

添加siteconfig.open-cluster-management.io/preserve: "<arbitrary-value>"标签,并添加任意值,例如, siteconfig.open-cluster-management.io/preserve: "" 。该标签指示操作员仅当保存模式设置为全部时才备份具有指定标签的资源。

集群身份

仅备份与ClusterInstance CR 位于同一命名空间中且标有siteconfig.open-cluster-management.io/preserve: "cluster-identity"标签的ConfigMapSecret资源。如果 SiteConfig 操作员没有找到任何标记的资源,操作员将停止重新安装过程并显示错误消息。这些资源的原始 CR 存储为不可变的 Kubernetes 机密。

如果您希望操作员验证您是否标记了至少一个资源,请选择ClusterIdentity模式。

添加siteconfig.open-cluster-management.io/preserve: "cluster-identity"标签,以指示操作员在保存模式设置为AllClusterIdentity时使用该标签备份资源。如果将保存模式设置为ClusterIdentity ,并且操作员未找到至少一个具有siteconfig.open-cluster-management.io/preserve:“cluster-identity”标签的资源,则重新安装将停止。

您可以在开始重新安装之前标记您的资源。

2.7.5.4. 集群重装监控

重新安装分为两个阶段:

第 1 阶段 - 重新安装请求处理
  • 请求验证:SiteConfig 操作员验证请求。
  • 数据保存:SiteConfig 操作员备份标记的资源。
  • 清理:SiteConfig 操作员删除现有的安装清单。如果此步骤超时,重新安装将停止并且ClusterInstance资源将暂停。
  • 数据恢复:SiteConfig 操作员恢复保存的数据。
第 2 阶段 - 集群配置
  • 清单再生:SiteConfig 操作员从模板生成新的清单。
  • 集群安装:使用新的清单配置集群。

您可以分别在status.reinstall.conditionsstatus.conditions字段中跟踪第 1 阶段和第 2 阶段的进度。为了跟踪集群重新安装进度,SiteConfig 操作员提供了以下状态条件:

Expand
表 2.2. 重新安装状态条件

状况

描述

原因

ReinstallRequestProcessed

指示重新安装请求的总体状态。

InProgress :重新安装过程正在进行中。
已完成:重新安装过程已成功完成,并且集群已准备好重新配置。
失败:重新安装过程遇到错误并失败。
TimedOut :重新安装过程超出了预期的时间限制,未成功完成。

已验证重新安装请求

确认重新安装请求的有效性。

已完成:重新安装请求有效。
失败:重新安装请求无效。

ReinstallPreservationDataBackedUp

跟踪已保存数据的备份状态。

PreservationNotRequired :由于设置了spec.reinstall.preservationMode: None,因此不需要备份。
DataUnavailable :在ClusterInstance命名空间中找不到带有保留标签的SecretConfigMap对象。
已完成SecretConfigMap对象已成功备份。
失败:一个或多个SecretConfigMap对象未备份。

ReinstallClusterIdentityDataDetected

确定集群身份数据是否可供保存。

PreservationNotRequired :不需要保存数据。preservationMode字段设置为None
DataAvailable :成功定位集群身份SecretConfigMap对象。
DataUnavailable :未检测到集群身份SecretConfigMap对象。
失败:保存模式设置为ClusterIdentity ,但未找到集群身份数据。

ReinstallRenderedManifestsDeleted

监控与ClusterInstance资源相关的渲染清单的删除。

InProgress :正在删除呈现的清单。
已完成:成功删除所有渲染的清单。
失败:无法删除一个或多个渲染的清单。
TimedOut :等待删除渲染的清单时超时。

ReinstallPreservationDataRestored

跟踪保存数据的恢复状态。

PreservationNotRequired :不需要保存,因为preservationMode字段设置为None
DataUnavailable :未检测到需要恢复的保留SecretConfigMap对象。
已完成SecretConfigMap对象已成功恢复。
失败:无法恢复一个或多个SecretConfigMap对象。

status.reinstall字段通过以下字段提供有关重新安装过程的更多信息:

  • InProgressGeneration :标识正在处理以重新安装的活动生成。
  • ObservedGeneration :指示最后成功处理的重新安装请求。
  • RequestStartTime :表示发起重新安装请求的时间。
  • RequestEndTime :表示重新安装过程完成的时间。
  • 历史记录:显示过去的重新安装尝试,包括生成详细信息、时间戳和ClusterInstance资源的规范更改。

使用 SiteConfig 操作员重新安装您的集群。启用重新安装后,您可以定义所需的保存模式,并在适用的情况下标记您的资源。

需要的访问权限:集群管理员

完成以下步骤来重新安装集群:

2.7.6.1. 启用集群重新安装

您必须在siteconfig-operator-configuration ConfigMap资源中明确启用集群重新安装,您可以在启动该过程之前完成此操作。默认情况下,重新安装是禁用的。

完成以下步骤:

  1. 设置NAMESPACE环境变量以匹配安装 SiteConfig 操作员的命名空间。运行以下命令:

    NAMESPACE=<namespace>
    Copy to Clipboard Toggle word wrap
  2. 通过运行以下命令来验证当前配置:

    oc get configmap siteconfig-operator-configuration -n $NAMESPACE -o yaml
    Copy to Clipboard Toggle word wrap

    输出示例:

    apiVersion: v1
    kind: ConfigMap
    metadata:
        name: siteconfig-operator-configuration
        namespace: <namespace> 
    1
    
    data:
        allowReinstalls: false 
    2
    
        ...
    Copy to Clipboard Toggle word wrap
    1
    安装 SiteConfig 操作员的命名空间。
    2
    设置为true以启用重新安装。

    注意:操作员持续监控siteconfig-operator-configuration ConfigMap资源的变化。

  3. 要启用集群重新安装,请通过将data.allowReinstalls字段设置为true来更新ConfigMap资源。运行以下命令:

    oc patch configmap siteconfig-operator-configuration \
        -n $NAMESPACE \
        --type=json \
        -p '[{"op": "replace", "path": "/data/allowReinstalls", "value": "true"}]'
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令验证更新:

    oc get configmap siteconfig-operator-configuration -n $NAMESPACE -o yaml
    Copy to Clipboard Toggle word wrap

2.7.6.2. 标记资源以便保存

您可以在ClusterInstance自定义资源中设置所需的保存模式,并在适用的情况下相应地标记您的资源。默认情况下, preservationMode字段设置为None 。有关详细信息,请参阅资源标签保存

完成以下示例步骤:

  • 通过运行以下命令将资源标记为全部保存模式:

    oc label configmap <your_configmap> "siteconfig.open-cluster-management.io/preserve=all"
    Copy to Clipboard Toggle word wrap

ClusterInstance自定义资源使用与应用的标签相对应的正确的preservationMode进行更新。

2.7.6.3. 启动集群重新安装

要开始重新安装,请使用新的spec.reinstall.generation值更新ClusterInstance资源。

  1. 修改ClusterInstance资源中的spec.reinstall.generation值:

    apiVersion: siteconfig.open-cluster-management.io/v1alpha1
    kind: `ClusterInstance`
    metadata:
      name: clusterinstance-example
      namespace: some-namespace
    spec:
      reinstall:
        generation: "unique-generation-string"
        preservationMode: "<your-preservation-mode>"
    Copy to Clipboard Toggle word wrap

注意:修改ClusterInstance资源时,请确保设置适当的保存模式。“None”“All”“ClusterIdentity”是有效值。

  1. 可选。定义spec.reinstall对象时,您可以修改ClusterInstance资源中的以下附加字段:

    • spec.extraAnnotations
    • spec.extraLabels
    • spec.suppressedManifests
    • spec.pruneManifests
    • spec.nodes.<node-id>.extraAnnotations
    • spec.nodes.<node-id>.extraLabels
    • spec.nodes.<node-id>.suppressedManifests
    • spec.nodes.<node-id>.pruneManifests
    • spec.nodes.<node-id>.bmcAddress
    • spec.nodes.<node-id>.bootMACAddress
    • spec.nodes.<node-id>.nodeNetwork.interfaces.macAddress
    • spec.nodes.<node-id>.rootDeviceHints

    注意: <node-id>代表更新后的NodeSpec对象。

  2. 应用更改。设置以下选项:

    1. 如果您使用的是 OpenShift GitOps ZTP,请推送到您的 Git 存储库并等待 Argo CD 同步更改。
    2. 要手动应用更改,请在中心集群上运行以下命令:
    oc apply -f clusterinstance-example.yaml
    Copy to Clipboard Toggle word wrap

2.7.6.4. 监控集群重新安装

您可以监控集群重新安装进度。完成以下步骤:

  1. 验证重新安装请求是否正在处理:

    oc get clusterinstance clusterinstance-example -n some-namespace -o json | jq -r '.status.reinstall.conditions[] | select(.type=="ReinstallRequestProcessed")'
    Copy to Clipboard Toggle word wrap

    请参见以下示例输出:

    {
    "type": "ReinstallRequestProcessed"
    "reason": "InProgress",
    "status": "False",
    ...
    }
    Copy to Clipboard Toggle word wrap
  2. 验证集群重新安装请求是否成功验证:

    oc get clusterinstance clusterinstance-example -n some-namespace -o json | jq -r '.status.reinstall.conditions[] | select(.type=="ReinstallRequestValidated")'
    Copy to Clipboard Toggle word wrap

    请参见以下示例输出:

    {
    "type": "ReinstallRequestValidated"
    "reason": "Completed",
    "status": "True",
    ...
    }
    Copy to Clipboard Toggle word wrap
  3. 可选。如果将spec.reinstall.preservationMode字段设置为AllClusterIdentity ,请验证集群身份数据是否被保留:

    oc get clusterinstance clusterinstance-example -n some-namespace -o json | jq -r '.status.reinstall.conditions[] | select(.type=="ReinstallPreservationDataBackedup")'
    Copy to Clipboard Toggle word wrap

    请参见以下示例输出:

    {
    "type": "ReinstallPreservationDataBackedup"
    "reason": "Completed",
    "status": "True",
    ...
    }
    Copy to Clipboard Toggle word wrap
  4. 可选。如果将spec.reinstall.preservationMode字段设置为AllClusterIdentity ,请验证是否检测到集群身份数据:

    oc get clusterinstance clusterinstance-example -n some-namespace -o json | jq -r '.status.reinstall.conditions[] | select(.type=="ReinstallClusterIdentityDataDetected")'
    Copy to Clipboard Toggle word wrap

    请参见以下示例输出:

    {
    "type": "ReinstallClusterIdentityDataDetected"
    "reason": "DataAvailable",
    "status": "True",
    ...
    }
    Copy to Clipboard Toggle word wrap
  5. 验证安装清单是否已被删除。删除可能需要几分钟才能完成。

    oc get clusterinstance clusterinstance-example -n some-namespace -o json | jq -r '.status.reinstall.conditions[] | select(.type=="ReinstallRenderedManifestsDeleted")'
    Copy to Clipboard Toggle word wrap

    请参见以下示例输出:

    {
    "type": "ReinstallRenderedManifestsDeleted"
    "reason": "Completed",
    "status": "True",
    ...
    }
    Copy to Clipboard Toggle word wrap
  6. 可选。如果将preseservationMode字段设置为AllClusterIdentity ,请验证之前保存的数据是否已恢复:

    oc get clusterinstance clusterinstance-example -n some-namespace -o json | jq -r '.status.reinstall.conditions[] | select(.type=="ReinstallPreservationDataRestored")'
    Copy to Clipboard Toggle word wrap

    请参见以下示例输出:

    {
    "type": "ReinstallPreservationDataRestored"
    "reason": "Completed",
    "status": "True",
    ...
    }
    Copy to Clipboard Toggle word wrap
  7. 验证上述步骤后,请确保重新安装请求已成功完成:

    oc get clusterinstance clusterinstance-example -n some-namespace -o json | jq -r '.status.reinstall.conditions[] | select(.type=="ReinstallRequestProcessed")'
    Copy to Clipboard Toggle word wrap

    请参见以下示例输出:

    {
    "type": "ReinstallRequestProcessed"
    "reason": "Completed",
    "status": "True",
    ...
    }
    Copy to Clipboard Toggle word wrap
  8. 通过使用与重新安装的集群关联的kubeconfig文件运行oc命令来确认集群已成功重新安装并且可以运行。

基于映像的中断/修复功能利用 SiteConfig 操作员的集群重新安装机制来简化单节点 OpenShift 硬件更换。该功能通过保留集群的原始身份来最大限度地减少停机时间。基于映像的中断/修复功能保留了关键的集群详细信息,包括标识符、加密密钥(如kubeconfig )和身份验证凭据,这使得替换节点能够无缝地承担故障硬件的身份。

基于映像的中断/修复专为使用基于映像的安装方法安装的单节点 OpenShift 集群中的相同硬件替换而设计,它引入了与 GitOps 兼容的声明性 API。用户可以通过单个 Git 提交来启动硬件更换。在 SiteConfig 操作员和基于图像的安装操作员的支持下,基于图像的中断/修复可以使用现有的ClusterInstance自定义资源实现集群重新部署。

借助基于映像的中断/修复,OpenShift 容器平台用户可以获得弹性、自动化和 GitOps 原生解决方案,以便在硬件故障后快速恢复单节点 OpenShift 集群。

基于映像的中断/修复工作流程与集群重新安装工作流程类似,但存在某些差异。要熟悉工作流程中的差异,请参阅基于映像的中断/修复集群重新安装工作流程的高级概述:

  • 启用 SiteConfig 操作员重新安装服务。
  • 启动集群重新安装。

    • 设置spec.reinstall.preservationMode: "ClusterIdentity"
    • 使用更改后的硬件信息更新spec.nodes对象。
    • 注意:基于图像的安装操作员会自动标记集群身份资源。
  • 监控重新安装进度。

    • 在集群配置期间,使用安装清单的操作员使用新生成的清单来配置集群。
    • 注意:基于映像的安装操作员检测保留的集群身份数据并将其合并到配置 ISO 映像中。
  • 验证集群是否已配置且可用。

    • 使用与故障硬件关联的kubeconfig访问重新安装的辐射集群。

有关详细信息,请参阅使用 SiteConfig 操作员重新安装集群(技术预览版)。

2.7.7.2. 先决条件

  • 该集群是使用基于映像的安装配置方法安装的单节点 OpenShift 集群。
  • 故障硬件被具有相同规格的新节点替换。

要启动基于映像的中断/修复集群重新安装,请通过设置spec.reinstall.generation字段并使用更改的硬件信息更新spec.nodes对象来更新ClusterInstance资源。

  1. 修改spec.reinstall.generation字段并使用新节点详细信息更新ClusterInstance资源中的spec.nodes对象:

    apiVersion: siteconfig.open-cluster-management.io/v1alpha1
    kind: `ClusterInstance`
    metadata:
      name: clusterinstance-example
      namespace: some-namespace
    spec:
      ...
      reinstall:
        generation: "unique-generation-string"
        preservationMode: "ClusterIdentity"
      nodes:
        - bmcAddress: <new-node-bmcAddress>
          bootMACAddress: <new-node-bootMACAddress>
          rootDeviceHints: <new-node-rootDeviceHints>
          nodeNetwork:
            interfaces:
              macAddress: <new-node-macAddress>
              ...
          ...
    Copy to Clipboard Toggle word wrap
  2. 应用更改。设置以下选项:

    1. 如果您使用的是 OpenShift GitOps ZTP,请推送到您的 Git 存储库并等待 Argo CD 同步更改。
    2. 要手动应用更改,请在中心集群上运行以下命令:
    oc apply -f clusterinstance-example.yaml
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat