3.4. 管理日志记录部署


3.4.1. 使用 Web 控制台部署 Red Hat OpenShift Logging Operator

您可以使用 OpenShift Container Platform Web 控制台来部署 Red Hat OpenShift Logging Operator。

先决条件

Red Hat OpenShift 的日志记录子系统作为一个可安装的组件提供,它与核心 OpenShift Container Platform 不同的发行周期不同。Red Hat OpenShift Container Platform 生命周期政策概述了发行版本兼容性。

流程

使用 OpenShift Container Platform Web 控制台部署 Red Hat OpenShift Logging Operator:

  1. 安装 Red Hat OpenShift Logging Operator:

    1. 在 OpenShift Container Platform Web 控制台中,点击 Operators OperatorHub
    2. Filter by keyword 字段中输入 Logging
    3. 从可用的 Operator 列表中选择 Red Hat OpenShift Logging,然后点 Install
    4. 选择 stablestable-5.y 作为 更新频道

      注意

      stable 频道只为日志记录的最新版本提供更新。要继续获得之前版本的更新,您必须将订阅频道改为 stable-X,其中 X 是您安装的日志记录版本。

    5. 确保在 Installation Mode 下选择了 A specific namespace on the cluster
    6. 确定在 Installed Namespace 下的 Operator recommended namespaceopenshift-logging
    7. 选择 Enable Operator recommended cluster monitoring on this Namespace
    8. Update approval 选择一个选项。

      • Automatic 选项允许 Operator Lifecycle Manager (OLM) 在有新版本可用时自动更新 Operator。
      • Manual 选项需要具有适当凭证的用户批准 Operator 更新。
    9. 为 Console 插件选择 EnableDisable
    10. Install
  2. 通过切换到 Operators Installed Operators 页来验证 Red Hat OpenShift Logging Operator 是否已安装。

    1. 确保 openshift-logging 项目中列出的 Red Hat OpenShift LoggingStatusInstallSucceeded
  3. 创建 ClusterLogging 实例。

    注意

    Web 控制台的表单视图不包括所有可用的选项。建议您使用 YAML 视图 来完成您的设置。

    1. collection 部分中,选择一个 Collector Implementation。

      注意

      从日志记录版本 5.6 Fluentd 开始,计划在以后的发行版本中删除。红帽将在当前发行生命周期中提供对这个功能的程序漏洞修复和支持,但这个功能将不再获得改进,并将被删除。作为 Fluentd 的替代选择,您可以使用 Vector。

    2. logStore 部分中,选择一个类型。

      注意

      从日志记录版本 5.4.3 开始,Elasticsearch Operator 已被弃用,计划在以后的发行版本中删除。红帽将在当前发行生命周期中提供对这个功能的程序漏洞修复和支持,但这个功能将不再获得改进,并将被删除。作为使用 Elasticsearch Operator 管理默认日志存储的替代选择,您可以使用 Loki Operator。

    3. Create

3.4.2. 使用 Web 控制台部署 Loki Operator

您可以使用 OpenShift Container Platform Web 控制台安装 Loki Operator。

先决条件

  • 支持的日志存储(AWS S3、Google Cloud Storage、Azure、Swift、Minio、OpenShift Data Foundation)

流程

使用 OpenShift Container Platform Web 控制台安装 Loki Operator:

  1. 在 OpenShift Container Platform Web 控制台中,点击 Operators OperatorHub
  2. Filter by keyword 字段中输入 Loki

    1. 从可用的 Operator 列表中选择 Loki Operator,然后点 Install
  3. 选择 stablestable-5.y 作为 更新频道

    注意

    stable 频道只为日志记录的最新版本提供更新。要继续获得之前版本的更新,您必须将订阅频道改为 stable-X,其中 X 是您安装的日志记录版本。

  4. 确保在 Installation Mode 下选择了 All namespaces on the cluster
  5. 确定在 Installed Namespace 下选择了 openshift-operators-redhat
  6. 选择 Enable Operator recommended cluster monitoring on this Namespace

    这个选项在 Namespace 对象中设置 openshift.io/cluster-monitoring: "true" 标识。您必须设置这个选项,以确保集群监控提取 openshift-operators-redhat 命名空间。

  7. Update approval 选择一个选项。

    • Automatic 选项允许 Operator Lifecycle Manager (OLM) 在有新版本可用时自动更新 Operator。
    • Manual 选项需要具有适当凭证的用户批准 Operator 更新。
  8. Install
  9. 通过切换到 Operators Installed Operators 页来验证 LokiOperator 已被安装。

    1. 确定在所有项目中,列出的 LokiOperatorStatusSucceeded
  10. 创建一个 Secret YAML 文件,它使用 access_key_idaccess_key_secret 字段指定您的凭证和 bucketnamesendpointregion 来定义对象存储位置。AWS 在以下示例中使用:

    apiVersion: v1
    kind: Secret
    metadata:
      name: logging-loki-s3
      namespace: openshift-logging
    stringData:
      access_key_id: AKIAIOSFODNN7EXAMPLE
      access_key_secret: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
      bucketnames: s3-bucket-name
      endpoint: https://s3.eu-central-1.amazonaws.com
      region: eu-central-1
  11. Details 选项卡中,选择 LokiStack 下的 Create instance。然后选择 YAML 视图。粘贴以下模板,根据实际情况替换相关的值。

      apiVersion: loki.grafana.com/v1
      kind: LokiStack
      metadata:
        name: logging-loki 1
        namespace: openshift-logging
      spec:
        size: 1x.small 2
        storage:
          schemas:
          - version: v12
            effectiveDate: '2022-06-01'
          secret:
            name: logging-loki-s3 3
            type: s3 4
        storageClassName: <storage_class_name> 5
        tenants:
          mode: openshift-logging
    1
    名称应该是 logging-loki
    2
    选择您的 Loki 部署大小。
    3
    定义用于日志存储的 secret。
    4
    定义对应的存储类型。
    5
    为临时存储输入现有存储类的名称。为获得最佳性能,请指定分配块存储的存储类。可以使用 oc get storageclasses 列出集群的可用存储类。
    1. 应用配置:

      oc apply -f logging-loki.yaml
  12. 创建或编辑 ClusterLogging CR:

      apiVersion: logging.openshift.io/v1
      kind: ClusterLogging
      metadata:
        name: instance
        namespace: openshift-logging
      spec:
        managementState: Managed
        logStore:
          type: lokistack
          lokistack:
            name: logging-loki
          collection:
            type: vector
    1. 应用配置:

      oc apply -f cr-lokistack.yaml

3.4.3. 使用 CLI 从 OperatorHub 安装

您可以使用 CLI 从 OperatorHub 安装 Operator,而不必使用 OpenShift Container Platform Web 控制台。使用 oc 命令来创建或更新一个订阅对象。

先决条件

  • 使用具有 cluster-admin 权限的账户访问 OpenShift Container Platform 集群。
  • 在您的本地系统安装 oc 命令。

流程

  1. 查看 OperatorHub 中集群可用的 Operator 列表:

    $ oc get packagemanifests -n openshift-marketplace

    输出示例

    NAME                               CATALOG               AGE
    3scale-operator                    Red Hat Operators     91m
    advanced-cluster-management        Red Hat Operators     91m
    amq7-cert-manager                  Red Hat Operators     91m
    ...
    couchbase-enterprise-certified     Certified Operators   91m
    crunchy-postgres-operator          Certified Operators   91m
    mongodb-enterprise                 Certified Operators   91m
    ...
    etcd                               Community Operators   91m
    jaeger                             Community Operators   91m
    kubefed                            Community Operators   91m
    ...

    记录下所需 Operator 的目录。

  2. 检查所需 Operator,以验证其支持的安装模式和可用频道:

    $ oc describe packagemanifests <operator_name> -n openshift-marketplace
  3. 一个 Operator 组(由 OperatorGroup 对象定义),在其中选择目标命名空间,在其中为与 Operator 组相同的命名空间中的所有 Operator 生成所需的 RBAC 访问权限。

    订阅 Operator 的命名空间必须具有与 Operator 的安装模式相匹配的 Operator 组,可采用 AllNamespaces 模式,也可采用 SingleNamespace 模式。如果您要使用 AllNamespaces 安装 Operator,则 openshift-operators 命名空间已有适当的 Operator 组。

    如果要安装的 Operator 采用 SingleNamespace 模式,而您没有适当的 Operator 组,则必须创建一个。

    注意

    在选择 SingleNamespace 模式时,该流程的 Web 控制台版本会在后台自动为您处理 OperatorGroupSubscription 对象的创建。

    1. 创建 OperatorGroup 对象 YAML 文件,如 operatorgroup.yaml

      OperatorGroup 对象示例

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: <operatorgroup_name>
        namespace: <namespace>
      spec:
        targetNamespaces:
        - <namespace>

    2. 创建 OperatorGroup 对象:

      $ oc apply -f operatorgroup.yaml
  4. 创建一个 Subscription 对象 YAML 文件,以便为 Operator 订阅一个命名空间,如 sub.yaml

    Subscription 对象示例

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: <subscription_name>
      namespace: openshift-operators 1
    spec:
      channel: <channel_name> 2
      name: <operator_name> 3
      source: redhat-operators 4
      sourceNamespace: openshift-marketplace 5
      config:
        env: 6
        - name: ARGS
          value: "-v=10"
        envFrom: 7
        - secretRef:
            name: license-secret
        volumes: 8
        - name: <volume_name>
          configMap:
            name: <configmap_name>
        volumeMounts: 9
        - mountPath: <directory_name>
          name: <volume_name>
        tolerations: 10
        - operator: "Exists"
        resources: 11
          requests:
            memory: "64Mi"
            cpu: "250m"
          limits:
            memory: "128Mi"
            cpu: "500m"
        nodeSelector: 12
          foo: bar

    1
    对于 AllNamespaces 安装模式的使用,指定 openshift-operators 命名空间。否则,为 SingleNamespace 安装模式使用指定相关单一命名空间。
    2
    要订阅的频道的名称。
    3
    要订阅的 Operator 的名称。
    4
    提供 Operator 的目录源的名称。
    5
    目录源的命名空间。将 openshift-marketplace 用于默认的 OperatorHub 目录源。
    6
    env 参数定义必须存在于由 OLM 创建的 pod 中所有容器中的环境变量列表。
    7
    envFrom 参数定义要在容器中填充环境变量的源列表。
    8
    volumes 参数定义 OLM 创建的 pod 上必须存在的卷列表。
    9
    volumeMounts 参数定义由 OLM 创建的 pod 中必须存在的 VolumeMounts 列表。如果 volumeMount 引用不存在的 ,OLM 无法部署 Operator。
    10
    tolerations 参数为 OLM 创建的 pod 定义 Tolerations 列表。
    11
    resources 参数为 OLM 创建的 pod 中所有容器定义资源限制。
    12
    nodeSelector 参数为 OLM 创建的 pod 定义 NodeSelector
  5. 创建 Subscription 对象:

    $ oc apply -f sub.yaml

    此时,OLM 已了解所选的 Operator。Operator 的集群服务版本(CSV)应出现在目标命名空间中,由 Operator 提供的 API 应可用于创建。

3.4.4. 使用 Web 控制台从集群中删除 Operator

集群管理员可以使用 Web 控制台从所选命名空间中删除已安装的 Operator。

先决条件

  • 使用具有 cluster-admin 权限的账户访问 OpenShift Container Platform 集群 Web 控制台。

流程

  1. 进入到 Operators Installed Operators 页面。
  2. Filter by name 字段中滚动或输入关键字以查找您要删除的 Operator。然后点它。
  3. Operator Details 页面右侧,从 Actions 列表中选择 Uninstall Operator

    此时会显示 Uninstall Operator? 对话框。

  4. 选择 Uninstall 来删除 Operator、Operator 部署和 pod。按照此操作,Operator 将停止运行,不再接收更新。

    注意

    此操作不会删除 Operator 管理的资源,包括自定义资源定义 (CRD) 和自定义资源 (CR) 。Web 控制台和继续运行的集群资源启用的仪表板和导航项可能需要手动清理。要在卸载 Operator 后删除这些,您可能需要手动删除 Operator CRD。

3.4.5. 使用 CLI 从集群中删除 Operator

集群管理员可以使用 CLI 从所选命名空间中删除已安装的 Operator。

先决条件

  • 使用具有 cluster-admin 权限的账户访问 OpenShift Container Platform 集群。
  • 已在工作站上安装 oc 命令。

流程

  1. 通过 currentCSV 字段检查已订阅 Operator 的当前版本(如 jaeger):

    $ oc get subscription jaeger -n openshift-operators -o yaml | grep currentCSV

    输出示例

      currentCSV: jaeger-operator.v1.8.2

  2. 删除订阅(如 jaeger):

    $ oc delete subscription jaeger -n openshift-operators

    输出示例

    subscription.operators.coreos.com "jaeger" deleted

  3. 使用上一步中的 currentCSV 值来删除目标命名空间中相应 Operator 的 CSV:

    $ oc delete clusterserviceversion jaeger-operator.v1.8.2 -n openshift-operators

    输出示例

    clusterserviceversion.operators.coreos.com "jaeger-operator.v1.8.2" deleted

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.