第 3 章 部署集群日志记录

您可以通过部署 Elasticsearch 和 Cluster Logging Operator 来安装集群日志记录。Elasticsearch Operator 负责创建并管理由集群日志记录使用的 Elasticsearch 集群。Cluster Logging Operator 负责创建并管理日志记录堆栈的组件。

将集群日志记录部署到 OpenShift Container Platform 的过程涉及以下任务:

3.1. 使用 CLI 安装 Elasticsearch Operator

必须按照以下说明来使用 CLI 安装 Elasticsearch Operator。

先决条件

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

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

流程

使用 CLI 安装 Elasticsearch 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. 通过创建以下对象来安装 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)来订阅 Operator 的命名空间。

      订阅示例

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

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

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

      例如:

      $ oc create -f eo-sub.yaml
    5. 更改到 openshift-operators-redhat 项目:

      $ oc project openshift-operators-redhat
      
      Now using project "openshift-operators-redhat"
    6. 创建基于角色的访问控制 (RBAC) 对象文件(例如 eo-rbac.yaml),向 Prometheus 授予 openshift-operators-redhat 命名空间的访问权限:

      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:
        name: prometheus-k8s
        namespace: openshift-operators-redhat
      rules:
      - apiGroups:
        - ""
        resources:
        - services
        - endpoints
        - pods
        verbs:
        - get
        - list
        - watch
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        name: prometheus-k8s
        namespace: openshift-operators-redhat
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: Role
        name: prometheus-k8s
      subjects:
      - kind: ServiceAccount
        name: prometheus-k8s
        namespace: openshift-operators-redhat
    7. 创建 RBAC 对象:

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

      例如:

      $ oc create -f eo-rbac.yaml

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

  3. 验证 Operator 安装:

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

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

后续步骤

使用控制台或 CLI 安装 Cluster Logging Operator。