×

Red Hat OpenShift Service on AWS 运算符使用自定义资源 (CR) 来管理应用程序及其组件。高级配置和设置由用户在 CR 中提供。运算符根据嵌入在运算符逻辑中的最佳实践,将高级指令转换为低级操作。自定义资源定义 (CRD) 定义 CR 并列出运算符用户可用的所有配置。安装运算符会创建 CRD,然后用于生成 CR。

必须在日志存储运算符**之后**安装 Red Hat OpenShift Logging 运算符。

您可以通过安装 Loki 运算符或 OpenShift Elasticsearch 运算符来管理日志存储,然后安装 Red Hat OpenShift Logging 运算符来管理日志记录组件来部署日志记录。您可以使用 Red Hat OpenShift Service on AWS Web 控制台或 Red Hat OpenShift Service on AWS CLI 来安装或配置日志记录。

日志记录 5.9 版本不包含 OpenShift Elasticsearch 运算符的更新版本。如果您目前使用的是随日志记录 5.8 发布的 OpenShift Elasticsearch 运算符,它将继续与日志记录一起使用,直到日志记录 5.8 结束生命周期 (EOL)。作为使用 OpenShift Elasticsearch 运算符管理默认日志存储的替代方法,您可以使用 Loki 运算符。有关日志记录生命周期日期的更多信息,请参阅与平台无关的运算符

或者,您可以应用所有示例对象。

使用 Web 控制台安装使用 Elasticsearch 的日志记录

您可以使用 Red Hat OpenShift Service on AWS Web 控制台来安装 OpenShift Elasticsearch 和 Red Hat OpenShift Logging 运算符。Elasticsearch 是一个内存密集型应用程序。默认情况下,Red Hat OpenShift Service on AWS 会安装三个 Elasticsearch 节点,其内存请求和限制为 16 GB。这最初的三个 Red Hat OpenShift Service on AWS 节点可能没有足够的内存来在您的集群中运行 Elasticsearch。如果您遇到与 Elasticsearch 相关的内存问题,请向您的集群添加更多 Elasticsearch 节点,而不是增加现有节点上的内存。

如果您不想使用默认的 Elasticsearch 日志存储,您可以从 ClusterLogging 自定义资源 (CR) 中删除内部 Elasticsearch logStore 和 Kibana visualization 组件。删除这些组件是可选的,但可以节省资源。

先决条件
  • 确保您拥有 Elasticsearch 的必要持久性存储。请注意,每个 Elasticsearch 节点都需要它自己的存储卷。

    如果您使用本地卷进行持久性存储,请不要使用原始块卷,这在 LocalVolume 对象中用 volumeMode: block 描述。Elasticsearch 无法使用原始块卷。

步骤

要使用 Red Hat OpenShift Service on AWS Web 控制台安装 OpenShift Elasticsearch 运算符和 Red Hat OpenShift Logging 运算符

  1. 安装 OpenShift Elasticsearch 运算符

    1. 在 Red Hat OpenShift Service on AWS Web 控制台中,单击**运算符** → **OperatorHub**。

    2. 从可用运算符列表中选择**OpenShift Elasticsearch 运算符**,然后单击**安装**。

    3. 确保在**安装模式**下选择了**集群上的所有命名空间**。

    4. 确保在**已安装命名空间**下选择了**openshift-operators-redhat**。

      您必须指定 openshift-operators-redhat 命名空间。openshift-operators 命名空间可能包含社区运算符,这些运算符不受信任,并且可能会发布与 Red Hat OpenShift Service on AWS 指标名称相同的指标,这会导致冲突。

    5. 选择**在此命名空间上启用运算符推荐的集群监控**。

      此选项在命名空间对象中设置 openshift.io/cluster-monitoring: "true" 标签。您必须选择此选项才能确保集群监控会抓取 openshift-operators-redhat 命名空间。

    6. 选择**stable-5.y**作为**更新通道**。

      **stable** 通道仅提供对最新日志记录版本的更新。要继续接收先前版本的更新,您必须将订阅通道更改为**stable-x.y**,其中 x.y 代表您已安装的日志记录的主版本和次版本。例如,**stable-5.7**。

    7. 选择**审批策略**。

      • **自动**策略允许运算符生命周期管理器 (OLM) 在有新版本可用时自动更新运算符。

      • **手动**策略需要具有相应凭据的用户来批准运算符更新。

    8. 单击**安装**。

    9. 通过切换到**运算符** → **已安装运算符**页面来验证 OpenShift Elasticsearch 运算符是否已安装。

    10. 确保所有项目中都列出了**OpenShift Elasticsearch 运算符**,并且**状态**为**成功**。

  2. 安装 Red Hat OpenShift Logging 运算符

    1. 在 Red Hat OpenShift Service on AWS Web 控制台中,单击**运算符** → **OperatorHub**。

    2. 从可用运算符列表中选择**Red Hat OpenShift Logging**,然后单击**安装**。

    3. 确保在安装模式下选择了集群上的特定命名空间

    4. 确保推荐的 Operator 命名空间已安装命名空间下为openshift-logging

    5. 选择**在此命名空间上启用运算符推荐的集群监控**。

      此选项在命名空间对象中设置openshift.io/cluster-monitoring: "true"标签。必须选择此选项才能确保集群监控抓取openshift-logging命名空间。

    6. 选择**stable-5.y**作为**更新通道**。

    7. 选择**审批策略**。

      • **自动**策略允许运算符生命周期管理器 (OLM) 在有新版本可用时自动更新运算符。

      • **手动**策略需要具有相应凭据的用户来批准运算符更新。

    8. 单击**安装**。

    9. 通过切换到OperatorsInstalled Operators页面,验证 Red Hat OpenShift Logging Operator 是否已安装。

    10. 确保Red Hat OpenShift Logging列在openshift-logging项目中,且状态已成功

      如果 Operator 未显示为已安装状态,请进一步排查问题。

      • 切换到OperatorsInstalled Operators页面,检查状态列中是否存在任何错误或故障。

      • 切换到WorkloadsPods页面,并检查openshift-logging项目中任何报告问题的 Pod 的日志。

  3. 创建 OpenShift Logging 实例

    1. 切换到AdministrationCustom Resource Definitions页面。

    2. Custom Resource Definitions页面上,点击ClusterLogging

    3. Custom Resource Definition details页面上,从Actions菜单中选择View Instances

    4. ClusterLoggings页面上,点击Create ClusterLogging

      您可能需要刷新页面才能加载数据。

    5. 在 YAML 字段中,将代码替换为以下内容

      此默认的 OpenShift Logging 配置应该支持各种各样的环境。请查看有关调整和配置日志记录组件的主题,以获取有关可以对 OpenShift Logging 集群进行的修改的信息。

      apiVersion: logging.openshift.io/v1
      kind: ClusterLogging
      metadata:
        name: instance (1)
        namespace: openshift-logging
      spec:
        managementState: Managed (2)
        logStore:
          type: elasticsearch (3)
          retentionPolicy: (4)
            application:
              maxAge: 1d
            infra:
              maxAge: 7d
            audit:
              maxAge: 7d
          elasticsearch:
            nodeCount: 3 (5)
            storage:
              storageClassName: <storage_class_name> (6)
              size: 200G
            resources: (7)
                limits:
                  memory: 16Gi
                requests:
                  memory: 16Gi
            proxy: (8)
              resources:
                limits:
                  memory: 256Mi
                requests:
                  memory: 256Mi
            redundancyPolicy: SingleRedundancy
        visualization:
          type: kibana (9)
          kibana:
            replicas: 1
        collection:
          type: fluentd (10)
          fluentd: {}
      1 名称必须为instance
      2 OpenShift Logging 管理状态。在某些情况下,如果更改 OpenShift Logging 默认值,则必须将其设置为Unmanaged。但是,未管理的部署在 OpenShift Logging 恢复为已管理状态之前不会接收更新。
      3 配置 Elasticsearch 的设置。使用 CR,您可以配置分片复制策略和持久性存储。
      4 指定 Elasticsearch 应保留每个日志源的时间长度。输入一个整数和一个时间表示:周 (w)、小时 (h/H)、分钟 (m) 和秒 (s)。例如,7d 表示七天。早于maxAge的日志将被删除。必须为每个日志源指定保留策略,否则不会为该源创建 Elasticsearch 索引。
      5 指定 Elasticsearch 节点的数量。请参阅此列表后面的注释。
      6 输入现有 Elasticsearch 存储的存储类的名称。为了获得最佳性能,请指定分配块存储的存储类。如果未指定存储类,OpenShift Logging 将使用临时存储。
      7 根据需要指定 Elasticsearch 的 CPU 和内存请求。如果保留这些值为空,则 OpenShift Elasticsearch Operator 将设置对于大多数部署都足够的值。默认值为内存请求16Gi和 CPU 请求1
      8 根据需要指定 Elasticsearch 代理的 CPU 和内存请求。如果保留这些值为空,则 OpenShift Elasticsearch Operator 将设置对于大多数部署都足够的值。默认值为内存请求256Mi和 CPU 请求100m
      9 配置 Kibana 的设置。使用 CR,您可以扩展 Kibana 以实现冗余,并为 Kibana 节点配置 CPU 和内存。更多信息,请参见配置日志可视化工具
      10 配置 Fluentd 的设置。使用 CR,您可以配置 Fluentd CPU 和内存限制。更多信息,请参见“配置 Fluentd”。

      主节点的最大数量为三个。如果指定的nodeCount大于3,则 Red Hat OpenShift Service on AWS 将创建三个具有主节点资格的 Elasticsearch 节点,这些节点具有主节点、客户端和数据角色。其他 Elasticsearch 节点将作为仅数据节点创建,使用客户端和数据角色。主节点执行集群范围的操作,例如创建或删除索引、分片分配和跟踪节点。数据节点保存分片并执行与数据相关的操作,例如 CRUD、搜索和聚合。与数据相关的操作是 I/O 密集型、内存密集型和 CPU 密集型操作。监控这些资源非常重要,如果当前节点过载,则需要添加更多数据节点。

      例如,如果nodeCount=4,则将创建以下节点:

      $ oc get deployment
      示例输出
      cluster-logging-operator-66f77ffccb-ppzbg       1/1    Running 0 7m
      elasticsearch-cd-tuhduuw-1-f5c885dbf-dlqws      1/1    Running 0 2m4s
      elasticsearch-cdm-ftuhduuw-1-ffc4b9566-q6bhp    2/2    Running 0 2m40s
      elasticsearch-cdm-ftuhduuw-2-7b4994dbfc-rd2gc   2/2    Running 0 2m36s
      elasticsearch-cdm-ftuhduuw-3-84b5ff7ff8-gqnm2   2/2    Running 0 2m4s
    6. 点击创建。这将创建日志组件、Elasticsearch自定义资源和组件以及 Kibana 接口。

  4. 验证安装

    1. 切换到WorkloadsPods页面。

    2. 选择openshift-logging项目。

      您应该看到 OpenShift Logging、Elasticsearch、收集器和 Kibana 的多个 Pod,类似于以下列表:

      示例输出
      cluster-logging-operator-66f77ffccb-ppzbg       1/1     Running   0          7m
      elasticsearch-cdm-ftuhduuw-1-ffc4b9566-q6bhp    2/2     Running   0          2m40s
      elasticsearch-cdm-ftuhduuw-2-7b4994dbfc-rd2gc   2/2     Running   0          2m36s
      elasticsearch-cdm-ftuhduuw-3-84b5ff7ff8-gqnm2   2/2     Running   0          2m4s
      collector-587vb                                   1/1     Running   0          2m26s
      collector-7mpb9                                   1/1     Running   0          2m30s
      collector-flm6j                                   1/1     Running   0          2m33s
      collector-gn4rn                                   1/1     Running   0          2m26s
      collector-nlgb6                                   1/1     Running   0          2m30s
      collector-snpkt                                   1/1     Running   0          2m28s
      kibana-d6d5668c5-rppqm                          2/2     Running   0          2m39s

使用 CLI 安装使用 Elasticsearch 的日志记录

Elasticsearch 是一个内存密集型应用程序。默认情况下,Red Hat OpenShift Service on AWS 安装三个 Elasticsearch 节点,内存请求和限制为 16 GB。这最初的三个 Red Hat OpenShift Service on AWS 节点可能没有足够的内存来在您的集群中运行 Elasticsearch。如果遇到与 Elasticsearch 相关的内存问题,请向集群添加更多 Elasticsearch 节点,而不是增加现有节点上的内存。

先决条件
  • 确保您拥有 Elasticsearch 的必要持久性存储。请注意,每个 Elasticsearch 节点都需要它自己的存储卷。

    如果您使用本地卷进行持久性存储,请不要使用原始块卷,这在 LocalVolume 对象中用 volumeMode: block 描述。Elasticsearch 无法使用原始块卷。

步骤
  1. 为 OpenShift Elasticsearch Operator 创建一个Namespace对象

    Namespace对象的示例
    apiVersion: v1
    kind: Namespace
    metadata:
      name: openshift-operators-redhat (1)
      annotations:
        openshift.io/node-selector: ""
      labels:
        openshift.io/cluster-monitoring: "true" (2)
    1 您必须指定 openshift-operators-redhat 命名空间。openshift-operators 命名空间可能包含社区运算符,这些运算符不受信任,并且可能会发布与 Red Hat OpenShift Service on AWS 指标名称相同的指标,这会导致冲突。
    2 一个字符串值,指定如所示的标签,以确保集群监控抓取openshift-operators-redhat命名空间。
  2. 通过运行以下命令应用Namespace对象:

    $ oc apply -f <filename>.yaml
  3. 为 Red Hat OpenShift Logging Operator 创建一个Namespace对象

    Namespace对象的示例
    apiVersion: v1
    kind: Namespace
    metadata:
      name: openshift-logging (1)
      annotations:
        openshift.io/node-selector: ""
      labels:
        openshift.io/cluster-monitoring: "true"
    1 对于 5.7 和更早版本的日志记录,必须指定openshift-logging作为命名空间。对于 5.8 和更高版本的日志记录,您可以使用任何命名空间。
  4. 通过运行以下命令应用Namespace对象:

    $ oc apply -f <filename>.yaml
  5. 为 OpenShift Elasticsearch Operator 创建一个OperatorGroup对象

    OperatorGroup对象的示例
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: openshift-operators-redhat
      namespace: openshift-operators-redhat (1)
    spec: {}
    1 必须指定openshift-operators-redhat命名空间。
  6. 通过运行以下命令应用OperatorGroup对象:

    $ oc apply -f <filename>.yaml
  7. 创建一个Subscription对象,以将命名空间订阅到 OpenShift Elasticsearch Operator

    **stable** 通道仅提供对最新日志记录版本的更新。要继续接收先前版本的更新,您必须将订阅通道更改为**stable-x.y**,其中 x.y 代表您已安装的日志记录的主版本和次版本。例如,**stable-5.7**。

    Subscription对象的示例
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: elasticsearch-operator
      namespace: openshift-operators-redhat (1)
    spec:
      channel: <channel> (2)
      installPlanApproval: Automatic (3)
      source: redhat-operators (4)
      sourceNamespace: openshift-marketplace
      name: elasticsearch-operator
    1 必须指定openshift-operators-redhat命名空间。
    2 指定stablestable-<x.y>作为通道。
    3 Automatic允许 Operator Lifecycle Manager (OLM)在有新版本可用时自动更新 Operator。Manual需要具有相应凭据的用户批准 Operator 更新。
    4 指定redhat-operators。如果您的 Red Hat OpenShift Service on AWS 集群安装在受限网络(也称为断开连接的集群)上,请指定在配置 Operator Lifecycle Manager (OLM)时创建的CatalogSource对象的名称。
  8. 通过运行以下命令应用订阅:

    $ oc apply -f <filename>.yaml
  9. 通过运行以下命令验证 Operator 安装:

    $ oc get csv --all-namespaces
    示例输出
    NAMESPACE                                          NAME                            DISPLAY                            VERSION          REPLACES                        PHASE
    default                                            elasticsearch-operator.v5.8.3   OpenShift Elasticsearch Operator   5.8.3            elasticsearch-operator.v5.8.2   Succeeded
    kube-node-lease                                    elasticsearch-operator.v5.8.3   OpenShift Elasticsearch Operator   5.8.3            elasticsearch-operator.v5.8.2   Succeeded
    kube-public                                        elasticsearch-operator.v5.8.3   OpenShift Elasticsearch Operator   5.8.3            elasticsearch-operator.v5.8.2   Succeeded
    kube-system                                        elasticsearch-operator.v5.8.3   OpenShift Elasticsearch Operator   5.8.3            elasticsearch-operator.v5.8.2   Succeeded
    openshift-apiserver-operator                       elasticsearch-operator.v5.8.3   OpenShift Elasticsearch Operator   5.8.3            elasticsearch-operator.v5.8.2   Succeeded
    openshift-apiserver                                elasticsearch-operator.v5.8.3   OpenShift Elasticsearch Operator   5.8.3            elasticsearch-operator.v5.8.2   Succeeded
    openshift-authentication-operator                  elasticsearch-operator.v5.8.3   OpenShift Elasticsearch Operator   5.8.3            elasticsearch-operator.v5.8.2   Succeeded
    openshift-authentication                           elasticsearch-operator.v5.8.3   OpenShift Elasticsearch Operator   5.8.3            elasticsearch-operator.v5.8.2   Succeeded
    openshift-cloud-controller-manager-operator        elasticsearch-operator.v5.8.3   OpenShift Elasticsearch Operator   5.8.3            elasticsearch-operator.v5.8.2   Succeeded
    openshift-cloud-controller-manager                 elasticsearch-operator.v5.8.3   OpenShift Elasticsearch Operator   5.8.3            elasticsearch-operator.v5.8.2   Succeeded
    openshift-cloud-credential-operator                elasticsearch-operator.v5.8.3   OpenShift Elasticsearch Operator   5.8.3            elasticsearch-operator.v5.8.2   Succeeded
  10. 为 Red Hat OpenShift Logging Operator 创建一个OperatorGroup对象

    OperatorGroup对象的示例
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: cluster-logging
      namespace: openshift-logging (1)
    spec:
      targetNamespaces:
      - openshift-logging (2)
    1 对于 5.7 和更早版本的日志记录,必须指定openshift-logging作为命名空间。对于 5.8 和更高版本的日志记录,您可以使用任何命名空间。
    2 对于 5.7 和更早版本的日志记录,必须指定openshift-logging作为命名空间。对于 5.8 和更高版本的日志记录,您可以使用任何命名空间。
  11. 通过运行以下命令应用OperatorGroup对象:

    $ oc apply -f <filename>.yaml
  12. 创建一个Subscription对象,以将命名空间订阅到 Red Hat OpenShift Logging Operator

    Subscription对象的示例
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: cluster-logging
      namespace: openshift-logging (1)
    spec:
      channel: stable (2)
      name: cluster-logging
      source: redhat-operators (3)
      sourceNamespace: openshift-marketplace
    1 对于 5.7 及更早版本的日志记录,必须指定openshift-logging命名空间。对于 5.8 及更高版本的日志记录,您可以使用任何命名空间。
    2 指定stablestable-x.y作为通道。
    3 指定redhat-operators。如果您的 Red Hat OpenShift Service on AWS 集群安装在受限网络(也称为断开连接的集群)上,请指定在配置 Operator Lifecycle Manager (OLM)时创建的CatalogSource对象的名称。
  13. 通过运行以下命令应用subscription对象:

    $ oc apply -f <filename>.yaml
  14. 创建一个ClusterLogging对象作为 YAML 文件

    ClusterLogging对象的示例
    apiVersion: logging.openshift.io/v1
    kind: ClusterLogging
    metadata:
      name: instance (1)
      namespace: openshift-logging
    spec:
      managementState: Managed (2)
      logStore:
        type: elasticsearch (3)
        retentionPolicy: (4)
          application:
            maxAge: 1d
          infra:
            maxAge: 7d
          audit:
            maxAge: 7d
        elasticsearch:
          nodeCount: 3 (5)
          storage:
            storageClassName: <storage_class_name> (6)
            size: 200G
          resources: (7)
              limits:
                memory: 16Gi
              requests:
                memory: 16Gi
          proxy: (8)
            resources:
              limits:
                memory: 256Mi
              requests:
                memory: 256Mi
          redundancyPolicy: SingleRedundancy
      visualization:
        type: kibana (9)
        kibana:
          replicas: 1
      collection:
        type: fluentd (10)
        fluentd: {}
    1 名称必须为instance
    2 OpenShift Logging 管理状态。在某些情况下,如果更改 OpenShift Logging 默认值,则必须将其设置为Unmanaged。但是,未管理的部署在 OpenShift Logging 恢复为已管理状态之前不会接收更新。
    3 配置 Elasticsearch 的设置。使用 CR,您可以配置分片复制策略和持久性存储。
    4 指定 Elasticsearch 应保留每个日志源的时间长度。输入一个整数和一个时间表示:周 (w)、小时 (h/H)、分钟 (m) 和秒 (s)。例如,7d 表示七天。早于maxAge的日志将被删除。必须为每个日志源指定保留策略,否则不会为该源创建 Elasticsearch 索引。
    5 指定 Elasticsearch 节点的数量。
    6 输入现有 Elasticsearch 存储的存储类的名称。为了获得最佳性能,请指定分配块存储的存储类。如果未指定存储类,OpenShift Logging 将使用临时存储。
    7 根据需要指定 Elasticsearch 的 CPU 和内存请求。如果保留这些值为空,则 OpenShift Elasticsearch Operator 将设置对于大多数部署都足够的值。默认值为内存请求16Gi和 CPU 请求1
    8 根据需要指定 Elasticsearch 代理的 CPU 和内存请求。如果保留这些值为空,则 OpenShift Elasticsearch Operator 将设置对于大多数部署都足够的值。默认值为内存请求256Mi和 CPU 请求100m
    9 配置 Kibana 的设置。使用 CR,您可以扩展 Kibana 以实现冗余,并为 Kibana 节点配置 CPU 和内存。
    10 配置 Fluentd 的设置。使用 CR,您可以配置 Fluentd 的 CPU 和内存限制。

    主节点的最大数量为三个。如果指定的nodeCount大于3,则 Red Hat OpenShift Service on AWS 将创建三个具有主节点资格的 Elasticsearch 节点,这些节点具有主节点、客户端和数据角色。其他 Elasticsearch 节点将作为仅数据节点创建,使用客户端和数据角色。主节点执行集群范围的操作,例如创建或删除索引、分片分配和跟踪节点。数据节点保存分片并执行与数据相关的操作,例如 CRUD、搜索和聚合。与数据相关的操作是 I/O 密集型、内存密集型和 CPU 密集型操作。监控这些资源非常重要,如果当前节点过载,则需要添加更多数据节点。

    例如,如果nodeCount=4,则将创建以下节点:

    $ oc get deployment
    示例输出
    cluster-logging-operator-66f77ffccb-ppzbg       1/1     Running   0          7m
    elasticsearch-cdm-ftuhduuw-1-ffc4b9566-q6bhp    2/2     Running   0          2m40s
    elasticsearch-cdm-ftuhduuw-2-7b4994dbfc-rd2gc   2/2     Running   0          2m36s
    elasticsearch-cdm-ftuhduuw-3-84b5ff7ff8-gqnm2   2/2     Running   0          2m4s
  15. 运行以下命令应用ClusterLogging CR

    $ oc apply -f <filename>.yaml
  16. 运行以下命令验证安装

    $ oc get pods -n openshift-logging
    示例输出
    NAME                                            READY   STATUS    RESTARTS   AGE
    cluster-logging-operator-66f77ffccb-ppzbg       1/1     Running   0          7m
    elasticsearch-cdm-ftuhduuw-1-ffc4b9566-q6bhp    2/2     Running   0          2m40s
    elasticsearch-cdm-ftuhduuw-2-7b4994dbfc-rd2gc   2/2     Running   0          2m36s
    elasticsearch-cdm-ftuhduuw-3-84b5ff7ff8-gqnm2   2/2     Running   0          2m4s
    collector-587vb                                 1/1     Running   0          2m26s
    collector-7mpb9                                 1/1     Running   0          2m30s
    collector-flm6j                                 1/1     Running   0          2m33s
    collector-gn4rn                                 1/1     Running   0          2m26s
    collector-nlgb6                                 1/1     Running   0          2m30s
    collector-snpkt                                 1/1     Running   0          2m28s
    kibana-d6d5668c5-rppqm                          2/2     Running   0          2m39s

如果 s3 存储桶或 LokiStack 自定义资源 (CR) 中未定义保留期限,则日志不会被修剪,它们会永久保留在 s3 存储桶中,这可能会填满 s3 存储空间。

使用 CLI 安装日志记录和 Loki Operator

要在您的 Red Hat OpenShift Service on AWS 集群上安装和配置日志记录,必须首先安装一个 Operator,例如用于日志存储的 Loki Operator。这可以通过 Red Hat OpenShift Service on AWS CLI 完成。

先决条件
  • 您拥有管理员权限。

  • 您已安装 OpenShift CLI (oc)。

  • 您可以访问受支持的对象存储。例如:AWS S3、Google Cloud Storage、Azure、Swift、Minio 或 OpenShift Data Foundation。

步骤

**stable** 通道仅提供对最新日志记录版本的更新。要继续接收先前版本的更新,您必须将订阅通道更改为**stable-x.y**,其中 x.y 代表您已安装的日志记录的主版本和次版本。例如,**stable-5.7**。

  1. 为 Loki Operator 创建一个Namespace 对象

    Namespace对象的示例
    apiVersion: v1
    kind: Namespace
    metadata:
      name: openshift-operators-redhat (1)
      annotations:
        openshift.io/node-selector: ""
      labels:
        openshift.io/cluster-monitoring: "true" (2)
    1 您必须指定openshift-operators-redhat命名空间。为了避免与指标发生冲突,您应该配置 Prometheus 集群监控堆栈以从openshift-operators-redhat命名空间而不是openshift-operators命名空间抓取指标。openshift-operators命名空间可能包含社区 Operator,这些 Operator 未经信任,可能会发布与 Red Hat OpenShift Service on AWS 指标同名的指标,这会导致冲突。
    2 一个字符串值,指定如所示的标签,以确保集群监控抓取openshift-operators-redhat命名空间。
  2. 通过运行以下命令应用Namespace对象:

    $ oc apply -f <filename>.yaml
  3. 为 Loki Operator 创建一个Subscription 对象

    Subscription对象的示例
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: loki-operator
      namespace: openshift-operators-redhat (1)
    spec:
      channel: stable (2)
      name: loki-operator
      source: redhat-operators (3)
      sourceNamespace: openshift-marketplace
    1 必须指定openshift-operators-redhat命名空间。
    2 指定stablestable-5.<y>作为通道。
    3 指定redhat-operators。如果您的 Red Hat OpenShift Service on AWS 集群安装在受限网络(也称为断开连接的集群)上,请指定在配置 Operator Lifecycle Manager (OLM)时创建的CatalogSource对象的名称。
  4. 运行以下命令应用Subscription 对象

    $ oc apply -f <filename>.yaml
  5. 为 Red Hat OpenShift Logging Operator 创建一个namespace 对象

    namespace 对象示例
    apiVersion: v1
    kind: Namespace
    metadata:
      name: openshift-logging (1)
      annotations:
        openshift.io/node-selector: ""
      labels:
        openshift.io/cluster-logging: "true"
        openshift.io/cluster-monitoring: "true" (2)
    1 Red Hat OpenShift Logging Operator 只能部署到openshift-logging命名空间。
    2 一个字符串值,指定如所示的标签,以确保集群监控抓取openshift-operators-redhat命名空间。
  6. 运行以下命令应用namespace 对象

    $ oc apply -f <filename>.yaml
  7. 创建一个OperatorGroup 对象

    OperatorGroup对象的示例
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: cluster-logging
      namespace: openshift-logging (1)
    spec:
      targetNamespaces:
      - openshift-logging
    1 您必须指定openshift-logging命名空间。
  8. 通过运行以下命令应用OperatorGroup对象:

    $ oc apply -f <filename>.yaml
  9. 创建一个Subscription 对象

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: cluster-logging
      namespace: openshift-logging (1)
    spec:
      channel: stable (2)
      name: cluster-logging
      source: redhat-operators (3)
      sourceNamespace: openshift-marketplace
    1 您必须指定openshift-logging命名空间。
    2 指定stablestable-5.<y>作为通道。
    3 指定redhat-operators。如果您的 Red Hat OpenShift Service on AWS 集群安装在受限网络(也称为断开连接的集群)上,请指定在配置 Operator Lifecycle Manager (OLM) 时创建的 CatalogSource 对象的名称。
  10. 运行以下命令应用Subscription 对象

    $ oc apply -f <filename>.yaml
  11. 创建一个LokiStack CR

    LokiStack CR 示例
    apiVersion: loki.grafana.com/v1
    kind: LokiStack
    metadata:
      name: logging-loki (1)
      namespace: openshift-logging (2)
    spec:
      size: 1x.small (3)
      storage:
        schemas:
        - version: v13
          effectiveDate: "<yyyy>-<mm>-<dd>"
        secret:
          name: logging-loki-s3 (4)
          type: s3 (5)
          credentialMode: (6)
      storageClassName: <storage_class_name> (7)
      tenants:
        mode: openshift-logging (8)
    1 使用名称logging-loki
    2 您必须指定openshift-logging命名空间。
    3 指定部署规模。在日志记录 5.8 和更高版本中,Loki 生产实例支持的规模选项为1x.extra-small1x.small1x.medium
    4 指定您的日志存储密钥的名称。
    5 指定相应的存储类型。
    6 可选字段,日志记录 5.9 及更高版本。支持用户配置的值如下:static是所有受支持的对象存储类型使用的默认身份验证模式,使用存储在 Secret 中的凭据。token用于从凭据源检索的短期令牌。在此模式下,静态配置不包含对象存储所需的凭据。相反,它们是在运行时使用服务生成的,这允许使用更短寿命的凭据和更细粒度的控制。此身份验证模式并非所有对象存储类型都支持。token-cco是 Loki 在托管 STS 模式下运行并在 STS/WIF 集群上使用 CCO 时的默认值。
    7 指定临时存储的存储类的名称。为了获得最佳性能,请指定分配块存储的存储类。可以使用oc get storageclasses命令列出集群可用的存储类。
    8 LokiStack 默认以多租户模式运行,无法修改。每个日志类型提供一个租户:审计日志、基础设施日志和应用程序日志。这允许对各个用户和用户组访问不同的日志流。
  12. 运行以下命令应用LokiStack CR 对象

    $ oc apply -f <filename>.yaml
  13. 创建一个ClusterLogging CR 对象

    ClusterLogging CR 对象示例
    apiVersion: logging.openshift.io/v1
    kind: ClusterLogging
    metadata:
      name: instance (1)
      namespace: openshift-logging (2)
    spec:
      collection:
        type: vector
      logStore:
        lokistack:
          name: logging-loki
        retentionPolicy:
          application:
            maxAge: 7d
          audit:
            maxAge: 7d
          infra:
            maxAge: 7d
        type: lokistack
      visualization:
        type: ocp-console
        ocpConsole:
          logsLimit: 15
      managementState: Managed
    1 名称必须为instance
    2 命名空间必须为openshift-logging
  14. 运行以下命令应用ClusterLogging CR 对象

    $ oc apply -f <filename>.yaml
  15. 运行以下命令验证安装

    $ oc get pods -n openshift-logging
    示例输出
    $ oc get pods -n openshift-logging
    NAME                                               READY   STATUS    RESTARTS   AGE
    cluster-logging-operator-fb7f7cf69-8jsbq           1/1     Running   0          98m
    collector-222js                                    2/2     Running   0          18m
    collector-g9ddv                                    2/2     Running   0          18m
    collector-hfqq8                                    2/2     Running   0          18m
    collector-sphwg                                    2/2     Running   0          18m
    collector-vv7zn                                    2/2     Running   0          18m
    collector-wk5zz                                    2/2     Running   0          18m
    logging-view-plugin-6f76fbb78f-n2n4n               1/1     Running   0          18m
    lokistack-sample-compactor-0                       1/1     Running   0          42m
    lokistack-sample-distributor-7d7688bcb9-dvcj8      1/1     Running   0          42m
    lokistack-sample-gateway-5f6c75f879-bl7k9          2/2     Running   0          42m
    lokistack-sample-gateway-5f6c75f879-xhq98          2/2     Running   0          42m
    lokistack-sample-index-gateway-0                   1/1     Running   0          42m
    lokistack-sample-ingester-0                        1/1     Running   0          42m
    lokistack-sample-querier-6b7b56bccc-2v9q4          1/1     Running   0          42m
    lokistack-sample-query-frontend-84fb57c578-gq2f7   1/1     Running   0          42m

使用 Web 控制台安装日志记录和 Loki Operator

要在您的 Red Hat OpenShift Service on AWS 集群上安装和配置日志记录,必须首先安装一个 Operator,例如用于日志存储的 Loki Operator。这可以通过 Web 控制台中的 OperatorHub 完成。

先决条件
  • 您可以访问受支持的对象存储(AWS S3、Google Cloud Storage、Azure、Swift、Minio、OpenShift Data Foundation)。

  • 您拥有管理员权限。

  • 您可以访问 Red Hat OpenShift Service on AWS Web 控制台。

步骤
  1. 在 Red Hat OpenShift Service on AWS Web 控制台的**管理员**视角中,转到**Operators** → **OperatorHub**。

  2. 在**按关键字筛选**字段中键入 Loki Operator。单击可用 Operators 列表中的**Loki Operator**,然后单击**Install**。

    Red Hat 不支持社区 Loki Operator。

  3. 选择**stable**或**stable-x.y**作为**更新通道**。

    **stable** 通道仅提供对最新日志记录版本的更新。要继续接收先前版本的更新,您必须将订阅通道更改为**stable-x.y**,其中 x.y 代表您已安装的日志记录的主版本和次版本。例如,**stable-5.7**。

    Loki Operator 必须部署到全局 Operator 组命名空间openshift-operators-redhat,因此**安装模式**和**已安装命名空间**已预先选择。如果此命名空间尚不存在,则会为您创建。

  4. 选择**在此命名空间上启用 Operator 建议的集群监控。**

    此选项在Namespace对象中设置openshift.io/cluster-monitoring: "true"标签。您必须选择此选项才能确保集群监控抓取openshift-operators-redhat命名空间。

  5. 对于**更新批准**,请选择**自动**,然后单击**安装**。

    如果订阅中的批准策略设置为**自动**,则一旦所选通道中出现新的 Operator 版本,更新过程就会立即启动。如果批准策略设置为**手动**,则必须手动批准待处理的更新。

  6. 安装 Red Hat OpenShift Logging Operator

    1. 在 Red Hat OpenShift Service on AWS Web 控制台中,单击**运算符** → **OperatorHub**。

    2. 从可用 Operators 列表中选择**Red Hat OpenShift Logging**,然后单击**Install**。

    3. 确保在安装模式下选择了集群上的特定命名空间

    4. 确保推荐的 Operator 命名空间已安装命名空间下为openshift-logging

    5. 选择**在此命名空间上启用运算符推荐的集群监控**。

      此选项在命名空间对象中设置openshift.io/cluster-monitoring: "true"标签。必须选择此选项才能确保集群监控抓取openshift-logging命名空间。

    6. 选择**stable-5.y**作为**更新通道**。

    7. 选择**审批策略**。

      • **自动**策略允许运算符生命周期管理器 (OLM) 在有新版本可用时自动更新运算符。

      • **手动**策略需要具有相应凭据的用户来批准运算符更新。

    8. 单击**安装**。

  7. 转到**Operators** → **已安装 Operators**页面。单击**所有实例**选项卡。

  8. 从**创建新的**下拉列表中,选择**LokiStack**。

  9. 选择**YAML 视图**,然后使用以下模板创建LokiStack CR

    LokiStack CR 示例
    apiVersion: loki.grafana.com/v1
    kind: LokiStack
    metadata:
      name: logging-loki (1)
      namespace: openshift-logging (2)
    spec:
      size: 1x.small (3)
      storage:
        schemas:
        - version: v13
          effectiveDate: "<yyyy>-<mm>-<dd>"
        secret:
          name: logging-loki-s3 (4)
          type: s3 (5)
          credentialMode: (6)
      storageClassName: <storage_class_name> (7)
      tenants:
        mode: openshift-logging (8)
    1 使用名称logging-loki
    2 您必须指定openshift-logging命名空间。
    3 指定部署规模。在日志记录 5.8 和更高版本中,Loki 生产实例支持的规模选项为1x.extra-small1x.small1x.medium
    4 指定您的日志存储密钥的名称。
    5 指定相应的存储类型。
    6 可选字段,日志记录 5.9 及更高版本。支持用户配置的值如下:static 是所有受支持的对象存储类型使用的默认身份验证模式,使用存储在 Secret 中的凭据。token 用于从凭据源检索的短期令牌。在此模式下,静态配置不包含对象存储所需的凭据。相反,它们是在运行时使用服务生成的,这允许使用更短寿命的凭据和更细粒度的控制。此身份验证模式并非所有对象存储类型都支持。token-cco 是 Loki 在托管 STS 模式下运行并在 STS/WIF 集群上使用 CCO 时的默认值。
    7 指定临时存储的存储类的名称。为了获得最佳性能,请指定分配块存储的存储类。可以使用oc get storageclasses命令列出集群可用的存储类。
    8 LokiStack 默认以多租户模式运行,无法修改。每个日志类型提供一个租户:审计日志、基础设施日志和应用程序日志。这允许对各个用户和用户组访问不同的日志流。

    无法更改部署规模的数字1x

  10. 单击**创建**。

  11. 创建 OpenShift Logging 实例

    1. 切换到AdministrationCustom Resource Definitions页面。

    2. Custom Resource Definitions页面上,点击ClusterLogging

    3. Custom Resource Definition details页面上,从Actions菜单中选择View Instances

    4. ClusterLoggings页面上,点击Create ClusterLogging

      您可能需要刷新页面才能加载数据。

    5. 在 YAML 字段中,将代码替换为以下内容

      apiVersion: logging.openshift.io/v1
      kind: ClusterLogging
      metadata:
        name: instance (1)
        namespace: openshift-logging (2)
      spec:
        collection:
          type: vector
        logStore:
          lokistack:
            name: logging-loki
          retentionPolicy:
            application:
              maxAge: 7d
            audit:
              maxAge: 7d
            infra:
              maxAge: 7d
          type: lokistack
        visualization:
          type: ocp-console
          ocpConsole:
            logsLimit: 15
        managementState: Managed
      1 名称必须为instance
      2 命名空间必须为openshift-logging
验证
  1. 转到**Operators** → **已安装 Operators**。

  2. 确保选择了**openshift-logging**项目。

  3. 在**状态**列中,验证您是否看到带有**InstallSucceeded**和文本**已更新**的绿色勾号。

在安装完成之前,Operator 可能显示失败状态。如果 Operator 安装完成并显示InstallSucceeded消息,请刷新页面。