28.3. 安装 Network Observability Operator


安装 Loki 是使用 Network Observability Operator 的先决条件。建议您使用 Loki Operator 安装 Loki;在 Network Observability Operator 安装前,需要以下步骤。

Loki Operator 集成了一个网关,该网关通过 Loki 实现多租户和身份验证,以进行数据流存储。LokiStack 资源管理 Loki,它是一个可扩展、高度可用、多租户日志聚合系统和使用 OpenShift Container Platform 身份验证的 Web 代理。LokiStack 代理使用 OpenShift Container Platform 身份验证来强制实施多租户,并方便在 Loki 日志存储中保存和索引数据。

注意

Loki Operator 也可用于使用 LokiStack 进行日志。Network Observability Operator 需要与 Logging 分开的一个专用的 LokiStack。

28.3.1. 安装 Loki Operator

建议使用 Loki Operator 版本 5.7 安装 Loki,此版本提供了使用 openshift-network 10nant 配置模式创建 LokiStack 实例的功能。它还为 Network Observability 提供完全自动的、集群内身份验证和授权支持。

先决条件

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

您可以通过几种方法安装 Loki。其中一种方法是使用 OpenShift Container Platform Web 控制台 Operator Hub 安装 Loki Operator。

流程

  1. 安装 Loki Operator Operator:

    1. 在 OpenShift Container Platform Web 控制台中,点击 Operators OperatorHub
    2. 从可用的 Operator 列表中选择 Loki Operator,然后点 Install
    3. Installation Mode 下,选择 All namespaces on the cluster
    4. 验证您安装了 Loki Operator。访问 Operators Installed Operators 页面,并查找 Loki Operator
    5. 验证 Loki Operator 是否在所有项目中 StatusSucceeded
  2. 创建 Secret YAML 文件。您可以通过 web 控制台或 CLI 中创建此 secret。

    1. 使用 Web 控制台,进入到 Project All Projects 下拉菜单,再选择 Create Project。将项目命名为 netobserv,再点 Create
    2. 使用右上角的 Import 图标+。将 YAML 文件放到编辑器中。在 netobserv 命名空间中创建此 YAML 文件非常重要,它使用 access_key_idaccess_key_secret 指定您的凭证。
    3. 创建 secret 后,您应该会在 web 控制台的 Workloads Secrets 下看到它。

      以下是一个 secret YAML 文件示例:

apiVersion: v1
kind: Secret
metadata:
  name: loki-s3
  namespace: netobserv
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
重要

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

28.3.1.1. 创建 LokiStack 自定义资源

建议您在由 FlowCollector 规格 spec.namespace 中引用的同一命名空间中部署 LokiStack。您可以使用 Web 控制台或 CLI 创建命名空间或新项目。

流程

  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
      spec:
        size: 1x.small
        storage:
          schemas:
          - version: v12
            effectiveDate: '2022-06-01'
          secret:
            name: loki-s3
            type: s3
        storageClassName: gp3  1
        tenants:
          mode: openshift-network
    1
    使用集群中可用于 ReadWriteOnce 访问模式的存储类名称。您可以使用 oc get storageclasses 查看集群中的可用内容。
    重要

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

  5. Create
28.3.1.1.1. 部署大小

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

注意

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

表 28.1. 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

28.3.1.2. 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 参考

28.3.2. 配置授权和多租户

定义 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

28.3.3. 在 Network Observability 中启用多租户

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 页面。

28.3.4. 安装 Kafka (可选)

Kafka Operator 支持大规模环境。您可以从 Operator Hub 将 Kafka Operator 作为 Red Hat AMQ Streams 安装,就像 Loki Operator 和 Network Observability Operator 安装一样。

注意

要卸载 Kafka,请参考与用来安装的方法对应的卸载过程。

28.3.5. 安装 Network Observability Operator

您可以使用 OpenShift Container Platform Web 控制台 Operator Hub 安装 Network Observability Operator。安装 Operator 时,它提供 FlowCollector 自定义资源定义 (CRD)。在创建 FlowCollector 时,您可以在 web 控制台中设置规格。

先决条件

  • 已安装 Loki。建议您使用 Loki Operator 版本 5.7 安装 Loki
  • 需要以下支持的架构之一:amd64, ppc64le, arm64, 或 s390x
  • Red Hat Enterprise Linux (RHEL) 9 支持的任何 CPU
注意

本文档假设您的 LokiStack 实例名称为 loki。使用其他名称需要额外的配置。

流程

  1. 在 OpenShift Container Platform Web 控制台中,点击 Operators OperatorHub
  2. OperatorHub 中的可用 Operator 列表中选择 Network Observability Operator,然后点 Install
  3. 选中 Enable Operator recommended cluster monitoring on this Namespace 的复选框。
  4. 导航到 Operators Installed Operators。在 Provided APIs for Network Observability 下, 选择 Flow Collector 链接。

    1. 进入 Flow Collector 选项卡,然后点 Create FlowCollector。在表单视图中进行以下选择:

      • spec.agent.ebpf.Sampling:指定流的抽样大小。较低的抽样大小会对资源利用率造成负面影响。如需更多信息,请参阅 spec.agent.ebpf 下的 FlowCollector API 引用。
      • spec.deploymentModel:如果您使用 Kafka,请验证是否选择了 Kafka。
      • spec.exporters :如果您使用 Kafka,您可以选择将网络流发送到 Kafka,以便它们可以被支持 Kafka 输入的任何处理器或存储使用,如 Splunk、Elasticsearch 或 Fluentd。要做到这一点,请设置以下规格:

        • type 设置为 KAFKA
        • address 设置为 kafka-cluster-kafka-bootstrap.netobserv
        • topic 设置为 netobserv-flows-export。Operator 将所有流导出到配置的 Kafka 主题。
        • 设置以下 tls 规格:

          • certFile: service-ca.crt, name: kafka-gateway-ca-bundle, 和 type: configmap.

            您还可以通过直接编辑 YAML 来稍后配置这个选项。如需更多信息,请参阅导出增强的网络流数据

      • loki.url :由于身份验证被单独指定,此 URL 需要更新为 https://loki-gateway-http.netobserv.svc:8080/api/logs/v1/network。URL 的第一个部分"loki"应与 LokiStack 的名称匹配。
      • loki.statusUrl:将其设置为 https://loki-query-frontend-http.netobserv.svc:3100/。URL 的第一个部分"loki"应与 LokiStack 的名称匹配。
      • loki.authToken: 选择 FORWARD 值。
      • tls.enable :验证复选框是否已选中(代表已启用)。
      • statusTls :默认情况下,enable 值为 false。

        对于证书引用名称的第一个部分: loki-gateway-ca-bundleloki-ca-bundleloki-query-frontend-httploki、loki 的名称应与 LokiStack 的名称匹配。

    2. Create

验证

要确认这一点,当您进入到 Observe 时,您应该看到选项中列出的 Network Traffic

如果 OpenShift Container Platform 集群中没有应用程序流量,默认过滤器可能会显示"No results",这会导致没有视觉流。在过滤器选择旁边,选择 Clear all filters 来查看流。

重要

如果使用 Loki Operator 安装 Loki,则建议不要使用 querierUrl,因为它可能会破坏对 Loki 的控制台访问。如果您安装的 Loki 是使用其他类型的 Loki 安装进行的,则不适用。

其他资源

28.3.6. 卸载 Network Observability Operator

您可以使用 OpenShift Container Platform Web 控制台 Operator Hub 来卸载 Network Observability Operator,在 Operators Installed Operators 区域中工作。

流程

  1. 删除 FlowCollector 自定义资源。

    1. Provided APIs 列中的 Network Observability Operator 旁边的 Flow Collector
    2. 集群点选项菜单 kebab ,然后选择 Delete FlowCollector
  2. 卸载 Network Observability Operator。

    1. 返回到 Operators Installed Operators 区。
    2. Network Observability Operator 旁边的选项菜单 kebab 并选择 Uninstall Operator
    3. Home Projects 并选择 openshift-netobserv-operator
    4. 进入到 Actions,再选择 Delete Project
  3. 删除 FlowCollector 自定义资源定义 (CRD)。

    1. 进入到 Administration CustomResourceDefinitions
    2. 查找 FlowCollector 并点选项菜单 kebab
    3. 选择 Delete CustomResourceDefinition

      重要

      如果已安装,Loki Operator 和 Kafka 会保留,需要被独立删除。另外,在一个对象存储中可能会有剩余的数据,以及持久性卷,这需要被删除。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.