搜索

3.2. 安装 Loki Operator

download PDF

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 控制台或 OpenShift CLI (oc) 部署 LokiStack 自定义资源(CR)来创建命名空间或新项目。

流程

  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 2
      storage:
        schemas:
        - version: v12
          effectiveDate: '2022-06-01'
        secret:
          name: loki-s3
          type: s3
      storageClassName: gp3 3
      tenants:
        mode: openshift-network
    1
    本文档中的安装示例在所有组件中使用相同的命名空间 netobserv。您可以选择使用不同的命名空间。
    2
    指定部署大小。在 Loki Operator 5.8 及更新的版本中,Loki 实例支持的大小选项为 1x.extra-small1x.small1x.medium
    重要

    对于部署大小,无法更改 1x 值。

    3
    使用集群中可用于 ReadWriteOnce 访问模式的存储类名称。您可以使用 oc get storageclasses 查看集群中的可用内容。
    重要

    您不能重复使用用于日志的相同 LokiStack CR。

  5. Create

3.2.3. 为 cluster-admin 用户角色创建新组

重要

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

使用以下步骤为具有 cluster-admin 权限的用户创建新组。

流程

  1. 输入以下命令创建新组:

    $ oc adm groups new cluster-admin
  2. 输入以下命令将所需的用户添加到 cluster-admin 组中:

    $ oc adm groups add-users cluster-admin <username>
  3. 输入以下命令在组中添加 cluster-admin 用户角色:

    $ oc adm policy add-cluster-role-to-group cluster-admin cluster-admin

3.2.4. 自定义 admin 组访问

如果您需要看到集群范围的日志,而不一定是管理员,或者已经定义了想要使用的组,您可以使用 adminGroup 字段指定自定义组。属于 LokiStack 自定义资源(CR) 的 adminGroups 字段中指定的组成员的用户,具有与管理员相同的读取访问权限。

如果管理员还分配了 cluster-logging-application-view 角色,则管理员用户可以访问所有命名空间中的所有应用程序日志。

管理员用户有权访问整个集群中的所有网络日志。

LokiStack CR 示例

apiVersion: loki.grafana.com/v1
kind: LokiStack
metadata:
  name: loki
  namespace: netobserv
spec:
  tenants:
    mode: openshift-network 1
    openshift:
      adminGroups: 2
      - cluster-admin
      - custom-admin-group 3

1
自定义管理组仅在此模式中可用。
2
为此字段输入空 list [] 值会禁用 admin 组。
3
覆盖默认组(system:cluster-admins,cluster-admin,dedicated-admin)

3.2.5. Loki 部署大小

Loki 的大小使用 1x.<size> 格式,其中值 1x 是实例数量,<size> 指定性能功能。

重要

对于部署大小,无法更改 1x 值。

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

数据传输

仅用于演示

100GB/day

500GB/day

2TB/day

每秒查询数 (QPS)

仅用于演示

1-25 QPS at 200ms

25-50 QPS at 200ms

25-75 QPS at 200ms

复制因子

None

2

2

2

总 CPU 请求

None

14 个 vCPU

34 个 vCPU

54 个 vCPU

内存请求总数

None

31Gi

67Gi

139Gi

磁盘请求总数

40Gi

430Gi

430Gi

590Gi

3.2.6. 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.7. 在网络可观察性中启用多租户

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

前提条件

流程

  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.