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+
流程
-
在 OpenShift Container Platform Web 控制台中,点击 Operators
OperatorHub。 - 从可用的 Operator 列表中选择 Loki Operator,然后点 Install。
- 在 Installation Mode 下,选择 All namespaces on the cluster。
验证
-
验证您安装了 Loki Operator。访问 Operators
Installed Operators 页面,并查找 Loki Operator。 - 验证 Loki Operator 是否在所有项目中 Status 为 Succeeded。
要卸载 Loki,请参考与用来安装 Loki 的方法相关的卸载过程。您可能会有剩余的 ClusterRole
和 ClusterRoleBindings
、存储在对象存储中的数据,以及需要被删除的持久性卷。
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。
-
使用 Web 控制台,进入到 Project
All Projects 下拉菜单,再选择 Create Project。将项目命名为 netobserv
,再点 Create。 使用右上角的 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)来创建命名空间或新项目。
流程
-
进入到 Operators
Installed Operators,从 Project 下拉菜单查看 All projects。 - 查找 Loki Operator。在详情的 Provided APIs 下,选择 LokiStack。
- 点 Create LokiStack。
确保在 Form View 或 YAML 视图中指定以下字段:
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
- 点 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
权限的用户创建新组。
流程
输入以下命令创建新组:
$ oc adm groups new cluster-admin
输入以下命令将所需的用户添加到
cluster-admin
组中:$ oc adm groups add-users cluster-admin <username>
输入以下命令在组中添加
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
3.2.5. Loki 部署大小
Loki 的大小使用 1x.<size>
格式,其中值 1x
是实例数量,<size>
指定性能功能。
对于部署大小,无法更改 1x
值。
1x.demo | 1x.extra-small | 1x.small | 1x.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 启用了访问权限。对某些命名空间具有有限访问权限的项目管理员只能访问这些命名空间的流。
前提条件
- 您至少安装了 Loki Operator 版本 5.7
- 您必须以项目管理员身份登录
流程
运行以下命令,授权
user1
的读权限:$ oc adm policy add-cluster-role-to-user netobserv-reader user1
现在,数据仅限于允许的用户命名空间。例如,可以访问单个命名空间的用户可以查看此命名空间内部的所有流,以及从到这个命名空间流进入这个命名空间。项目管理员有权访问 OpenShift Container Platform 控制台中的 Administrator 视角,以访问 Network Flows Traffic 页面。