11.2. 裸机事件的工作方式

Bare Metal Event Relay 启用在裸机集群中运行的应用程序可以快速响应 Redfish 硬件更改和故障,如违反温度阈值、故障故障、磁盘丢失、电源中断和内存故障。这些硬件事件通过基于高级消息队列协议(AMQP)的可靠低延迟传输频道交付。消息传递服务的延迟时间为 10 到 20 毫秒。

Bare Metal Event Relay 为硬件事件提供了一个发布订阅服务,其中多个应用程序可以使用 REST API 订阅和使用事件。Bare Metal 事件 Relay 支持与 Redfish OpenAPI v1.8 或更高版本的硬件。

11.2.1. 裸机事件中继数据流

下图演示了裸机事件数据流示例:

图 11.1. 裸机事件中继数据流

裸机事件数据流

11.2.1.1. Operator 管理的 pod

Operator 使用自定义资源来管理包含 Bare Metal Event Relay 及其组件( hardware Event CR) 的 pod。

11.2.1.2. 裸机事件中继

启动时,Bare Metal 事件 Relay 查询 Redfish API 并下载所有消息 registry,包括自定义 registry。然后,Bare Metal 事件 Relay 开始从 Redfish 硬件接收订阅的事件。

Bare Metal Event Relay 启用在裸机集群中运行的应用程序可以快速响应 Redfish 硬件更改和故障,如违反温度阈值、故障故障、磁盘丢失、电源中断和内存故障。使用 HardwareEvent CR 报告事件。

11.2.1.3. 云原生事件

云原生事件(CNE)是用于定义事件数据格式的 REST API 规格。

11.2.1.4. CNCF CloudEvents

CloudEvents 是云原生计算基础(CNCF)开发的供应商中立规格,用于定义事件数据的格式。

11.2.1.5. AMQP 分配路由器

分配路由器负责发布者和订阅者之间的消息交付服务。AMQP 1.0 qpid 是开放的标准,可在互联网上支持可靠、高性能、完全对称的消息传递。

11.2.1.6. 云事件代理 sidecar

云事件代理 sidecar 容器镜像基于 ORAN API 规格,为硬件事件提供发布订阅事件框架。

11.2.2. Redfish 消息解析服务

除了处理 Redfish 事件外,Bare Metal Event Relay 为事件提供消息解析功能,而无需 Message 属性。代理会下载所有 Redfish 消息 registry,包括在启动时从硬件中的特定 registry。如果事件不包含 Message 属性,代理使用 Redfish 消息 registry 来构造 MessageResolution 属性,并在将事件传递给云事件框架前将其添加到事件中。此服务允许 Redfish 事件具有较小的消息大小,并会降低传输延迟。

11.2.3. 使用 CLI 安装裸机事件中继

作为集群管理员,您可以使用 CLI 安装 Bare Metal Event Relay Operator。

先决条件

  • 在裸机硬件上安装的集群,节点带有启用了 RedFish 的 Baseboard Management Controller(BMC)。
  • 安装 OpenShift CLI (oc) 。
  • 以具有 cluster-admin 特权的用户身份登录。

流程

  1. 为 Bare Metal Event Relay 创建命名空间。

    1. 将以下 YAML 保存到 bare-metal-events-namespace.yaml 文件中:

      apiVersion: v1
      kind: Namespace
      metadata:
        name: openshift-bare-metal-events
        labels:
          name: openshift-bare-metal-events
          openshift.io/cluster-monitoring: "true"
    2. 创建 Namespace CR:

      $ oc create -f bare-metal-events-namespace.yaml
  2. 为 Bare Metal Event Relay Operator 创建 Operator 组。

    1. 将以下 YAML 保存到 bare-metal-events-operatorgroup.yaml 文件中:

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: bare-metal-event-relay-group
        namespace: openshift-bare-metal-events
      spec:
        targetNamespaces:
        - openshift-bare-metal-events
    2. 创建 OperatorGroup CR:

      $ oc create -f bare-metal-events-operatorgroup.yaml
  3. 订阅裸机恢复事件中继。

    1. 将以下 YAML 保存到 bare-metal-events-sub.yaml 文件中:

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: bare-metal-event-relay-subscription
        namespace: openshift-bare-metal-events
      spec:
        channel: "stable"
        name: bare-metal-event-relay
        source: redhat-operators
        sourceNamespace: openshift-marketplace
    2. 创建 Subscription CR:

      $ oc create -f bare-metal-events-sub.yaml

验证

要验证是否已安装 Bare Metal Event Relay Operator,请运行以下命令:

$ oc get csv -n openshift-bare-metal-events -o custom-columns=Name:.metadata.name,Phase:.status.phase

输出示例

Name                                                    Phase
bare-metal-event-relay.4.10.0-202206301927              Succeeded

11.2.4. 使用 Web 控制台安装 Bare Metal Event Relay

作为集群管理员,您可以使用 Web 控制台安装 Bare Metal Event Relay Operator。

先决条件

  • 在裸机硬件上安装的集群,节点带有启用了 RedFish 的 Baseboard Management Controller(BMC)。
  • 以具有 cluster-admin 特权的用户身份登录。

流程

  1. 使用 OpenShift Container Platform Web 控制台安装 Bare Metal Event Relay:

    1. 在 OpenShift Container Platform Web 控制台中,点击 OperatorsOperatorHub
    2. 从可用的 Operator 列表中选择 Bare Metal Event Relay,然后点 Install
    3. Install Operator 页面中,选择或创建一个命名空间,选择 openshift-bare-metal-events,然后点 Install

验证

可选: 您可以通过执行以下检查来验证 Operator 是否已成功安装:

  1. 切换到 OperatorsInstalled Operators 页面。
  2. 确保项目中列出了 Bare Metal Event RelayStatusInstallSucceeded

    注意

    在安装过程中,Operator 可能会显示 Failed 状态。如果安装过程结束后有 InstallSucceeded 信息,您可以忽略这个 Failed 信息。

如果 Operator 没有被成功安装,请按照以下步骤进行故障排除:

  • 进入 OperatorsInstalled Operators 页面,检查 Operator SubscriptionsInstall Plans 选项卡中的 Status 项中是否有任何错误。
  • 进入 WorkloadsPods 页面,检查项目命名空间中的 pod 日志。