3.2. 安装 Loki Operator


Loki Operator 版本 5.7+ 是 Network Observabilty 支持的 Loki Operator 版本。这些版本提供了使用 openshift-network 租户配置模式创建 LokiStack 实例的功能,并为 Network Observability 提供完全自动的、集群内身份验证和授权支持。您可以通过几种方法安装 Loki。其中一种方法是使用 OpenShift Container Platform Web 控制台 Operator Hub。

先决条件

  • 支持的日志存储(AWS S3、Google Cloud Storage、Azure、Swift、Minio、OpenShift Data Foundation)
  • OpenShift Container Platform 4.10+
  • Linux Kernel 4.18+

流程

  1. 在 OpenShift Container Platform Web 控制台中,点击 Operators OperatorHub
  2. 从可用的 Operator 列表中选择 Loki Operator,然后点 Install
  3. Installation Mode 下,选择 All namespaces on the cluster

验证

  1. 验证您安装了 Loki Operator。访问 Operators Installed Operators 页面,并查找 Loki Operator
  2. 验证 Loki Operator 是否在所有项目中 StatusSucceeded
重要

要卸载 Loki,请参考与用来安装 Loki 的方法相关的卸载过程。您可能会有剩余的 ClusterRoleClusterRoleBindings、存储在对象存储中的数据,以及需要被删除的持久性卷。

3.2.1. 为 Loki 存储创建 secret

Loki Operator 支持几个日志存储选项,如 AWS S3、Google Cloud Storage、Azure、Swift、Minio、OpenShift Data Foundation。以下示例演示了如何为 AWS S3 存储创建 secret。本例中创建的 secret loki-s3 在"Creating a LokiStack resource"中引用。您可以通过 web 控制台或 CLI 中创建此 secret。

  1. 使用 Web 控制台,进入到 Project All Projects 下拉菜单,再选择 Create Project。将项目命名为 netobserv,再点 Create
  2. 使用右上角的 Import 图标 +。将 YAML 文件粘贴到编辑器中。

    下面显示了一个 S3 存储的 secret YAML 文件示例:

    apiVersion: v1
    kind: Secret
    metadata:
      name: loki-s3
      namespace: netobserv   1
    stringData:
      access_key_id: QUtJQUlPU0ZPRE5ON0VYQU1QTEUK
      access_key_secret: d0phbHJYVXRuRkVNSS9LN01ERU5HL2JQeFJmaUNZRVhBTVBMRUtFWQo=
      bucketnames: s3-bucket-name
      endpoint: https://s3.eu-central-1.amazonaws.com
      region: eu-central-1
    1
    本文档中的安装示例在所有组件中使用相同的命名空间 netobserv。您可以选择将不同的命名空间用于不同的组件

验证

  • 创建 secret 后,您应该会在 web 控制台的 Workloads Secrets 下看到它。

3.2.2. 创建 LokiStack 自定义资源

您可以使用 Web 控制台或 CLI 部署 LokiStack 以创建命名空间或新项目。

重要

cluster-admin 用户身份查询多个命名空间的应用程序日志,其中集群中所有命名空间的字符总和大于 5120,会导致错误 Parse error: input size too long (XXXX > 5120)。为了更好地控制 LokiStack 中日志的访问,请使 cluster-admin 用户成为 cluster-admin 组的成员。如果 cluster-admin 组不存在,请创建它并将所需的用户添加到其中。

有关创建 cluster-admin 组的更多信息,请参阅"添加资源"部分。

流程

  1. 进入到 Operators Installed Operators,从 Project 下拉菜单查看 All projects
  2. 查找 Loki Operator。在详情的 Provided APIs 下,选择 LokiStack
  3. Create LokiStack
  4. 确保在 Form ViewYAML 视图中指定以下字段:

    apiVersion: loki.grafana.com/v1
    kind: LokiStack
    metadata:
      name: loki
      namespace: netobserv   1
    spec:
      size: 1x.small
      storage:
        schemas:
        - version: v12
          effectiveDate: '2022-06-01'
        secret:
          name: loki-s3
          type: s3
      storageClassName: gp3  2
      tenants:
        mode: openshift-network
    1
    本文档中的安装示例在所有组件中使用相同的命名空间 netobserv。您可以选择使用不同的命名空间。
    2
    使用集群中可用于 ReadWriteOnce 访问模式的存储类名称。您可以使用 oc get storageclasses 查看集群中的可用内容。
    重要

    您不能重复使用用于集群日志记录的相同 LokiStack

  5. Create

3.2.2.1. 部署大小

Loki 的大小使用 N<x>.<size> 格式,其中值 <N> 是实例的号,<size> 指定性能能力。

注意

1x.extra-small 仅用于演示目录,它不被支持。

表 3.2. Loki 大小
 1x.extra-small1x.small1x.medium

数据传输

仅用于演示。

500GB/day

2TB/day

每秒查询数 (QPS)

仅用于演示。

25-50 QPS at 200ms

25-75 QPS at 200ms

复制因子

2

3

总 CPU 请求

5 个 vCPU

36 个 vCPU

54 个 vCPU

总内存请求

7.5Gi

63Gi

139Gi

总磁盘请求

150Gi

300Gi

450Gi

3.2.3. LokiStack ingestion 限制和健康警报

LokiStack 实例会根据配置的大小带有默认设置。您可以覆盖其中的一些设置,如 ingestion 和查询限制。如果您在 Console 插件中或 flowlogs-pipeline 日志中发现 Loki 错误,则可能需要更新它们。Web 控制台中的自动警报会在达到这些限制时通知您。

以下是配置的限制示例:

spec:
  limits:
    global:
      ingestion:
        ingestionBurstSize: 40
        ingestionRate: 20
        maxGlobalStreamsPerTenant: 25000
      queries:
        maxChunksPerQuery: 2000000
        maxEntriesLimitPerQuery: 10000
        maxQuerySeries: 3000

有关这些设置的更多信息,请参阅 LokiStack API 参考

3.2.4. 配置授权和多租户

定义 ClusterRoleClusterRoleBindingnetobserv-reader ClusterRole 启用多租户,并允许单独的用户访问或组访问 Loki 中的流。您可以创建一个 YAML 文件来定义这些角色。

流程

  1. 使用 Web 控制台,点 Import 图标 +
  2. 将 YAML 文件放到编辑器中,然后点 Create

ClusterRole reader yaml 示例

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: netobserv-reader    1
rules:
- apiGroups:
  - 'loki.grafana.com'
  resources:
  - network
  resourceNames:
  - logs
  verbs:
  - 'get'

1
此角色可用于多租户。

ClusterRole writer yaml 示例

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: netobserv-writer
rules:
- apiGroups:
  - 'loki.grafana.com'
  resources:
  - network
  resourceNames:
  - logs
  verbs:
  - 'create'

ClusterRoleBinding yaml 示例

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: netobserv-writer-flp
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: netobserv-writer
subjects:
- kind: ServiceAccount
  name: flowlogs-pipeline    1
  namespace: netobserv
- kind: ServiceAccount
  name: flowlogs-pipeline-transformer
  namespace: netobserv

1
flowlogs-pipeline 写入 Loki。如果使用 Kafka,这个值为 flowlogs-pipeline-transformer

3.2.5. 在网络可观察性中启用多租户

Network Observability Operator 中的多租户允许并将单独的用户访问或组访问限制为存储在 Loki 中的流。项目 admins 启用了访问权限。对某些命名空间具有有限访问权限的项目管理员只能访问这些命名空间的流。

前提条件

  • 已安装 Loki Operator 版本 5.7
  • FlowCollector spec.loki.authToken 配置必须设置为 FORWARD
  • 您必须以项目管理员身份登录

流程

  1. 运行以下命令,授权 user1 的读权限:

    $ oc adm policy add-cluster-role-to-user netobserv-reader user1

    现在,数据仅限于允许的用户命名空间。例如,可以访问单个命名空间的用户可以查看此命名空间内部的所有流,以及从到这个命名空间流进入这个命名空间。项目管理员有权访问 OpenShift Container Platform 控制台中的 Administrator 视角,以访问 Network Flows Traffic 页面。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.