搜索

2.3. 使用 CLI 安装集群日志记录

download PDF

您可以使用 OpenShift Container Platform CLI 安装 OpenShift Elasticsearch Operator 和 Cluster Logging Operator。

先决条件

  • 确保具有 Elasticsearch 所需的持久性存储。注意每个 Elasticsearch 节点都需要自己的存储卷。

    注意

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

    Elasticsearch 是内存密集型应用程序。默认情况下,OpenShift Container Platform 安装 3 个 Elasticsearch 节点,其内存请求和限制为 16 GB。初始设置的三个 OpenShift Container Platform 节点可能没有足够的内存在集群中运行 Elasticsearch。如果遇到与 Elasticsearch 相关的内存问题,在集群中添加更多 Elasticsearch 节点,而不是增加现有节点上的内存。

流程

使用 CLI 安装 OpenShift Elasticsearch Operator 和 Cluster Logging Operator:

  1. 为 OpenShift Elasticsearch Operator 创建命名空间。

    1. 为 OpenShift Elasticsearch Operator 创建一个命名空间对象 YAML 文件(例如 eo-namespace.yaml):

      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 命名空间。为了防止可能与指标(metrics)冲突,您应该将 Prometheus Cluster Monitoring 堆栈配置为从 openshift-operators-redhat 命名空间中提取指标数据,而不是从 openshift-operators 命名空间中提取。openshift-operators 命名空间可能包含社区 Operator,这些 Operator 不被信任,并可能会发布与 OpenShift Container Platform 指标相同的名称,从而导致冲突。
      2
      字符串。您必须按照所示指定该标签,以确保集群监控提取 openshift-operators-redhat 命名空间。
    2. 创建命名空间:

      $ oc create -f <file-name>.yaml

      例如:

      $ oc create -f eo-namespace.yaml
  2. 为 Cluster Logging Operator 创建命名空间:

    1. 为 Cluster Logging Operator 创建一个命名空间对象 YAML 文件(如 clo-namespace.yaml):

      apiVersion: v1
      kind: Namespace
      metadata:
        name: openshift-logging
        annotations:
          openshift.io/node-selector: ""
        labels:
          openshift.io/cluster-monitoring: "true"
    2. 创建命名空间:

      $ oc create -f <file-name>.yaml

      例如:

      $ oc create -f clo-namespace.yaml
  3. 通过创建以下对象来安装 OpenShift Elasticsearch Operator:

    1. 为 OpenShift Elasticsearch Operator 创建 Operator Group 对象 YAML 文件(例如 eo-og.yaml):

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: openshift-operators-redhat
        namespace: openshift-operators-redhat 1
      spec: {}
      1
      您必须指定 openshift-operators-redhat 命名空间。
    2. 创建 Operator Group 对象:

      $ oc create -f <file-name>.yaml

      例如:

      $ oc create -f eo-og.yaml
    3. 创建一个 Subscription 对象 YAML 文件(例如 eo-sub.yaml)来订阅 OpenShift Elasticsearch Operator 的命名空间。

      订阅示例

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: "elasticsearch-operator"
        namespace: "openshift-operators-redhat" 1
      spec:
        channel: "4.6" 2
        installPlanApproval: "Automatic"
        source: "redhat-operators" 3
        sourceNamespace: "openshift-marketplace"
        name: "elasticsearch-operator"

      1
      您必须指定 openshift-operators-redhat 命名空间。
      2
      指定 4.6 作为频道。
      3
      指定 redhat-operators。如果 OpenShift Container Platform 集群安装在受限网络中(也称为断开连接的集群),请指定配置 Operator Lifecycle Manager (OLM) 时创建的 CatalogSource 对象的名称。
    4. 创建订阅对象:

      $ oc create -f <file-name>.yaml

      例如:

      $ oc create -f eo-sub.yaml

      OpenShift Elasticsearch Operator 已安装到 openshift-operators-redhat 命名空间,并复制到集群中的每个项目。

    5. 验证 Operator 安装:

      $ oc get csv --all-namespaces

      输出示例

      NAMESPACE                                               NAME                                            DISPLAY                  VERSION               REPLACES   PHASE
      default                                                 elasticsearch-operator.4.6.0-202007012112.p0    Elasticsearch Operator   4.6.0-202007012112.p0               Succeeded
      kube-node-lease                                         elasticsearch-operator.4.6.0-202007012112.p0    Elasticsearch Operator   4.6.0-202007012112.p0               Succeeded
      kube-public                                             elasticsearch-operator.4.6.0-202007012112.p0    Elasticsearch Operator   4.6.0-202007012112.p0               Succeeded
      kube-system                                             elasticsearch-operator.4.6.0-202007012112.p0    Elasticsearch Operator   4.6.0-202007012112.p0               Succeeded
      openshift-apiserver-operator                            elasticsearch-operator.4.6.0-202007012112.p0    Elasticsearch Operator   4.6.0-202007012112.p0               Succeeded
      openshift-apiserver                                     elasticsearch-operator.4.6.0-202007012112.p0    Elasticsearch Operator   4.6.0-202007012112.p0               Succeeded
      openshift-authentication-operator                       elasticsearch-operator.4.6.0-202007012112.p0    Elasticsearch Operator   4.6.0-202007012112.p0               Succeeded
      openshift-authentication                                elasticsearch-operator.4.6.0-202007012112.p0    Elasticsearch Operator   4.6.0-202007012112.p0               Succeeded
      ...

      每个命名空间中都应该有一个 OpenShift Elasticsearch Operator。版本号可能与所示不同。

  4. 通过创建以下对象来安装 Cluster Logging Operator:

    1. 为 Cluster Logging Operator 创建一个 OperatorGroup 对象 YAML 文件(例如,clo-og.yaml):

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: cluster-logging
        namespace: openshift-logging 1
      spec:
        targetNamespaces:
        - openshift-logging 2
      1 2
      您必须指定 openshift-logging 命名空间。
    2. 创建 OperatorGroup 对象:

      $ oc create -f <file-name>.yaml

      例如:

      $ oc create -f clo-og.yaml
    3. 创建一个 Subscription 对象 YAML 文件(如 clo-sub.yaml)来为 Cluster Logging Operator 订阅命名空间。

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: cluster-logging
        namespace: openshift-logging 1
      spec:
        channel: "4.6" 2
        name: cluster-logging
        source: redhat-operators 3
        sourceNamespace: openshift-marketplace
      1
      您必须指定 openshift-logging 命名空间。
      2
      指定 4.6 作为频道。
      3
      指定 redhat-operators。如果 OpenShift Container Platform 集群安装在受限网络中(也称为断开连接的集群),请指定配置 Operator Lifecycle Manager (OLM) 时创建的 CatalogSource 对象的名称。
    4. 创建订阅对象:

      $ oc create -f <file-name>.yaml

      例如:

      $ oc create -f clo-sub.yaml

      Cluster Logging Operator 已安装到 openshift-logging 命名空间。

    5. 验证 Operator 安装:

      openshift-logging 命名空间中应该有一个 Cluster Logging Operator。版本号可能与所示不同。

      $ oc get csv -n openshift-logging

      输出示例

      NAMESPACE                                               NAME                                         DISPLAY                  VERSION               REPLACES   PHASE
      ...
      openshift-logging                                       clusterlogging.4.6.0-202007012112.p0         Cluster Logging          4.6.0-202007012112.p0              Succeeded
      ...

  5. 创建集群日志记录(Cluster Logging)实例:

    1. 为 Cluster Logging Operator 创建实例对象 YAML 文件(如 clo-instance.yaml):

      注意

      此默认集群日志记录配置应该可以支持不同的环境。请参考有关调优和配置集群日志记录组件的主题,以了解有关可对集群日志记录集群进行修改的信息。

      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
        curation:
          type: "curator"
          curator:
            schedule: "30 3 * * *" 10
        collection:
          logs:
            type: "fluentd"  11
            fluentd: {}
      1
      名称必须是 instance
      2
      集群日志记录管理状态。在一些数情况下,如果更改了集群日志记录的默认值,则必须将其设置为 Unmanaged。但是,非受管部署不接收更新,直到集群日志记录重新变为受管状态为止。将部署重新置于受管状态可能会使您所做的任何修改被恢复。
      3
      用于配置 Elasticsearch 的设置。通过使用子定义资源(CR),您可以配置分片复制策略和持久性存储。
      4
      指定 Elasticsearch 应该保留每个日志源的时间长度。输入一个整数和时间单位: 周(w)、小时(h/H)、分钟(m)和秒。例如,7d 代表 7 天。时间超过 maxAge 的旧日志会被删除。您必须为每个日志源指定一个保留策略,否则不会为该源创建 Elasticsearch 索引。
      5
      指定 Elasticsearch 节点的数量。请参阅此列表后面的备注。
      6
      为 Elasticsearch 存储输入现有存储类的名称。为获得最佳性能,请指定分配块存储的存储类。如果没有指定存储类,OpenShift Container Platform 只会使用临时存储部署 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 Pod 配置 CPU 和内存。如需更多信息,请参阅配置日志可视化工具
      10
      配置 Curator 计划Curator 用于移除 OpenShift Container Platform 4.5 之前的 Elasticsearch 索引格式的数据,它将在以后的版本中删除。
      11
      用于配置 Fluentd 的设置。通过使用 CR,您可以配置 Fluentd CPU 和内存限值。如需更多信息,请参阅配置 Fluentd
      注意

      Elasticsearch control plane 节点的最大数量为三个。如果您将 nodeCount 指定为大于 3,OpenShift Container Platform 只会创建三个符合 Master 节点条件的 Elasticsearch 节点(具有 master、client 和 data 角色)。其余 Elasticsearch 节点创建为“仅数据”节点,使用 client 和 data 角色。control plane 节点执行集群范围的操作,如创建或删除索引、分片分配和跟踪节点。数据节点保管分片,并执行与数据相关的操作,如 CRUD、搜索和聚合等。与数据相关的操作会占用大量 I/O、内存和 CPU。务必要监控这些资源,并在当前节点过载时添加更多数据节点。

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

      $ oc get deployment

      输出示例

      cluster-logging-operator       1/1     1            1           18h
      elasticsearch-cd-x6kdekli-1    1/1     1            0           6m54s
      elasticsearch-cdm-x6kdekli-1   1/1     1            1           18h
      elasticsearch-cdm-x6kdekli-2   1/1     1            0           6m49s
      elasticsearch-cdm-x6kdekli-3   1/1     1            0           6m44s

      索引模板的主分片数量等于 Elasticsearch 数据节点的数目。

    2. 创建实例:

      $ oc create -f <file-name>.yaml

      例如:

      $ oc create -f clo-instance.yaml

      这将创建集群日志记录组件、Elasticsearch 自定义资源和组件以及 Kibana 接口。

  6. 通过列出 openshift-logging 项目中的 pod 来验证安装。

    您应该会看到几个用于 Cluster Logging、Elasticsearch、Fluentd 和 Kibana 的 pod,类似于以下内容:

    $ 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
    fluentd-587vb                                   1/1     Running   0          2m26s
    fluentd-7mpb9                                   1/1     Running   0          2m30s
    fluentd-flm6j                                   1/1     Running   0          2m33s
    fluentd-gn4rn                                   1/1     Running   0          2m26s
    fluentd-nlgb6                                   1/1     Running   0          2m30s
    fluentd-snpkt                                   1/1     Running   0          2m28s
    kibana-d6d5668c5-rppqm                          2/2     Running   0          2m39s

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.