在 OpenShift 4 上部署 ClusterLogging 运算符(Elasticsearch,Fluentd,Kibana,Curator)

这篇摘要

前一次,在AWS上安装了OpenShift 4,但这次我们要尝试安装OpenShift的日志聚合基础设施ClusterLogging,该基础设施在安装时并没有部署。

原本OpenShift是通过部署Elasticsearch,Fluentd和Kibana来收集和查看容器日志的。在OpenShift 3中,提供了通过Ansible安装计划的选项。但是在OpenShift 4.1中,改为通过ClusterLogging Operator进行安装计划的选择,因此我将记录下相关步骤作为备忘。

集群日志记录操作员概述

ClusterLogging Operator可以生成以下对象。

Curator の CronJob, ConfigMap

Fluentd の DaemonSet, Secret, ConfigMap, Service

Kibana の Deployment, Secret, Service, Route

Elasticsearch の Secret

Elasticsearch Operator の Custom Resource Object (Elasticsearch)

※ Elasticsearch Operator会生成服务、部署、配置映射等。

虽然我写了”诸如此类” ,但“Operator”就像另一个应用程序包一样,即使没有特别了解也可以进行安装。
即使在安装过程中出现问题,我认为只需通过监控各种Pod的启动,了解出现了什么问题并加以处理即可。

摘要工序

    • Elasticsearch Operator 用の Project (Namespace) を作成

 

    • Elasticsearch Operator 用に OperatorGroup を作成

 

    • Elasticsearch Operator を使えるようにするための CatalogSourceConfig を作成

 

    • Prometheus によるモニタリング用に Role と RoleBindings を作成

 

    • ClusterLogging がデプロイされるProject (Namespace) を作成

 

    • Web Console から ClusterLogging Operator を Install

 

    • Web Console から ClusterLogging Operator の Subscription を作成

 

    ClusterLogging オブジェクトを作成

剩下的工作都由 ClusterLogging 运算符完成,过一段时间后,可以通过 Kibana 访问并搜索 Fluentd 从容器收集并汇总到 Elasticsearch 中的日志。

请详细说明步骤。

提前准备

我会预先编写仅有K8s资源对象清单的manifest文件。
其内容与官方文档相同。

apiVersion: v1
kind: Namespace
metadata:
  # Namespace 名は固定で、これ以外にすることができないようです
  name: openshift-operators-redhat
  annotations:
    openshift.io/node-selector: ""
  labels:
    openshift.io/cluster-logging: "true"
    openshift.io/cluster-monitoring: "true"
---
apiVersion: v1
kind: Namespace
metadata:
  name: openshift-logging
  annotations:
    openshift.io/node-selector: ""
  labels:
    openshift.io/cluster-logging: "true"
    openshift.io/cluster-monitoring: "true"
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
  # 名前を変えられるのかは調べてないですが、このままのほうが後々良さそう
  name: openshift-operators-redhat
  # ここは固定で変更できないようです
  namespace: openshift-operators-redhat
spec: {}
apiVersion: "operators.coreos.com/v1"
kind: "CatalogSourceConfig"
metadata:
  name: "elasticsearch"
  namespace: "openshift-marketplace"
spec:
  targetNamespace: "openshift-operators-redhat"
  packages: "elasticsearch-operator"
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
apiVersion: "logging.openshift.io/v1"
kind: "ClusterLogging"
metadata:
  name: "instance"
  namespace: openshift-logging
spec:
  managementState: "Managed"
  logStore:
    type: "elasticsearch"
    elasticsearch:
      nodeCount: 2
      resources:
        limits:
          memory: 2Gi
        requests:
          cpu: 200m
          memory: 2Gi
      storage:
        storageClassName: "gp2"
        size: "200G"
      redundancyPolicy: "SingleRedundancy"
  visualization:
    type: "kibana"
    kibana:
      resources:
        limits:
          memory: 1Gi
        requests:
          cpu: 500m
          memory: 1Gi
      proxy:
        resources:
          limits:
            memory: 100Mi
          requests:
            cpu: 100m
            memory: 100Mi
      replicas: 2
  curation:
    type: "curator"
    curator:
      resources:
        limits:
          memory: 200Mi
        requests:
          cpu: 200m
          memory: 200Mi
      schedule: "*/10 * * * *"
  collection:
    logs:
      type: "fluentd"
      fluentd:
        resources:
          limits:
            memory: 1Gi
          requests:
            cpu: 200m
            memory: 1Gi

安装

部署已创建的清单(不包括 clusterlogging.yaml)。

oc apply -f eo-project.yaml
oc apply -f eo-og.yaml
oc apply -f eo-csc.yaml
oc apply -f eo-rbac.yaml

安装ClusterLogging Operator

在 OpenShift 的 Web 控制台上操作

从操作员中心选择集群日志(设置为选择OpenShift日志)。

image.png

选择安装

image.png

选择订阅

image.png

几十秒后,安装操作符将在已安装操作符中显示 Cluster Logging 的安装成功状态。

image.png

选择“创建新的”。

image.png

复制并粘贴”clusterlogging.yaml”的内容,然后选择”创建”。

image.png

直到所有的Pod都上线之前需要一些时间。

当您访问 https://kibana-openshift-logging.apps.YOURCLUSTERNAME.YOURDOMAIN/,您应该能够访问Kibana,并从那里查看存储在Elasticsearch中的日志。

引起关注的问题

类似集群日志运算符的订阅方式,我认为 Elasticsearch 运算符也需要进行订阅,但官方文档中似乎没有提到。
虽然提到了确认是否安装,但仅订阅 Elasticsearch 运算符并不会使其被订阅…(操作错误了吗?)

资料来源

    About cluster logging and OpenShift Container Platform
广告
将在 10 秒后关闭
bannerAds