搜索

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

download PDF

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

先决条件

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

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

流程

使用 CLI 安装 Elasticsearch Operator 和 Cluster Logging Operator。

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

    1. 为 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 不被信任,其发布的 metric 可能与 OpenShift Container Platform metric 的名称相同,从而导致冲突。
      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. 通过创建以下对象来安装 Elasticsearch Operator:

    1. 为 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)来订阅 Elasticsearch Operator 的命名空间。

      订阅示例

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

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

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

      例如:

      $ oc create -f eo-sub.yaml

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

    5. 验证 Operator 安装:

      oc get csv --all-namespaces
      
      NAMESPACE                                               NAME                                         DISPLAY                  VERSION               REPLACES   PHASE
      default                                                 elasticsearch-operator.4.4.0-202004222248    Elasticsearch Operator   4.4.0-202004222248               Succeeded
      kube-node-lease                                         elasticsearch-operator.4.4.0-202004222248    Elasticsearch Operator   4.4.0-202004222248               Succeeded
      kube-public                                             elasticsearch-operator.4.4.0-202004222248    Elasticsearch Operator   4.4.0-202004222248               Succeeded
      kube-system                                             elasticsearch-operator.4.4.0-202004222248    Elasticsearch Operator   4.4.0-202004222248               Succeeded
      openshift-apiserver-operator                            elasticsearch-operator.4.4.0-202004222248    Elasticsearch Operator   4.4.0-202004222248               Succeeded
      openshift-apiserver                                     elasticsearch-operator.4.4.0-202004222248    Elasticsearch Operator   4.4.0-202004222248               Succeeded
      openshift-authentication-operator                       elasticsearch-operator.4.4.0-202004222248    Elasticsearch Operator   4.4.0-202004222248               Succeeded
      openshift-authentication                                elasticsearch-operator.4.4.0-202004222248    Elasticsearch Operator   4.4.0-202004222248               Succeeded
      ...

      每个命名空间中都应该有一个 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
      spec:
        channel: "4.4"
        name: cluster-logging
        source: redhat-operators
        sourceNamespace: openshift-marketplace
      您必须指定 openshift-logging 命名空间。
      指定 4.4 作为频道。
      指定 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.4.0-202004222248            Cluster Logging          4.4.0-202004222248              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
          elasticsearch:
            nodeCount: 3 4
            storage:
              storageClassName: "<storage-class-name>" 5
              size: 200G
            redundancyPolicy: "SingleRedundancy"
        visualization:
          type: "kibana"  6
          kibana:
            replicas: 1
        curation:
          type: "curator"  7
          curator:
            schedule: "30 3 * * *"
        collection:
          logs:
            type: "fluentd"  8
            fluentd: {}
      1
      名称必须是 instance
      2
      集群日志记录管理状态。在大多数情况下,如果更改了集群日志记录的默认值,则必须将其设置为 Unmanaged。但是,在 Cluster Logging 返回到 Managed 状态前,非受管部署不接收更新。
      3
      用于配置 Elasticsearch 的设置。通过使用子定义资源(CR),您可以配置分片复制策略和持久性存储。
      4
      指定 Elasticsearch 节点的数量。请参阅此列表后面的备注。
      5
      为 Elasticsearch 存储输入现有 StorageClass 的名称。为获得最佳性能,请指定分配块存储的 StorageClass。如果没有指定 StorageClass,OpenShift Container Platform 只会使用临时存储部署集群日志记录。
      6
      用于配置 Kibana 的设置。通过使用 CR,您可以扩展 Kibana 来实现冗余性,并为 Kibana 节点配置 CPU 和内存。如需更多信息,请参阅配置 Kibana
      7
      用于配置 Curator 的设置。通过使用 CR,您可以设置 Curator 调度。如需更多信息,请参阅配置 Curator
      8
      用于配置 Fluentd 的设置。通过使用 CR,您可以配置 Fluentd CPU 和内存限值。如需更多信息,请参阅配置 Fluentd
      注意

      Elasticsearch master 节点的最大数量为三个。如果您将 nodeCount 指定为大于 3,OpenShift Container Platform 只会创建三个符合 Master 节点条件的 Elasticsearch 节点(具有 master、client 和 data 角色)。其余 Elasticsearch 节点创建为“仅数据”节点,使用 client 和 data 角色。Master 节点执行集群范围的操作,如创建或删除索引、分配分片和跟踪节点等。数据节点保管分片,并执行与数据相关的操作,如 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
  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.