Cluster Observability Operator


OpenShift Container Platform 4.16

在 OpenShift Container Platform 中配置和使用 Cluster Observability Operator

Red Hat OpenShift Documentation Team

摘要

使用 Cluster Observability Operator 在 OpenShift Container Platform 中部署和配置可观察性组件。

第 1 章 Cluster Observability Operator 发行注记

Cluster Observability Operator (COO) 是一个可选的 OpenShift Container Platform Operator,它可让管理员创建独立监控堆栈,供不同的服务和用户使用。

COO 补充 OpenShift Container Platform 的内置监控功能。您可以使用由 Cluster Monitoring Operator (CMO) 管理的默认平台和用户工作负载监控堆栈并行部署它。

本发行注记介绍了 OpenShift Container Platform 中 Cluster Observability Operator 的开发。

下表提供了有关根据 Cluster Observability Operator 和 OpenShift Container Platform 版本提供哪些功能的信息:

Expand
COO 版本OCP 版本分布式追踪日志记录故障排除面板ACM 警报事件检测

1.1+

4.12 - 4.14

1.1+

4.15

1.1+

4.16 - 4.18

1.2+

4.19+

1.1. Cluster Observability Operator 1.2.2

以下公告可用于 Cluster Observability Operator 1.2.2:

1.1.1. 程序错误修复

  • 在此次更新之前,安装事件检测功能可能会间歇性失败。症状包括事件检测 UI 会被显示,但没有包括任何数据。另外,health-analyzer ServiceMonitor 资源处于失败状态,错误信息 tls: failed to verify certificate: x509。在这个版本中,事件检测功能会被正确安装。(COO-1062)

    如果您要从包括这个程序错误的 1.2.1 升级,您必须重新创建监控 UI 插件来解决这个问题。

1.1.2. 已知问题

Cluster Observability Operator 1.2.2 中已知的问题:

  • 安装版本 1.2.2 或从版本 1.0 升级时,监控插件的 UIPlugin 资源可能会损坏。当您也部署了分布式追踪、故障排除面板和 Advance Cluster Management (ACM) 以及监控 UI 插件时,会出现这种情况。您可以通过重新创建 UI 插件来解决这个问题。(COO-1051)

    如果您之前已在 1.2.1 中解决了这个问题,然后升级到 1.2.2,这个问题不会重新出现。

1.2. Cluster Observability Operator 1.2.1

以下公告可用于 Cluster Observability Operator 1.2.1:

1.2.1. 程序错误修复

  • 在此次更新之前,在 Operator 版本 1.2 升级过程中会保留旧的版本标签 matcher。这会导致 Perses 仪表板不可用。在这个版本中,版本标签会被删除,Perses 仪表板会被正确协调。

1.2.2. 已知问题

Cluster Observability Operator 1.2.1 中已知的问题:

  • 事件检测功能的安装可能会间歇性失败。症状包括事件检测 UI 会被显示,但没有包括任何数据。另外,health-analyzer ServiceMonitor 资源处于失败状态,错误信息 tls: failed to verify certificate: x509。您可以通过升级到 1.2.2 并重新创建监控 UI 插件来解决这个问题。(COO-1062)
  • 安装版本 1.2.1 或从版本 1.0 升级时,监控插件的 UIPlugin 资源可能会损坏。当您也部署了分布式追踪、故障排除面板和 Advance Cluster Management (ACM) 以及监控 UI 插件时,会出现这种情况。您可以通过重新创建 UI 插件来解决这个问题。(COO-1051)

1.3. Cluster Observability Operator 1.2

以下公告可用于 Cluster Observability Operator 1.2:

1.3.1. 新功能及功能增强

  • 除了之前支持的 ViaQ 方案外,日志记录 UI 插件还支持 OTEL 格式。(COO-816)
  • 在安装监控 UI 插件时,会默认部署加速器仪表板。(COO-942)
  • 现在,为 Korrel8r 显示每个图形节点的多个结果。(COO-785)
  • 现在,在事件检测面板中可以直接进入单个事件详情,这启用了 Red Hat Advanced Cluster Management (RHACM) 2.14 中的事件概述功能。(COO-977,ACM-18751)
  • 高级过滤功能已添加到追踪视图中。(COO-979)
  • 分布式追踪 UI 插件的状态现在是正式发布 (GA),支持 Patternfly 4, 5 和 6。(COO-873)

1.3.2. 程序错误修复

  • 在以前的版本中,LokiStack 是安装日志记录 UI 插件的先决条件。在这个版本中,您可以在没有 LokiStack 的情况下安装日志记录 UI 插件。(COO-760)
  • 在以前的版本中,IncidentsComponent 部分中的 Silence Alert 按钮不会预先填充字段且不可用。此发行版本解决了这个问题。(COO-970)

1.3.3. 已知问题

Cluster Observability Operator 1.2.0 中已知的问题:

  • 当从 COO 1.1.1 升级到 COO 1.2 时,Perses 仪表板不会被正确协调,这需要重新安装监控 UI 插件。(COO-978)

1.4. Cluster Observability Operator 1.1.1

1.4.1. 程序错误修复

  • 在以前的版本中,在从 Cluster Observability Operator 1.0 升级时,许多集群中的 observability-operatorperses-operator pod 因 OutOfMemory 错误而进入 CrashLoopBackOff 状态,。此发行版本解决了这个问题。(COO-784)

1.5. Cluster Observability Operator 1.1

以下公告可用于 Cluster Observability Operator 1.1:

1.5.1. 新功能及功能增强

  • 现在,您可以使用 COO 安装监控 UI 插件。(COO-262)
  • 添加了对 Thanos web 端点的 TLS 支持。(COO-222)

1.5.2. 已知问题

Cluster Observability Operator 1.1.0 中已知的问题:

1.5.3. 程序错误修复

  • 在以前的版本中,日志记录 UI 插件不支持设置自定义 LokiStack 名称或命名空间。此发行版本解决了这个问题。(COO-332)

1.6. Cluster Observability Operator 1.0

1.6.1. 新功能及功能增强

  • 现在,OpenShift Container Platform 平台监控启用了 COO。(COO-476)

    • 为 COO Web 服务器实施 HTTPS 支持。(COO-480)
    • 为 COO Web 服务器实施 authn/authz。(COO-481)
    • 配置 ServiceMonitor 资源,以从 COO 收集指标。(COO-482)
    • 为 OLM 捆绑包添加 operatorframework.io/cluster-monitoring=true 注解。(COO-483)
    • 定义 COO 的警报策略。(COO-484)
    • 为警报配置 PrometheusRule。(COO-485)
  • 在创建时,支持级别注解被添加到 UIPlugin CR 中。支持级别基于插件类型,值为 DevPreviewTechPreviewGeneralAvailability。(COO-318)
  • 现在,您可以在 Prometheus CR 中配置 Alertmanager schemetlsConfig 字段。(COO-219)
  • 对于故障排除面板的扩展技术预览,增加了对与 Kubernetes 资源定位 trace 的支持,并直接使用其他可观察信号,包括日志、警报、指标和网络事件。(COO-450)

    • 当进入到追踪页时,您可以通过点 web 控制台中的 Observe → Tracing 来选择 Tempo 实例和租户。预览故障排除面板仅适用于 openshift-tracing / platform 实例和 platform 租户。
    • 故障排除面板在 Administrator 视角中有最佳效果。由于某些后端中的授权问题,它在 Developer 视角中具有有限的功能,特别是 Prometheus 用于指标和警报。这将在以后的发行版本中解决。

下表提供了有关根据 Cluster Observability Operator 和 OpenShift Container Platform 版本提供哪些功能的信息:

Expand
COO 版本OCP 版本分布式追踪日志记录平面故障排除

1.0

4.12 - 4.15

1.0

4.16+

1.6.2. CVE

1.6.3. 程序错误修复

  • 在以前的版本中,COO 安装的默认命名空间是 openshift-operators。在这个版本中,defaullt 命名空间会更改为 openshift-cluster-observability-operator。(COO-32)
  • 在以前的版本中,korrel8r 只能解析时间序列选择器表达式。在这个版本中,korrel8r 可以解析任何有效的 PromQL 表达式,以提取用于关联性的时间序列选择器。(COO-558)
  • 在以前的版本中,当从分布式 Tracing UI 插件查看 Tempo 实例时,scatter 图表图表显示 trace 持续时间无法正确呈现。bubble 大小太大,并在 x 和 y 轴间有重叠。在这个版本中,图形可以被正确呈现。(COO-319)

1.7. 较旧的、技术预览版本中这个功能可用

下表提供了有关根据 Cluster Observability Operator 和 OpenShift Container Platform 版本提供哪些功能的信息:

Expand
COO 版本OCP 版本仪表板分布式追踪日志记录平面故障排除

0.2.0

4.11

0.3.0+, 0.4.0+

4.11 - 4.15

0.3.0+, 0.4.0+

4.16+

1.8. Cluster Observability Operator 0.4.1

以下公告可用于 Cluster Observability Operator 0.4.1:

1.8.1. 新功能及功能增强

  • 现在,您可以为 Prometheus 和 Alertmanager 配置 WebTLS。

1.8.2. CVE

1.8.3. 程序错误修复

  • 在以前的版本中,当您删除仪表板 UI 插件时,consoles.operator.openshift.io 资源仍然会包含 console-dashboards-plugin。此发行版本解决了这个问题。(COO-152)
  • 在以前的版本中,Web 控制台没有显示 Red Hat COO 的正确图标。此发行版本解决了这个问题。(COO-353)
  • 在以前的版本中,当您从 web 控制台安装 COO 时,support 部分会包含无效的链接。此发行版本解决了这个问题。(COO-354)
  • 在以前的版本中,用于 COO 的集群服务版本 (CSV)链接到文档的非官方版本。此发行版本解决了这个问题。(COO-356)

1.9. Cluster Observability Operator 0.4.0

以下公告可用于 Cluster Observability Operator 0.4.0:

1.9.1. 新功能及功能增强

1.9.1.1. UI 插件故障排除
  • UI 面板的故障排除已被改进,您现在可以选择并专注于特定的启动信号。
  • 通过选择深度选项,可以对 Korrel8r 查询有更多了解。
  • OpenShift Container Platform 版本 4.17+ 的用户可从 Application Launcher app launcher 访问故障排除 UI 面板。另外,在 4.16+ 版本中,您可以点 ObserveAlerting 在 web 控制台中访问它。

如需更多信息,请参阅 UI 插件故障排除

1.9.1.2. 分布式追踪 UI 插件
  • 分布式追踪 UI 插件已被改进,现在可以使用 Gantt chart 探索 trace。

如需更多信息,请参阅分布式追踪 UI 插件

1.9.2. 程序错误修复

  • 在以前的版本中,普通用户无法通过点 ObserveLogs 在 web 控制台的 Developer 视角中访问指标。此发行版本解决了这个问题。(COO-288)
  • 在以前的版本中,故障排除 UI 插件使用了错误的过滤用于网络观察性。此发行版本解决了这个问题。(COO-299)
  • 在以前的版本中,故障排除 UI 插件生成一个不正确的 URL 用于 pod 标签搜索。此发行版本解决了这个问题。(COO-298)
  • 在以前的版本中,分布式追踪 UI 插件中有一个授权漏洞。此发行版本解决了这个问题,并且仅使用多租户 TempoStackTempoMonolithic 实例进一步强化分布式追踪 UI 插件。

1.10. Cluster Observability Operator 0.3.2

以下公告可用于 Cluster Observability Operator 0.3.2:

1.10.1. 新功能及功能增强

  • 在这个版本中,您可以使用带有 MonitoringStack 组件的容限和节点选择器。

1.10.2. 程序错误修复

  • 在以前的版本中,日志记录 UIPlugin 没有处于 Available 状态,当在一个特定版本的 OpenShift Container Platform 上安装时,日志记录 pod 不会被创建。此发行版本解决了这个问题。(COO-260)

1.11. Cluster Observability Operator 0.3.0

以下公告可用于 Cluster Observability Operator 0.3.0:

1.11.1. 新功能及功能增强

  • 在这个版本中,Cluster Observability Operator 添加了对将来的 OpenShift Container Platform observability Web 控制台 UI 插件和可观察性组件的后端支持。

1.12. Cluster Observability Operator 0.2.0

以下公告可用于 Cluster Observability Operator 0.2.0 :

1.12.1. 新功能及功能增强

  • 在这个版本中,Cluster Observability Operator 支持为 OpenShift Container Platform Web 控制台界面(UI)安装和管理与可观察性相关的插件。(COO-58)

1.13. Cluster Observability Operator 0.1.3

以下公告可用于 Cluster Observability Operator 0.1.3:

1.13.1. 程序错误修复

  • 在以前的版本中,如果您试图访问 http://<prometheus_url>:9090/graph 的 Prometheus web 用户界面(UI),会显示以下出错信息:Error open React index.html: open web/ui/static/react/index.html: no such file or directory。此发行版本解决了这个问题,Prometheus Web UI 现在可以正确显示。(COO-34)

1.14. Cluster Observability Operator 0.1.2

以下公告可用于 Cluster Observability Operator 0.1.2:

1.14.1. CVE

1.14.2. 程序错误修复

  • 在以前的版本中,某些集群服务版本 (CSV) 注解没有包括在 COO 的元数据中。由于这些缺少的注解,某些 COO 功能没有出现在软件包清单或 OperatorHub 用户界面中。此发行版本添加了缺少的注解,从而解决了这个问题。(COO-11)
  • 在以前的版本中,COO 的自动更新无法正常工作,Operator 的较新版本不会自动替换旧版本,即使 OperatorHub 中提供了更新的版本。此发行版本解决了这个问题。(COO-12)
  • 在以前的版本中,Thanos Querier 只侦听 127.0.0.1 的端口 9090 (localhos)上的网络流量,如果您试图访问 Thanos Querier 服务,这会导致 502 Bad Gateway 错误。在这个版本中,Thanos Querier 配置已被更新,因此组件现在侦听默认端口(10902),从而解决了这个问题。现在,您还可以通过服务器端应用(SSA)修改端口,并在需要时添加代理链。(COO-14)

1.15. Cluster Observability Operator 0.1.1

以下公告可用于 Cluster Observability Operator 0.1.1:

1.15.1. 新功能及功能增强

此发行版本更新了 Cluster Observability Operator,以支持在受限网络中或断开连接的环境中安装 Operator。

1.16. Cluster Observability Operator 0.1

此发行版本在 OperatorHub 上提供了 Cluster Observability Operator 的技术预览版本。

第 2 章 Cluster Observability Operator 概述

Cluster Observability Operator (COO)是 OpenShift Container Platform 的可选组件,旨在创建和管理高度可自定义的监控堆栈。它使集群管理员能够广泛地自动配置和管理监控需求,与默认的 OpenShift Container Platform 监控系统相比,为每个命名空间提供更定制和详细视图。

COO 部署以下监控组件:

  • Prometheus - 一个高度可用的 Prometheus 实例,可以使用远程写入将指标发送到外部端点。
  • Thanos Querier (可选)- 启用从中央位置查询 Prometheus 实例。
  • Alertmanager (可选)- 为不同服务提供警报配置功能。
  • UI 插件 (可选)- 通过插件增强可观察功能,用于监控、日志记录、分布式追踪和故障排除。
  • Korrel8r (可选)- 提供可观察性信号相关性,由开源 Korrel8r 项目提供支持。

2.1. COO 与默认监控堆栈相比

COO 组件独立于默认的集群内监控堆栈(由 Cluster Monitoring Operator (CMO) 部署和管理)。两个 Operator 部署的监控堆栈不会冲突。除了 CMO 部署的默认平台监控组件外,您还可以使用 COO 监控堆栈。

COO 和默认集群监控堆栈之间的主要区别显示在下表中:

Expand
功能COO默认监控堆栈

范围和集成

提供全面的监控和分析,满足企业级需求,涵盖集群和工作负载性能。

但是,它缺少与 OpenShift Container Platform 的直接集成,通常需要外部 Grafana 实例进行仪表板。

仅限于集群中的核心组件,如 API 服务器和 etcd,以及特定于 OpenShift 的命名空间。

在控制台中有与 OpenShift Container Platform 的深度集成,包括控制台仪表板和警报管理。

配置和自定义

更广泛的配置选项,包括数据保留周期、存储方法和收集的数据类型。

COO 可以使用 Server-Side Apply (SSA) 将自定义资源中单个可配置字段的所有权委派给用户,从而增强自定义。

带有有限自定义选项的内置配置。

数据保留和存储

长期数据保留,支持历史分析和容量规划

数据保留时间短,专注于短期监控和实时检测。

2.2. 使用 COO 的主要优点

部署 COO 可帮助您解决难以使用默认监控堆栈实现的监控要求。

2.2.1. 可扩展性

  • 用户可以在 COO 部署的监控堆栈中添加更多指标,该堆栈无法在没有丢失支持的情况下进行核心平台监控。
  • 您可以通过联邦从核心平台监控接收特定于集群的指标。
  • COO 支持高级监控场景,如趋势预测和异常检测。

2.2.2. 多租户支持

  • 您可以为每个用户命名空间创建监控堆栈。
  • 您可以为每个命名空间部署多个堆栈,或为多个命名空间部署单个堆栈。
  • COO 为不同团队启用独立的警报和接收器配置。

2.2.3. 可扩展性

  • 在单个集群中支持多个监控堆栈。
  • 通过手动分片启用对大型集群的监控。
  • 解决指标超过单个 Prometheus 实例功能的情况。

2.2.4. 灵活性

  • 与 OpenShift Container Platform 发行周期分离。
  • 更快的发行迭代,并对更改要求进行快速响应。
  • 独立管理警报规则。

2.3. COO 的目标用户

COO 非常适合需要高定制性、可扩展性和长期数据保留的用户,特别是在复杂的多租户企业环境中。

2.3.1. 企业级用户和管理员

企业用户需要深入的 OpenShift Container Platform 集群监控功能,包括高级性能分析、长期数据保留、趋势预测和历史分析。这些功能可帮助企业更好地理解资源使用、防止性能问题并优化资源分配。

2.3.2. 多租户环境中的操作团队

通过多租户支持,COO 允许不同的团队为其项目和应用程序配置监控视图,使其适合具有灵活的监控需求的团队。

2.3.3. 开发和运维团队

COO 提供精细的监控和可自定义的观察视图,以便在开发和操作期间进行深入故障排除、异常检测和性能调节。

2.4. 使用 Server-ide Apply 自定义 Prometheus 资源

服务器端应用是一种支持协作管理 Kubernetes 资源的功能。control plane 跟踪不同的用户和控制器如何管理 Kubernetes 对象中的字段。它引入了字段管理器的概念并跟踪字段的所有权。这种集中控制提供了冲突检测和解决方案,并降低意外覆盖的风险。

与 Client-Side Apply 相比,它更具声明性,并跟踪字段管理,而不是最后应用的状态。

服务器端应用
通过更新资源的状态来声明配置管理,而无需删除并重新创建它。
字段管理
用户可以指定要更新的资源哪些字段,而不影响其他字段。
受管字段
Kubernetes 存储元数据,提供有关在 metadata 中的 managedFields 字段中管理对象的每个字段的元数据。
Conflicts
如果多个管理器尝试修改同一字段,则会出现冲突。申请者可以选择覆盖、恢复控制或共享管理。
合并策略
基于管理它们的参与者,server-ide Apply merges 字段。

流程

  1. 使用以下配置添加 MonitoringStack 资源:

    MonitoringStack 对象示例

    apiVersion: monitoring.rhobs/v1alpha1
    kind: MonitoringStack
    metadata:
      labels:
        coo: example
      name: sample-monitoring-stack
      namespace: coo-demo
    spec:
      logLevel: debug
      retention: 1d
      resourceSelector:
        matchLabels:
          app: demo
    Copy to Clipboard Toggle word wrap

  2. coo-demo 命名空间中生成了一个名为 sample-monitoring-stack 的 Prometheus 资源。运行以下命令,检索生成的 Prometheus 资源的受管字段:

    $ oc -n coo-demo get Prometheus.monitoring.rhobs -oyaml --show-managed-fields
    Copy to Clipboard Toggle word wrap

    输出示例

    managedFields:
    - apiVersion: monitoring.rhobs/v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:labels:
            f:app.kubernetes.io/managed-by: {}
            f:app.kubernetes.io/name: {}
            f:app.kubernetes.io/part-of: {}
          f:ownerReferences:
            k:{"uid":"81da0d9a-61aa-4df3-affc-71015bcbde5a"}: {}
        f:spec:
          f:additionalScrapeConfigs: {}
          f:affinity:
            f:podAntiAffinity:
              f:requiredDuringSchedulingIgnoredDuringExecution: {}
          f:alerting:
            f:alertmanagers: {}
          f:arbitraryFSAccessThroughSMs: {}
          f:logLevel: {}
          f:podMetadata:
            f:labels:
              f:app.kubernetes.io/component: {}
              f:app.kubernetes.io/part-of: {}
          f:podMonitorSelector: {}
          f:replicas: {}
          f:resources:
            f:limits:
              f:cpu: {}
              f:memory: {}
            f:requests:
              f:cpu: {}
              f:memory: {}
          f:retention: {}
          f:ruleSelector: {}
          f:rules:
            f:alert: {}
          f:securityContext:
            f:fsGroup: {}
            f:runAsNonRoot: {}
            f:runAsUser: {}
          f:serviceAccountName: {}
          f:serviceMonitorSelector: {}
          f:thanos:
            f:baseImage: {}
            f:resources: {}
            f:version: {}
          f:tsdb: {}
      manager: observability-operator
      operation: Apply
    - apiVersion: monitoring.rhobs/v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          .: {}
          f:availableReplicas: {}
          f:conditions:
            .: {}
            k:{"type":"Available"}:
              .: {}
              f:lastTransitionTime: {}
              f:observedGeneration: {}
              f:status: {}
              f:type: {}
            k:{"type":"Reconciled"}:
              .: {}
              f:lastTransitionTime: {}
              f:observedGeneration: {}
              f:status: {}
              f:type: {}
          f:paused: {}
          f:replicas: {}
          f:shardStatuses:
            .: {}
            k:{"shardID":"0"}:
              .: {}
              f:availableReplicas: {}
              f:replicas: {}
              f:shardID: {}
              f:unavailableReplicas: {}
              f:updatedReplicas: {}
          f:unavailableReplicas: {}
          f:updatedReplicas: {}
      manager: PrometheusOperator
      operation: Update
      subresource: status
    Copy to Clipboard Toggle word wrap

  3. 检查 metadata.managedFields 值,并观察 metadataspec 中的一些字段是否由 MonitoringStack 资源管理。
  4. 修改不是由 MonitoringStack 资源控制的字段:

    1. 更改 spec.enforcedSampleLimit,这是 MonitoringStack 资源未设置的字段。创建 prom-spec-edited.yaml 文件:

      prom-spec-edited.yaml

      apiVersion: monitoring.rhobs/v1
      kind: Prometheus
      metadata:
        name: sample-monitoring-stack
        namespace: coo-demo
      spec:
        enforcedSampleLimit: 1000
      Copy to Clipboard Toggle word wrap

    2. 运行以下命令来应用 YAML:

      $ oc apply -f ./prom-spec-edited.yaml --server-side
      Copy to Clipboard Toggle word wrap
      注意

      您必须使用 --server-side 标志。

    3. 获取更改的 Prometheus 对象,并注意,managedFields 中有多个部分,其 spec.enforcedSampleLimit:

      $ oc get prometheus -n coo-demo
      Copy to Clipboard Toggle word wrap

      输出示例

      managedFields: 
      1
      
      - apiVersion: monitoring.rhobs/v1
        fieldsType: FieldsV1
        fieldsV1:
          f:metadata:
            f:labels:
              f:app.kubernetes.io/managed-by: {}
              f:app.kubernetes.io/name: {}
              f:app.kubernetes.io/part-of: {}
          f:spec:
            f:enforcedSampleLimit: {} 
      2
      
        manager: kubectl
        operation: Apply
      Copy to Clipboard Toggle word wrap

      1
      managedFields
      2
      spec.enforcedSampleLimit
  5. 修改由 MonitoringStack 资源管理的字段:

    1. 使用以下 YAML 配置更改 spec.LogLevel,它是由 MonitoringStack 资源管理的字段:

      # changing the logLevel from debug to info
      apiVersion: monitoring.rhobs/v1
      kind: Prometheus
      metadata:
        name: sample-monitoring-stack
        namespace: coo-demo
      spec:
        logLevel: info 
      1
      Copy to Clipboard Toggle word wrap
      1
      添加了 spec.logLevel
    2. 运行以下命令来应用 YAML:

      $ oc apply -f ./prom-spec-edited.yaml --server-side
      Copy to Clipboard Toggle word wrap

      输出示例

      error: Apply failed with 1 conflict: conflict with "observability-operator": .spec.logLevel
      Please review the fields above--they currently have other managers. Here
      are the ways you can resolve this warning:
      * If you intend to manage all of these fields, please re-run the apply
        command with the `--force-conflicts` flag.
      * If you do not intend to manage all of the fields, please edit your
        manifest to remove references to the fields that should keep their
        current managers.
      * You may co-own fields by updating your manifest to match the existing
        value; in this case, you'll become the manager if the other manager(s)
        stop managing the field (remove it from their configuration).
      See https://kubernetes.io/docs/reference/using-api/server-side-apply/#conflicts
      Copy to Clipboard Toggle word wrap

    3. 请注意,无法使用 Server-Side Apply 更改字段 spec.logLevel,因为它已经由 observability-operator 管理。
    4. 使用 --force-conflicts 标志来强制更改。

      $ oc apply -f ./prom-spec-edited.yaml --server-side --force-conflicts
      Copy to Clipboard Toggle word wrap

      输出示例

      prometheus.monitoring.rhobs/sample-monitoring-stack serverside-applied
      Copy to Clipboard Toggle word wrap

      with-force-conflicts 标志,字段可以被强制更改,但因为同一字段也由 MonitoringStack 资源管理,所以 Observability Operator 会检测到更改,并将其恢复到 MonitoringStack 资源设置的值。

      注意

      MonitoringStack 资源生成的一些 Prometheus 字段受到 MonitoringStack spec 小节中的字段的影响,如 logLevel。可以通过更改 MonitoringStack spec 来更改它们。

    5. 要更改 Prometheus 对象中的 logLevel,请应用以下 YAML 以更改 MonitoringStack 资源:

      apiVersion: monitoring.rhobs/v1alpha1
      kind: MonitoringStack
      metadata:
        name: sample-monitoring-stack
        labels:
          coo: example
      spec:
        logLevel: info
      Copy to Clipboard Toggle word wrap
    6. 要确认已进行了更改,请运行以下命令来查询日志级别:

      $ oc -n coo-demo get Prometheus.monitoring.rhobs -o=jsonpath='{.items[0].spec.logLevel}'
      Copy to Clipboard Toggle word wrap

      输出示例

      info
      Copy to Clipboard Toggle word wrap

注意
  1. 如果 Operator 的新版本生成了一个之前由参与者生成和控制的字段,则行动者设置的值将被覆盖。

    例如,您正管理一个由 MonitoringStack 资源生成的 enforcedSampleLimit 字段。如果升级了 Observability Operator,Operator 的新版本会为 enforcedSampleLimit 生成值,这会覆盖之前设置的值。

  2. MonitoringStack 资源生成的 Prometheus 对象可能包含一些由监控堆栈未明确设置的字段。此时会出现这些字段,因为它们有默认值。

第 3 章 安装 Cluster Observability Operator

作为集群管理员,您可以使用 OpenShift Container Platform Web 控制台从 OperatorHub 安装或删除 Cluster Observability Operator (COO)。OperatorHub 是一个用户界面,可与 Operator Lifecycle Manager (OLM) 结合使用,它在集群中安装和管理 Operator。

使用 OpenShift Container Platform Web 控制台从 OperatorHub 安装 Cluster Observability Operator (COO)。

先决条件

  • 您可以使用具有 cluster-admin 集群角色的用户身份访问集群。
  • 已登陆到 OpenShift Container Platform Web 控制台。

流程

  1. 在 OpenShift Container Platform Web 控制台中,点击 OperatorsOperatorHub
  2. Filter by keyword 框中键入 cluster observability operator
  3. 在结果列表中点 Cluster Observability Operator
  4. 阅读 Operator 信息并配置以下安装设置:

    • Update channelstable
    • 版本1.0.0 或更高版本
    • Installation modeAll namespaces on the cluster (default)
    • Installed NamespaceOperator recommended Namespace: openshift-cluster-observability-operator
    • 选择 Enable Operator recommended cluster monitoring on this Namespace
    • Update approvalAutomatic
  5. 可选: 您可以更改安装设置以满足您的要求。例如,您可以选择订阅不同的更新频道,安装一个旧的 Operator 发行版本,或者需要手动批准对 Operator 的新版本进行更新。
  6. Install

验证

  • 进入 OperatorsInstalled Operators,并验证 Cluster Observability Operator 条目是否出现在列表中。

如果使用 OperatorHub 安装 Cluster Observability Operator (COO),您可以在 OpenShift Container Platform Web 控制台中卸载它。

先决条件

  • 您可以使用具有 cluster-admin 集群角色的用户身份访问集群。
  • 已登陆到 OpenShift Container Platform Web 控制台。

流程

  1. 进入 OperatorsInstalled Operators
  2. 在列表中找到 Cluster Observability Operator 条目。
  3. 在这个条目中点 kebab 并选择 Uninstall Operator

验证

  • 进入 OperatorsInstalled Operators,验证 Cluster Observability Operator 条目是否不再出现在列表中。

您可以通过配置由 Cluster Observability Operator (COO) 管理的监控堆栈来监控服务的指标。

要测试监控服务,请按照以下步骤执行:

  • 部署定义服务端点的示例服务。
  • 创建一个 ServiceMonitor 对象,用于指定服务如何被 COO 监控。
  • 创建 MonitoringStack 对象来发现 ServiceMonitor 对象。

4.1. 为 Cluster Observability Operator 部署示例服务

此配置会在用户定义的 ns1-coo 项目中部署一个名为 prometheus-coo-example-app 的示例服务。该服务会公开自定义 version 指标。

先决条件

  • 您可以使用具有 cluster-admin 集群角色或具有命名空间管理权限的用户身份访问集群。

流程

  1. 创建名为 prometheus-coo-example-app.yaml 的 YAML 文件,其中包含命名空间、部署和服务的以下配置详情:

    apiVersion: v1
    kind: Namespace
    metadata:
      name: ns1-coo
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: prometheus-coo-example-app
      name: prometheus-coo-example-app
      namespace: ns1-coo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: prometheus-coo-example-app
      template:
        metadata:
          labels:
            app: prometheus-coo-example-app
        spec:
          containers:
          - image: ghcr.io/rhobs/prometheus-example-app:0.4.2
            imagePullPolicy: IfNotPresent
            name: prometheus-coo-example-app
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: prometheus-coo-example-app
      name: prometheus-coo-example-app
      namespace: ns1-coo
    spec:
      ports:
      - port: 8080
        protocol: TCP
        targetPort: 8080
        name: web
      selector:
        app: prometheus-coo-example-app
      type: ClusterIP
    Copy to Clipboard Toggle word wrap
  2. 保存该文件。
  3. 运行以下命令,将配置应用到集群:

    $ oc apply -f prometheus-coo-example-app.yaml
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令验证 pod 是否正在运行,并观察输出:

    $ oc -n ns1-coo get pod
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                                      READY     STATUS    RESTARTS   AGE
    prometheus-coo-example-app-0927545cb7-anskj   1/1       Running   0          81m
    Copy to Clipboard Toggle word wrap

要使用您在 "Deploying a sample service for Cluster Observability Operator" 部分创建的样本服务公开的指标,您必须将监控组件配置为从 /metrics 端点中提取指标。

您可以使用一个 ServiceMonitor 对象来创建此配置,指定如何监控该服务,或指定如何监控 pod 的 PodMonitor 对象。ServiceMonitor 对象需要一个 Service 对象。PodMonitor 对象不需要,它允许 MonitoringStack 对象直接从 Pod 公开的指标端点中提取指标。

此流程演示了如何在 ns1-coo 命名空间中为名为 prometheus-coo-example-app 的示例服务创建 ServiceMonitor 对象。

先决条件

  • 您可以使用具有 cluster-admin 集群角色或具有命名空间管理权限的用户身份访问集群。
  • 已安装 Cluster Observability Operator。
  • 您已在 ns1-coo 命名空间中部署了 prometheus-coo-example-app 示例服务。

    注意

    prometheus-coo-example-app 示例服务不支持 TLS 身份验证。

流程

  1. 创建名为 example-coo-app-service-monitor.yaml 的 YAML 文件,其中包含以下 ServiceMonitor 对象配置详情:

    apiVersion: monitoring.rhobs/v1
    kind: ServiceMonitor
    metadata:
      labels:
        k8s-app: prometheus-coo-example-monitor
      name: prometheus-coo-example-monitor
      namespace: ns1-coo
    spec:
      endpoints:
      - interval: 30s
        port: web
        scheme: http
      selector:
        matchLabels:
          app: prometheus-coo-example-app
    Copy to Clipboard Toggle word wrap

    此配置定义 MonitoringStack 对象将引用的 ServiceMonitor 对象,以提取由 prometheus-coo-example-app 示例服务公开的指标数据。

  2. 运行以下命令,将配置应用到集群:

    $ oc apply -f example-coo-app-service-monitor.yaml
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令并验证 ServiceMonitor 资源是否已创建并观察输出:

    $ oc -n ns1-coo get servicemonitors.monitoring.rhobs
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                         AGE
    prometheus-coo-example-monitor   81m
    Copy to Clipboard Toggle word wrap

要提取目标 prometheus-coo-example-app 服务公开的指标数据,请创建一个 MonitoringStack 对象,该对象引用您在"指定如何监控 Cluster Observability Operator"部分中创建的 ServiceMonitor 对象。然后,此 MonitoringStack 对象可以发现服务并从中提取公开的指标数据。

先决条件

  • 您可以使用具有 cluster-admin 集群角色或具有命名空间管理权限的用户身份访问集群。
  • 已安装 Cluster Observability Operator。
  • 您已在 ns1-coo 命名空间中部署了 prometheus-coo-example-app 示例服务。
  • 您已在 ns1-coo 命名空间中创建一个名为 prometheus-coo-example-monitorServiceMonitor 对象。

流程

  1. MonitoringStack 对象配置创建一个 YAML 文件。在本例中,将文件命名为 example-coo-monitoring-stack.yaml
  2. 添加以下 MonitoringStack 对象配置详情:

    MonitoringStack 对象示例

    apiVersion: monitoring.rhobs/v1alpha1
    kind: MonitoringStack
    metadata:
      name: example-coo-monitoring-stack
      namespace: ns1-coo
    spec:
      logLevel: debug
      retention: 1d
      resourceSelector:
        matchLabels:
          k8s-app: prometheus-coo-example-monitor
    Copy to Clipboard Toggle word wrap

  3. 运行以下命令来应用 MonitoringStack 对象:

    $ oc apply -f example-coo-monitoring-stack.yaml
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令并检查输出,验证 MonitoringStack 对象是否可用:

    $ oc -n ns1-coo get monitoringstack
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                         AGE
    example-coo-monitoring-stack   81m
    Copy to Clipboard Toggle word wrap

  5. 运行以下 comand,以从 Prometheus 检索有关活动目标的信息,并过滤输出以仅列出标有 app=prometheus-coo-example-app 的目标。这会验证被发现哪些目标,并由 Prometheus 使用这个特定标签主动监控。

    $ oc -n ns1-coo exec -c prometheus prometheus-example-coo-monitoring-stack-0 -- curl -s 'http://localhost:9090/api/v1/targets' | jq '.data.activeTargets[].discoveredLabels | select(.__meta_kubernetes_endpoints_label_app=="prometheus-coo-example-app")'
    Copy to Clipboard Toggle word wrap

    输出示例

    {
      "__address__": "10.129.2.25:8080",
      "__meta_kubernetes_endpoint_address_target_kind": "Pod",
      "__meta_kubernetes_endpoint_address_target_name": "prometheus-coo-example-app-5d8cd498c7-9j2gj",
      "__meta_kubernetes_endpoint_node_name": "ci-ln-8tt8vxb-72292-6cxjr-worker-a-wdfnz",
      "__meta_kubernetes_endpoint_port_name": "web",
      "__meta_kubernetes_endpoint_port_protocol": "TCP",
      "__meta_kubernetes_endpoint_ready": "true",
      "__meta_kubernetes_endpoints_annotation_endpoints_kubernetes_io_last_change_trigger_time": "2024-11-05T11:24:09Z",
      "__meta_kubernetes_endpoints_annotationpresent_endpoints_kubernetes_io_last_change_trigger_time": "true",
      "__meta_kubernetes_endpoints_label_app": "prometheus-coo-example-app",
      "__meta_kubernetes_endpoints_labelpresent_app": "true",
      "__meta_kubernetes_endpoints_name": "prometheus-coo-example-app",
      "__meta_kubernetes_namespace": "ns1-coo",
      "__meta_kubernetes_pod_annotation_k8s_ovn_org_pod_networks": "{\"default\":{\"ip_addresses\":[\"10.129.2.25/23\"],\"mac_address\":\"0a:58:0a:81:02:19\",\"gateway_ips\":[\"10.129.2.1\"],\"routes\":[{\"dest\":\"10.128.0.0/14\",\"nextHop\":\"10.129.2.1\"},{\"dest\":\"172.30.0.0/16\",\"nextHop\":\"10.129.2.1\"},{\"dest\":\"100.64.0.0/16\",\"nextHop\":\"10.129.2.1\"}],\"ip_address\":\"10.129.2.25/23\",\"gateway_ip\":\"10.129.2.1\",\"role\":\"primary\"}}",
      "__meta_kubernetes_pod_annotation_k8s_v1_cni_cncf_io_network_status": "[{\n    \"name\": \"ovn-kubernetes\",\n    \"interface\": \"eth0\",\n    \"ips\": [\n        \"10.129.2.25\"\n    ],\n    \"mac\": \"0a:58:0a:81:02:19\",\n    \"default\": true,\n    \"dns\": {}\n}]",
      "__meta_kubernetes_pod_annotation_openshift_io_scc": "restricted-v2",
      "__meta_kubernetes_pod_annotation_seccomp_security_alpha_kubernetes_io_pod": "runtime/default",
      "__meta_kubernetes_pod_annotationpresent_k8s_ovn_org_pod_networks": "true",
      "__meta_kubernetes_pod_annotationpresent_k8s_v1_cni_cncf_io_network_status": "true",
      "__meta_kubernetes_pod_annotationpresent_openshift_io_scc": "true",
      "__meta_kubernetes_pod_annotationpresent_seccomp_security_alpha_kubernetes_io_pod": "true",
      "__meta_kubernetes_pod_controller_kind": "ReplicaSet",
      "__meta_kubernetes_pod_controller_name": "prometheus-coo-example-app-5d8cd498c7",
      "__meta_kubernetes_pod_host_ip": "10.0.128.2",
      "__meta_kubernetes_pod_ip": "10.129.2.25",
      "__meta_kubernetes_pod_label_app": "prometheus-coo-example-app",
      "__meta_kubernetes_pod_label_pod_template_hash": "5d8cd498c7",
      "__meta_kubernetes_pod_labelpresent_app": "true",
      "__meta_kubernetes_pod_labelpresent_pod_template_hash": "true",
      "__meta_kubernetes_pod_name": "prometheus-coo-example-app-5d8cd498c7-9j2gj",
      "__meta_kubernetes_pod_node_name": "ci-ln-8tt8vxb-72292-6cxjr-worker-a-wdfnz",
      "__meta_kubernetes_pod_phase": "Running",
      "__meta_kubernetes_pod_ready": "true",
      "__meta_kubernetes_pod_uid": "054c11b6-9a76-4827-a860-47f3a4596871",
      "__meta_kubernetes_service_label_app": "prometheus-coo-example-app",
      "__meta_kubernetes_service_labelpresent_app": "true",
      "__meta_kubernetes_service_name": "prometheus-coo-example-app",
      "__metrics_path__": "/metrics",
      "__scheme__": "http",
      "__scrape_interval__": "30s",
      "__scrape_timeout__": "10s",
      "job": "serviceMonitor/ns1-coo/prometheus-coo-example-monitor/0"
    }
    Copy to Clipboard Toggle word wrap

    注意

    上面的示例使用 jq 命令行 JSON 处理器来格式化输出,以方便使用。

4.4. 验证监控堆栈

要验证监控堆栈是否正常工作,请访问 example 服务,然后查看收集的指标。

先决条件

  • 您可以使用具有 cluster-admin 集群角色或具有命名空间管理权限的用户身份访问集群。
  • 已安装 Cluster Observability Operator。
  • 您已在 ns1-coo 命名空间中部署了 prometheus-coo-example-app 示例服务。
  • 您已在 ns1-coo 命名空间中创建一个名为 prometheus-coo-example-monitorServiceMonitor 对象。
  • 您已在 ns1-coo 命名空间中创建一个名为 example-coo-monitoring-stackMonitoringStack 对象。

流程

  1. 创建一个路由,以公开 prometheus-coo-example-app 服务示例。在终端中运行以下命令:

    $ oc expose svc prometheus-coo-example-app -n ns1-coo
    Copy to Clipboard Toggle word wrap
  2. 从浏览器或命令行访问路由,以生成指标。
  3. 在 Prometheus pod 上执行查询,以返回总 HTTP 请求指标:

    $ oc -n ns1-coo exec -c prometheus prometheus-example-coo-monitoring-stack-0 -- curl -s 'http://localhost:9090/api/v1/query?query=http_requests_total'
    Copy to Clipboard Toggle word wrap

    输出示例(为方便起见使用 jq 进行格式化)

    {
      "status": "success",
      "data": {
        "resultType": "vector",
        "result": [
          {
            "metric": {
              "__name__": "http_requests_total",
              "code": "200",
              "endpoint": "web",
              "instance": "10.129.2.25:8080",
              "job": "prometheus-coo-example-app",
              "method": "get",
              "namespace": "ns1-coo",
              "pod": "prometheus-coo-example-app-5d8cd498c7-9j2gj",
              "service": "prometheus-coo-example-app"
            },
            "value": [
              1730807483.632,
              "3"
            ]
          },
          {
            "metric": {
              "__name__": "http_requests_total",
              "code": "404",
              "endpoint": "web",
              "instance": "10.129.2.25:8080",
              "job": "prometheus-coo-example-app",
              "method": "get",
              "namespace": "ns1-coo",
              "pod": "prometheus-coo-example-app-5d8cd498c7-9j2gj",
              "service": "prometheus-coo-example-app"
            },
            "value": [
              1730807483.632,
              "0"
            ]
          }
        ]
      }
    }
    Copy to Clipboard Toggle word wrap

4.5. 在多个命名空间中 Scrape 目标

要在多个命名空间中 Scrape 目标,请在 MonitoringStack 对象中设置命名空间和资源选择器。

先决条件

  • 您可以使用具有 cluster-admin 集群角色或具有命名空间管理权限的用户身份访问集群。
  • 已安装 Cluster Observability Operator。

流程

  1. 部署以下命名空间对象和 MonitoringStack YAML 文件:

    MonitoringStack 示例

    apiVersion: v1
    kind: Namespace
    metadata:
      name: ns1-coo
      labels:
        monitoring.rhobs/stack: multi-ns
    ---
    apiVersion: monitoring.rhobs/v1alpha1
    kind: MonitoringStack
    metadata:
      name: example-coo-monitoring-stack
      namespace: ns1-coo
    spec:
      logLevel: debug
      retention: 1d
      resourceSelector:
          matchLabels:
            k8s-app: prometheus-coo-example-monitor
      namespaceSelector:
          matchLabels:
            monitoring.rhobs/stack: multi-ns
    Copy to Clipboard Toggle word wrap

  2. 在命名空间 ns1-coo 中部署示例应用程序,其中包含始终会触发的警报:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: prometheus-coo-example-app
      name: prometheus-coo-example-app
      namespace: ns1-coo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: prometheus-coo-example-app
      template:
        metadata:
          labels:
            app: prometheus-coo-example-app
        spec:
          containers:
          - image: ghcr.io/rhobs/prometheus-example-app:0.4.2
            imagePullPolicy: IfNotPresent
            name: prometheus-coo-example-app
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: prometheus-coo-example-app
      name: prometheus-coo-example-app
      namespace: ns1-coo
    spec:
      ports:
      - port: 8080
        protocol: TCP
        targetPort: 8080
        name: web
      selector:
        app: prometheus-coo-example-app
      type: ClusterIP
    ---
    apiVersion: monitoring.rhobs/v1
    kind: ServiceMonitor
    metadata:
      labels:
        k8s-app: prometheus-coo-example-monitor
      name: prometheus-coo-example-monitor
      namespace: ns1-coo
    spec:
      endpoints:
      - interval: 30s
        port: web
        scheme: http
      selector:
        matchLabels:
          app: prometheus-coo-example-app
    ---
    apiVersion: monitoring.rhobs/v1
    kind: PrometheusRule
    metadata:
      name: example-alert
      namespace: ns1-coo
      labels:
        k8s-app: prometheus-coo-example-monitor
    spec:
      groups:
      - name: example
        rules:
        - alert: VersionAlert
          for: 1m
          expr: version{job="prometheus-coo-example-app"} > 0
          labels:
            severity: warning
    Copy to Clipboard Toggle word wrap
  3. 在标有 monitoring.rhobs/stack: multi-ns 的另一个命名空间中部署相同的示例应用程序:

    apiVersion: v1
    kind: Namespace
    metadata:
      name: ns2-coo
      labels:
        monitoring.rhobs/stack: multi-ns
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: prometheus-coo-example-app
      name: prometheus-coo-example-app
      namespace: ns2-coo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: prometheus-coo-example-app
      template:
        metadata:
          labels:
            app: prometheus-coo-example-app
        spec:
          containers:
          - image: ghcr.io/rhobs/prometheus-example-app:0.4.2
            imagePullPolicy: IfNotPresent
            name: prometheus-coo-example-app
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: prometheus-coo-example-app
      name: prometheus-coo-example-app
      namespace: ns2-coo
    spec:
      ports:
      - port: 8080
        protocol: TCP
        targetPort: 8080
        name: web
      selector:
        app: prometheus-coo-example-app
      type: ClusterIP
    ---
    apiVersion: monitoring.rhobs/v1
    kind: ServiceMonitor
    metadata:
      labels:
        k8s-app: prometheus-coo-example-monitor
      name: prometheus-coo-example-monitor
      namespace: ns2-coo
    spec:
      endpoints:
      - interval: 30s
        port: web
        scheme: http
      selector:
        matchLabels:
          app: prometheus-coo-example-app
    Copy to Clipboard Toggle word wrap

验证

  1. 验证 Prometheus 实例是否已添加新目标,以及警报是否已触发。使用 port-forward 命令公开 Prometheus 或 Monitoringstack 实例部署的 Alertmanager 用户界面。

    Prometheus

    $ oc port-forward -n ns1-coo pod/prometheus-example-coo-monitoring-stack-0 9090
    Copy to Clipboard Toggle word wrap

    Alertmanager

    $ oc port-forward -n ns1-coo pod/alertmanager-example-coo-monitoring-stack-0 9093
    Copy to Clipboard Toggle word wrap

  2. 通过浏览 http://localhost:9090/targetshttp://localhost:9093/#/alerts 来验证目标是否已被 scrape。

第 5 章 Observability UI 插件

5.1. Observability UI 插件概述

您可以使用 Cluster Observability Operator (COO) 来安装和管理 UI 插件,以增强 OpenShift Container Platform Web 控制台的可观察性功能。该插件扩展默认功能,提供新的 UI 功能,用于故障排除、分布式追踪和集群日志记录。

5.1.1. 监控

监控 UI 插件为 Advance Cluster Management (ACM) 视角在 OpenShift Web 控制台中添加监控相关的 UI 功能。

  • ACM : Cluster Observability Operator (COO) 中的监控插件允许它在 Red Hat Advanced Cluster Management (RHACM) 环境中使用,为 ACM 提供与 OpenShift Container Platform 相同的监控功能。

如需更多信息,请参阅监控 UI 插件页。

5.1.2. 集群日志记录

日志记录 UI 插件在 ObserveLogs 页的 web 控制台中提供日志数据。您可以指定过滤器、查询、时间范围和刷新率。结果显示折叠日志列表,然后扩展以显示每个日志的详细信息。

如需更多信息,请参阅日志记录 UI 插件页。

5.1.3. 故障排除

重要

Cluster Observability Operator 故障排除面板 UI 插件只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

OpenShift Container Platform 版本 4.16+ 的故障排除面板 UI 插件提供了可观察信号关联,由开源 Korrel8r 项目提供支持。您可以使用 ObserveAlerting 页中的故障排除面板在不同数据存储中轻松关联指标、日志、警报、网络流和其他可观察信号和资源。OpenShift Container Platform 版本 4.17+ 的用户可从 Application Launcher app launcher 访问故障排除 UI 面板。

Korrel8r 的输出显示为交互式节点图。当您点节点时,会使用该节点的具体信息自动重定向到对应的 web 控制台页,如指标、日志或 pod。

如需更多信息,请参阅 UI 插件故障排除页。

5.1.4. 分布式追踪

分布式追踪 UI 插件在 ObserveTraces 页的 web 控制台中添加与追踪相关的功能。您可以跟踪通过前端和微服务后端的请求,帮助您识别分布式系统中的代码错误和性能瓶颈。您可以选择在集群中运行的 TempoStackTempoMonolithic 多租户实例,并设置时间范围和查询来查看 trace 数据。

如需更多信息,请参阅分布式追踪 UI 插件页。

5.2. 监控 UI 插件

重要

Cluster Observability Operator 监控 UI 插件只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

监控 UI 插件将监控功能添加到 OpenShift Web 控制台的 Administrator 视角中。

  • RHACM: Cluster Observability Operator (COO) 中的监控插件允许它在 Red Hat Advanced Cluster Management (RHACM) 环境中使用,为 ACM 提供与 OpenShift Container Platform 相同的警报功能。您可以将插件配置为从 RHACM Alertmanager 后端获取警报。这可以通过协调 RHACM 和 OpenShift Container Platform 监控工作流来实现无缝集成和用户体验。

监控 UI 插件为 Advance Cluster Management (ACM) 视角在 OpenShift Web 控制台中添加监控相关的 UI 功能。

先决条件

  • 您可以使用具有 cluster-admin 集群角色的用户身份访问集群。
  • 已登陆到 OpenShift Container Platform Web 控制台。
  • 已安装 Cluster Observability Operator

流程

  1. 在 OpenShift Container Platform web 控制台中,点 OperatorsInstalled Operators 并选择 Cluster Observability Operator
  2. 选择 UI Plugin 选项卡(在选项卡列表的最右侧),然后按 Create UIPlugin
  3. 选择 YAML 视图,输入以下内容,然后按 Create

    apiVersion: observability.openshift.io/v1alpha1
    kind: UIPlugin
    metadata:
      name: monitoring
    spec:
      type: Monitoring
      monitoring:
        acm: 
    1
    
          enabled: true
          alertmanager:
            url: 'https://alertmanager.open-cluster-management-observability.svc:9095'
          thanosQuerier:
            url: 'https://rbac-query-proxy.open-cluster-management-observability.svc:8443'
    Copy to Clipboard Toggle word wrap
    1
    启用 RHACM 功能。您必须配置 Alertmanager 和 ThanosQuerier Service 端点。

5.3. Logging UI 插件

logging UI 插件会在 OpenShift Container Platform web 控制台的 ObserveLogs 页中显示日志数据。您可以指定过滤条件、查询、时间范围和刷新率,其结果显示为一个折叠的日志列表,您可以扩展它来显示每个日志的更多详细信息。

当您在 OpenShift Container Platform 版本 4.16+ 上部署 Troubleshooting UI 插件时,它会连接到 Korrel8r 服务,并添加来自 Administration 视角的直接链接(从 ObserveLogs 页添加到 ObserveMetrics 页并带有关联的 PromQL 查询)。它还会添加一个来自 Administration 视角警报详情 的 See Related Logs 链接(从 ObserveAlerting 添加到 ObserveLogs 页,并带有所选的相关过滤集。

插件的功能可以归类为:

dev-console
将日志记录视图添加到 Developer 视角。
alerts
将 Web 控制台警报与 Loki 规则器中定义的基于日志的警报合并。在警报详情视图中添加基于日志的指标图表。
dev-alerts
将 Web 控制台警报与 Loki 规则器中定义的基于日志的警报合并。在 Developer 视角的警报详情视图中添加基于日志的指标图。

对于 Cluster Observability Operator (COO) 版本,下表显示了对 OpenShift Container Platform 版本中的这些功能的支持信息:

Expand
COO 版本OCP 版本功能

0.3.0+

4.12

dev-console

0.3.0+

4.13

dev-console, alerts

0.3.0+

4.14+

dev-console, alerts, dev-alerts

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问集群。
  • 已登陆到 OpenShift Container Platform Web 控制台。
  • 已安装 Cluster Observability Operator。
  • 在集群中有一个 LokiStack 实例。

流程

  1. 在 OpenShift Container Platform web 控制台中,点 OperatorsInstalled Operators 并选择 Cluster Observability Operator。
  2. 选择 UI Plugin 选项卡(位于选项卡列表的最右侧),然后点 Create UIPlugin
  3. 选择 YAML 视图,输入以下内容,然后点 Create

    apiVersion: observability.openshift.io/v1alpha1
    kind: UIPlugin
    metadata:
      name: logging
    spec:
      type: Logging
      logging:
        lokiStack:
          name: logging-loki
        logsLimit: 50
        timeout: 30s
        schema: otel 
    1
    Copy to Clipboard Toggle word wrap
    1
    schemaotel, viaq, 或 select 之一。如果没有指定值,则默认为 viaq。在选择 select 时,您可以在运行查询时在 UI 中选择模式。
    注意

    日志记录 UI 插件的已知问题 - 如需更多信息,请参阅 OU-587

    • schema 功能只在 OpenShift Container Platform 4.15 及更新的版本中被支持。在早期版本的 OpenShift Container Platform 中,日志记录 UI 插件将仅使用 viaq 属性,忽略可能设置的任何其他值。
    • 非管理员用户无法使用带有 Red Hat OpenShift 版本 5.8 到 6.2 日志记录的 otel 属性查询日志。这个问题将在以后的日志记录发行版本中解决。(LOG-6589)
    • 在 Red Hat OpenShift 版本 5.9 中,未设置 severity_text Otel 属性。

5.4. 分布式追踪 UI 插件

分布式追踪 UI 插件将与追踪相关的功能添加到 OpenShift Web 控制台的 Administrator 视角中,位于 ObserveTraces。您可以跟踪通过前端和微服务后端的请求,帮助您识别分布式系统中的代码错误和性能瓶颈。

先决条件

  • 您可以使用具有 cluster-admin 集群角色的用户身份访问集群。
  • 已登陆到 OpenShift Container Platform Web 控制台。
  • 已安装 Cluster Observability Operator

流程

  1. 在 OpenShift Container Platform web 控制台中,点 OperatorsInstalled Operators 并选择 Cluster Observability Operator
  2. 选择 UI Plugin 选项卡(在选项卡列表的最右侧),然后按 Create UIPlugin
  3. 选择 YAML 视图,输入以下内容,然后按 Create

    apiVersion: observability.openshift.io/v1alpha1
    kind: UIPlugin
    metadata:
      name: distributed-tracing
    spec:
      type: DistributedTracing
    Copy to Clipboard Toggle word wrap

先决条件

  • 您可以使用具有 cluster-admin 集群角色的用户身份访问集群。
  • 已登陆到 OpenShift Container Platform Web 控制台。
  • 已安装 Cluster Observability Operator。
  • 已安装 Cluster Observability Operator distributed tracing UI 插件。
  • 在集群中有一个 TempoStackTempoMonolithic 多租户实例。

流程

  1. 在 OpenShift Container Platform Web 控制台的 Administrator 视角中,点 ObserveTraces
  2. 选择 TempoStackTempoMonolithic 多租户实例,并为要加载的 trace 设置时间范围和查询。

    trace 显示在 scatter-plot 中,显示 trace 开始时间、持续时间和 span 数量。在 scatter 图表下,有一个跟踪列表,显示 Trace NameSpans 的数量和 Duration 等信息。

  3. 点一个 trace 名称链接。

    所选 trace 的 trace 详情页包括了 trace 中所有范围的 Gantt 图表。选择一个 span 来显示配置的属性的分类。

5.5. UI 插件故障排除

重要

Cluster Observability Operator 故障排除面板 UI 插件只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

OpenShift Container Platform 版本 4.16+ 的故障排除 UI 插件提供可观察信号关联,由开源 Korrel8r 项目提供支持。使用 ObserveAlerting 下的故障排除面板,您可以在不同的数据存储中轻松关联指标、日志、警报、网络流和其他可观察信号和资源。OpenShift Container Platform 版本 4.17+ 的用户可从 Application Launcher app launcher 访问故障排除 UI 面板。

当您安装故障排除 UI 插件时,名为 korrel8rKorrel8r 服务会部署到同一命名空间中,并且能够从其关联引擎中查找相关的可观察信号和 Kubernetes 资源。

Korrel8r 的输出以 OpenShift Container Platform Web 控制台中的交互式节点图的形式显示。图中的节点代表资源类型或信号,而边缘代表关系。当您点节点时,会使用该节点的具体信息自动重定向到对应的 web 控制台页,如指标、日志或 pod。

先决条件

  • 您可以使用具有 cluster-admin 集群角色的用户身份访问集群。
  • 已登陆到 OpenShift Container Platform Web 控制台。
  • 已安装 Cluster Observability Operator

流程

  1. 在 OpenShift Container Platform web 控制台中,点 OperatorsInstalled Operators 并选择 Cluster Observability Operator
  2. 选择 UI Plugin 选项卡(在选项卡列表的最右侧),然后按 Create UIPlugin
  3. 选择 YAML 视图,输入以下内容,然后按 Create

    apiVersion: observability.openshift.io/v1alpha1
    kind: UIPlugin
    metadata:
      name: troubleshooting-panel
    spec:
      type: TroubleshootingPanel
    Copy to Clipboard Toggle word wrap

先决条件

  • 您可以使用具有 cluster-admin 集群角色的用户身份访问 OpenShift Container Platform 集群。如果集群版本是 4.17+,您可以从 Application Launcher app launcher 访问 UI 面板。
  • 已登陆到 OpenShift Container Platform Web 控制台。
  • 已安装 OpenShift Container Platform Logging,如果要视觉化关联的日志。
  • 已安装 OpenShift Container Platform Network Observability,如果要视觉化关联的 netflows。
  • 已安装 Cluster Observability Operator。
  • 已安装 Cluster Observability Operator 故障排除 UI 插件。

    注意

    故障排除面板依赖于集群中安装的可观察信号存储。Kuberenetes 资源、警报和指标在 OpenShift Container Platform 集群中始终可用。其他信号类型需要安装可选组件:

    • Logs: 由红帽提供的 Red Hat Openshift Logging (集合)和 Loki Operator (存储)
    • Network events: 红帽提供的网络可观察性(集合)和 Loki Operator (存储)

    流程

    1. 在 Web 控制台的 admin 视角中,进入到 ObserveAlerting,然后选择警报。如果警报关联了项目,则会在警报详情页的图表上方显示 Troubleshooting Panel 链接。

      Troubleshooting Panel 链接以显示面板。

    2. 面板由查询详情和查询结果的拓扑图组成。所选警报转换为 Korrel8r 查询字符串,并发送到 korrel8r 服务。结果显示为一个连接了返回的信号和资源的图形网络。这是一个 neighbourhood 图形,从当前资源开始,包括了从起点开始的 3 个步骤的相关对象。点图中的节点会进入相应的 web 控制台页面。
    3. 您可以使用故障排除面板查找与所选警报相关的资源。

      注意

      点某个节点有时可能会显示比图形上指示要少的结果。这是一个已知问题,将在以后的发行版本中解决。

      1. Alert (1): 此节点是图中的起点,代表 web 控制台中显示的 KubeContainerWaiting 警报。
      2. Pod (1): 此节点表示与此警报关联的单个 Pod 资源。点此节点将打开控制台搜索,直接显示相关的 pod。
      3. Event (2): 与 pod 关联的两个 Kuberenetes 事件。点此节点查看事件。
      4. Logs (74): 此 pod 具有 74 行日志,您可以通过点这个节点来访问这些日志。
      5. Metrics (105): 与 pod 关联的多个指标。
      6. Network (6): 网络事件,代表 pod 通过网络进行通信。图中的其余节点代表 pod 与其进行通信的 Service, DeploymentDaemonSet 资源。
      7. Focus:点此按钮更新图形。默认情况下,当您点图形中的节点时,图形本身不会改变。相反,主 Web 控制台页会改变,然后使用页面上的链接导航到其他资源,而故障排除面板本身则保持打开且没有变化。要强制更新故障排除面板中的图形,请点 Focus。这将使用 web 控制台中的当前资源作为起点来绘制新的图形。
      8. Show Query: 点这个按钮启用一些实验性功能:

        1. Hide Query 隐藏实验性功能。
        2. 标识图形起点的查询。查询语言是用于创建图形的 Korrel8r 关联引擎的一部分,是实验性的,可能会在以后有所变化。该查询由 Focus 按钮更新,以对应于主 Web 控制台窗口中的资源。
        3. Neighbourhood depth 用于显示一个较小的或较大的邻居。

          注意

          在大型集群中设置较大的值可能会因为结果太大导致查询失败。

        4. 目标类 会导致目标定向搜索而不是邻居搜索。目标定向搜索显示从起点到目标类的所有路径,该类表示资源类型或信号。目标类的格式是实验性的,可能会改变。当前,以下目标有效:

          • k8s:RESOURCE[VERSION.[GROUP]] 识别 kuberenetes 资源的 kind。例如 k8s:Podk8s:Deployment.apps.v1
          • alert:alert 代表任何警报。
          • metric:metric 代表任何指标。
          • netflow:network 代表任何网络可观察网络事件。
          • log:LOG_TYPE 代表存储的日志,其中 LOG_TYPE 需要是 application, infrastructureaudit 之一。

5.5.3. 创建示例警报

要触发警报作为在故障排除 UI 面板中使用的起点,您可以有意部署一个有配置错误的容器。

流程

  1. 使用以下 YAML (通过命令行或在 web 控制台中),在系统命名空间中创建一个有问题的部署:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: bad-deployment
      namespace: default 
    1
    
    spec:
      selector:
        matchLabels:
          app: bad-deployment
      template:
        metadata:
          labels:
            app: bad-deployment
        spec:
          containers: 
    2
    
          - name: bad-deployment
            image: quay.io/openshift-logging/vector:5.8
    Copy to Clipboard Toggle word wrap
    1
    部署必须位于一个系统命名空间中(如 default)才能造成所需的警报。
    2
    这个容器会有意尝试启动一个没有配置文件的 vector 服务器。服务器会记录一些消息,然后退出并显示错误。或者,您可以部署一个有配置错误的容器,使它触发警报。
  2. 查看警报:

    1. ObserveAlerting,再点 clear all filters。查看 Pending 警报。

      重要

      警报先显示为 Pending 状态。它们不会立即开始 Firing,而是在容器崩溃一段时间后才会启动 。您可以直接查看 Pending 警报,这样就无需等待很长时间才能看到它们。

    2. 选择 KubeContainerWaitingKubePodCrashLoopingKubePodNotReady 警报之一,然后点链接打开故障排除面板。或者,如果面板已经打开,点 "Focus" 按钮来更新图形。

第 6 章 监控 API 参考

资源类型是 MonitoringStackThanosQuerier

6.1. MonitoringStack

MonitoringStack 是 monitoringstacks API 的 Schema。

Expand
Name类型描述必填

apiVersion

string

monitoring.rhobs/v1alpha1

true

kind

string

MonitoringStack

true

metadata

object

有关 metadata 字段中的字段,请参阅 Kubernetes API 文档。

true

spec

object

MonitoringStackSpec 是所需 MonitoringStack 对象的规格。

true

status

object

MonitoringStackStatus 定义 MonitoringStack 对象的观察状态。它应该始终从集群和/或外界的状态重建。

false

6.2. MonitoringStack.spec

MonitoringStackSpec 是所需 MonitoringStack 对象的规格。

Expand
Name类型描述必填

alertmanagerConfig

object

定义 Alertmanager 配置。

默认:map[disabled:false]

false

logLevel

enum

设置配置的组件的日志级别。

Enum: debug, info, warn, error

默认info

false

namespaceSelector

object

MonitoringStack 资源的命名空间选择器。

  • 要监控所有内容,设置空映射选择器。例如,namespaceSelector: {}
  • 要监控创建 MonitoringStack 实例的命名空间中的资源,请设置为 null。例如,namespaceSelector:

false

nodeSelector

map[string]string

MonitoringStack Pod 定义节点选择器。

false

prometheusConfig

object

定义 prometheus 配置。

默认:map[replicas:2]

false

resourceSelector

object

MonitoringStack 资源的标签选择器。

  • 要监控所有内容,设置空映射选择器。例如,resourceSelector: {}
  • 要禁用服务发现,设置为 null。例如,resourceSelector:

false

资源

object

MonitoringStack Pod 定义资源请求和限值。

默认:map[limits:map[cpu:500m memory:512Mi] requests:map[cpu:100m memory:256Mi]]

false

保留

string

保留数据的时长。字符串必须与正则表达式 [0-9]+(ms|s|h|h|d|w|y) 匹配(毫秒秒分钟小时天周年)。

默认120h

false

容限(tolerations)

[]object

MonitoringStack pod 定义容限。

false

6.3. MonitoringStack.spec.alertmanagerConfig

定义 Alertmanager 配置。

Expand
Name类型描述必填

disabled

布尔值

禁用 Alertmanager 部署。

默认 :false

false

webTLSConfig

object

Alertmanager web 服务器配置 TLS 选项。

false

6.4. MonitoringStack.spec.alertmanagerConfig.webTLSConfig

Alertmanager web 服务器配置 TLS 选项。

Expand
Name类型描述必填

certificate

object

对 Web 服务器的 TLS 公共证书的引用。

true

certificateAuthority

object

引用用于验证 Web 服务器证书的 root 证书颁发机构。

true

privateKey

object

对 web 服务器的 TLS 私钥的引用。

true

对 Web 服务器的 TLS 公共证书的引用。

Expand
Name类型描述必填

key

字符串

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

要选择的对象命名空间中的 secret 名称。

true

引用用于验证 Web 服务器证书的 root 证书颁发机构。

Expand
Name类型描述必填

key

字符串

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

要选择的对象命名空间中的 secret 名称。

true

对 web 服务器的 TLS 私钥的引用。

Expand
Name类型描述必填

key

字符串

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

要选择的对象命名空间中的 secret 名称。

true

6.8. MonitoringStack.spec.namespaceSelector

MonitoringStack 资源的命名空间选择器。

  • 要监控所有内容,设置空映射选择器。例如,namespaceSelector: {}
  • 要监控创建 MonitoringStack 实例的命名空间中的资源,设置为 null。例如,namespaceSelector:
Expand
Name类型描述必填

matchExpressions

[]object

matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。

false

matchLabels

map[string]string

matchLabels 是 {key,value} 对的映射。matchLabels 映射中的单个 {key,value} 等同于 matchExpressions 的一个元素,其 key 字段是 "key",运算符是 "In",值数组仅包含 "value"。要求的逻辑关系是 AND。

false

标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。

Expand
Name类型描述必填

key

string

key 是选择器应用到的标签键。

true

operator

string

operator 代表一个键与一组值的关系。有效的运算符为 InNotInExistsDoesNotExist

true

values

[]string

values 是字符串值的数组。如果运算符是 InNotIn,则值数组必须是非空的。如果运算符是 ExistsDoesNotExist,则值数组必须为空。这个数组会在策略性合并补丁中被替换。

false

6.10. MonitoringStack.spec.prometheusConfig

定义 Prometheus 配置。

Expand
Name类型描述必填

enableOtlpHttpReceiver

布尔值

启用 Prometheus,以通过 otlp/http'protocol 接受 OpenTelemetry Metrics。默认为 'false 值。生成的端点为 /api/v1/otlp/v1/metrics

false

enableRemoteWriteReceiver

布尔值

启用 Prometheus 作为 Prometheus 远程写入协议的接收器。默认值为 false

false

externalLabels

map[string]string

为 Prometheus 定义 ExternalLabels

false

persistentVolumeClaim

object

为 Prometheus 定义持久性卷声明。

false

remoteWrite

[]object

为 Prometheus 定义远程写入。

false

replicas

整数

为 Prometheus 部署部署的副本数。

格式 :int32

默认 :2

最小: 0

false

scrapeInterval

string

提取之间的默认间隔。

false

webTLSConfig

object

为 Prometheus web 服务器配置 TLS 选项。

false

为 Prometheus 定义持久性卷声明。

Expand
Name类型描述必填

accessModes

[]string

accessModes 包含卷应具有所需的访问模式。如需更多信息,请参阅 Kubernetes 文档

false

dataSource

object

dataSource 字段可用于指定:

  • 一个现有的 VolumeSnapshot 对象 (snapshot.storage.k8s.io/VolumeSnapshot)
  • 一个现有的 PVC (PersistentVolumeClaim)

如果置备程序或外部控制器可以支持特定的数据源,它将根据指定数据源的内容创建新卷。

当启用 AnyVolumeDataSource 功能门时,dataSource 内容将复制到 dataSourceRef 中,如果未指定 dataSourceRef.namespacedataSourceRef 内容将复制到 dataSource 中。如果指定了命名空间,则不会将 dataSourceRef 复制到 dataSource 中。

false

dataSourceRef

object

如果需要非空卷,则 dataSourceRef 指定要使用数据填充卷的对象。这可以是来自非空 API 组(非核心对象)或 PersistentVolumeClaim 对象的任何对象。

当指定对象的类型与某些安装的卷填充或动态置备程序匹配时,卷绑定才会成功。此字段将替换 dataSource 字段的功能,如果两个字段都不是空的,则它们必须具有相同的值。

为了向后兼容,当没有在 dataSourceRef 中指定 namespace 时,如果其中一个项为空,另一个是非空的,则两个字段 (dataSourcedataSourceRef) 将自动设置为相同的值,。当在 dataSourceRef 中指定了 namespace 时,dataSource 不会设置为相同的值,且必须为空。

dataSourcedataSourceRef 之间有三个重要区别:

  • 虽然 dataSource 只允许两种特定类型的对象,但 dataSourceRef 允许任何 non-core 对象和 PersistentVolumeClaim 对象。
  • 虽然 dataSource 忽略了禁止的值(丢弃它们),dataSourceRef 保留所有值,并在指定禁止的值时生成错误。
  • 虽然 dataSource 只允许本地对象,但 dataSourceRef 允许任何命名空间中的对象。

Beta :使用此字段需要启用 AnyVolumeDataSource 功能门。

Alpha: 使用 dataSourceRef 的 namespace 字段需要启用 CrossNamespaceVolumeDataSource 功能门。

false

resources

object

resources 代表卷应具有的最小资源。

如果启用了 RecoverVolumeExpansionFailure 功能,用户可以指定小于之前值的资源要求,但仍必须高于声明的 status 字段中记录的容量。

如需更多信息,请参阅 Kubernetes 文档

false

selector

object

selector 是要考虑绑定的卷的标签查询。

false

storageClassName

string

storageClassName 是声明所需的 StorageClass 的名称。如需更多信息,请参阅 Kubernetes 文档

false

volumeAttributesClassName

string

volumeAttributesClassName 可用于设置此声明使用的 VolumeAttributesClass

如果指定,CSI 驱动程序将使用对应的 VolumeAttributesClass 中定义的属性创建或更新卷。这有一个不同于 storageClassName 的目的,可在创建声明后更改。空字符串表示,不会将 VolumeAttributesClass 应用到声明,但不允许在设置后将此字段重置为空字符串。

如果未指定,并且 PersistentVolumeClaim 为 unbound,则 persistentvolume 控制器将设置默认的 VolumeAttributesClass (如果存在)。如果 volumeAttributesClass 引用的资源不存在,则这个 PersistentVolumeClaim 将被设置为 Pending 状态,如 modifyVolumeStatus 字段反映,直到资源存在为止。

如需更多信息,请参阅 Kubernetes 文档

Beta: 使用此字段需要启用 VolumeAttributesClass 功能门(默认关闭)。

false

volumeMode

string

volumeMode 定义声明需要哪些卷类型。当未包含在 claim spec 中时,Filesystem 的值会被表示。

false

volumeName

string

volumeName 是对此声明支持的 PersistentVolume 的绑定引用。

false

dataSource 字段可用于指定:

  • 一个现有的 VolumeSnapshot 对象 (snapshot.storage.k8s.io/VolumeSnapshot)
  • 一个现有的 PVC (PersistentVolumeClaim)

如果置备程序或外部控制器可以支持特定的数据源,它将根据指定数据源的内容创建新卷。当启用 AnyVolumeDataSource 功能门时,dataSource 内容将复制到 dataSourceRef 中,如果未指定 dataSourceRef.namespacedataSourceRef 内容将复制到 dataSource 中。如果指定了命名空间,则不会将 dataSourceRef 复制到 dataSource 中。

Expand
Name类型描述必填

kind

string

kind 是被引用的资源类型

true

name

string

name 是被引用的资源的名称

true

apiGroup

string

apiGroup 是所引用资源的组。如果没有指定 apiGroup,则指定的 kind 必须位于 core API 组中。对于任何其他第三方类型,需要 apiGroup

false

如果需要非空卷,则 dataSourceRef 指定要使用数据填充卷的对象。这可以是来自非空 API 组(非核心对象)或 PersistentVolumeClaim 对象的任何对象。当指定对象的类型与某些安装的卷填充或动态置备程序匹配时,卷绑定才会成功。

此字段将替换 dataSource 字段的功能,如果两个字段都不是空的,则它们必须具有相同的值。为了向后兼容,当 namespace 没有在 dataSourceRef 中指定时,如果其中一个为空,则两个字段 (dataSourcedataSourceRef) 都会自动设置为相同的值,另一个是非空的。当在 dataSourceRef 中指定了 namespace 时,dataSource 不会设置为相同的值,且必须为空。

dataSourcedataSourceRef 之间有三个重要区别:

  • 虽然 dataSource 只允许两种特定类型的对象,但 dataSourceRef 允许任何 non-core 对象和 PersistentVolumeClaim 对象。
  • 虽然 dataSource 忽略了禁止的值(丢弃它们),dataSourceRef 保留所有值,并在指定禁止的值时生成错误。
  • 虽然 dataSource 只允许本地对象,但 dataSourceRef 允许任何命名空间中的对象。

Beta :使用此字段需要启用 AnyVolumeDataSource 功能门。

Alpha: 使用 dataSourceRef 的 namespace 字段需要启用 CrossNamespaceVolumeDataSource 功能门。

Expand
Name类型描述必填

kind

string

kind 是被引用的资源类型

true

name

string

name 是被引用的资源的名称

true

apiGroup

string

apiGroup 是所引用资源的组。

如果没有指定 apiGroup,则指定的 kind 必须位于 core API 组中。对于任何其他第三方类型,需要 apiGroup

false

namespace

string

namespace 是被引用的资源的命名空间。

请注意,当指定命名空间时,引用命名空间中需要一个 gateway.networking.k8s.io/ReferenceGrant 对象,以允许该命名空间的所有者接受引用。详情请查看 ReferenceGrant 文档。

Alpha: 此字段需要启用 CrossNamespaceVolumeDataSource 功能门。

false

resources 代表卷应具有的最小资源。

如果启用了 RecoverVolumeExpansionFailure 功能,用户可以指定小于之前值的资源要求,但仍必须高于声明的 status 字段中记录的容量。

如需更多信息,请参阅 Kubernetes 文档

Expand
Name类型描述必填

limits

map[string]int 或 string

Limits 描述了允许的最大计算资源量。

如需更多信息,请参阅 Kubernetes 文档

false

requests

map[string]int 或 string

Requests 描述了所需的最少计算资源。

如果容器省略了 Requests,则默认为 Limits(如果明确指定),否则默认为实现定义的值。Requests 不能超过 Limits

如需更多信息,请参阅 Kubernetes 文档

false

selector 是要考虑绑定的卷的标签查询。

Expand
Name类型描述必填

matchExpressions

[]object

matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。

false

matchLabels

map[string]string

matchLabels 是 {key,value} 对的映射。

matchLabels 映射中的单个 {key,value} 等同于 matchExpressions 的一个元素,其 key 字段是 "key",运算符是 "In",值数组仅包含 "value"。要求的逻辑关系是 AND。

false

标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。

Expand
Name类型描述必填

key

string

key 是选择器应用到的标签键。

true

operator

string

operator 代表一个键与一组值的关系。有效的运算符为 InNotInExistsDoesNotExist

true

values

[]string

values 是字符串值的数组。

如果运算符是 InNotIn,则值数组必须是非空的。如果运算符是 ExistsDoesNotExist,则值数组必须为空。这个数组会在策略性合并补丁中被替换。

false

RemoteWriteSpec 定义将示例从 Prometheus 写入远程端点的配置。

Expand
Name类型描述必填

url

string

将示例发送到的端点的 URL。

true

authorization

object

URL 的授权部分。

  • 它需要 Prometheus >= v2.26.0。
  • 无法同时设置 sigv4basicAuthoauth2azureAd

false

azureAd

object

用于 URL 的 AzureAD。

  • 它需要 Prometheus >= v2.45.0。
  • 不能与 authorization, basicAuth, oauth2, 或 sigv4 同时设置。

false

basicAuth

object

URL 的 BasicAuth 配置。

  • 无法同时设置 sigv4授权oauth2azureAd

false

bearerToken

string

警告:不应使用此字段,因为令牌值会以明文形式出现。首选使用 authorization

弃用:这会在以后的版本中删除。

false

bearerTokenFile

string

从中读取 URL 的 bearer 令牌的文件。

弃用:这会在以后的版本中删除。首选使用 authorization

false

enableHTTP2

布尔值

是否启用 HTTP2。

false

followRedirects

布尔值

配置 HTTP 请求是否遵循 HTTP 3xx 重定向。

它需要 Prometheus >= v2.26.0。

false

标头

map[string]string

要与每个远程写入请求一起发送的自定义 HTTP 标头。请注意,由 Prometheus 本身设置的标头无法覆盖。

它需要 Prometheus >= v2.25.0。

false

messageVersion

enum

Remote Write 消息的版本在写入端点时使用。

  • Version1.0 对应于 Remote Write 1.0 中引入的 prometheus.WriteRequest protobuf 信息。*Version2.0 对应于 Remote Write 2.0 中引入的 io.prometheus.write.v2.Request protobuf 消息。
  • 当选择了 Version2.0 时,Prometheus 会被自动配置为将提取的指标的元数据附加到 WAL。
  • 在设置此字段前,请咨询您的远程存储供应商支持哪些消息版本。
  • 它需要 Prometheus >= v2.54.0。

Enum: V1.0, V2.0

false

metadataConfig

object

metadataConfig 配置将一系列元数据发送到远程存储。

false

name

string

远程写入队列的名称,如果指定,它必须是唯一的。名称用于指标并登录以区分队列。

它需要 Prometheus >= v2.15.0。

false

noProxy

string

noProxy 是一个以逗号分隔的字符串,可以包含应该从代理中排除的 IP、CIDR 表示法或域名。IP 和域名可以包含端口号。

它需要 Prometheus >= v2.43.0 或 Alertmanager >= 0.25.0。

false

oauth2

object

URL 的 OAuth2 配置。

  • 它需要 Prometheus >= v2.27.0。
  • 不能与 sigv4, authorization, basicAuth, 或 azureAd 同时设置。

false

proxyConnectHeader

map[string][]object

ProxyConnectHeader (可选)指定在 CONNECT 请求期间发送到代理的标头。

它需要 Prometheus >= v2.43.0 或 Alertmanager >= 0.25.0。

false

proxyFromEnvironment

布尔值

是否使用环境变量 (HTTP_PROXYHTTPS_PROXYNO_PROXY) 定义的代理配置。

它需要 Prometheus >= v2.43.0 或 Alertmanager >= 0.25.0。

false

proxyUrl

string

proxyURL 定义要使用的 HTTP 代理服务器。

false

queueConfig

object

QueueConfig 允许调整远程写入队列参数。

false

remoteTimeout

string

对远程写入端点的请求超时。

false

sendExemplars

布尔值

启用通过远程写入发送 exemplars。请注意,必须使用 spec.enableFeatures 选项启用 exemplar-storage 本身,以便在第一个位置提取 exemplars 选项。

它需要 Prometheus >= v2.27.0。

false

sendNativeHistograms

布尔值

启用发送原生直方图,也称为通过远程写入的稀疏直方图。

它需要 Prometheus >= v2.40.0。

false

sigv4

object

Sigv4 允许为 URL 配置 AWS 的 Signature Verification 4。

  • 它需要 Prometheus >= v2.26.0。
  • 不能与 authorization, basicAuth, oauth2, 或 azureAd 同时设置。

false

tlsConfig

object

用于 URL 的 TLS 配置。

false

writeRelabelConfigs

[]object

远程写入重新标记配置的列表。

false

URL 的授权部分。

  • 它需要 Prometheus >= v2.26.0。
  • 无法同时设置 sigv4basicAuthoauth2azureAd
Expand
Name类型描述必填

credentials

object

选择命名空间中包含用于身份验证的凭证的 Secret 的键。

false

credentialsFile

string

从中读取 secret 的文件,与 credentials 是相互排斥的。

false

type

string

定义身份验证类型。该值不区分大小写。

"Basic" 是不支持的值。

默认:"Bearer"

false

选择命名空间中包含用于身份验证的凭证的 Secret 的键。

Expand
Name类型描述必填

key

string

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 Secret 或其密钥

false

用于 URL 的 AzureAD。

  • 它需要 Prometheus >= v2.45.0。
  • 不能与 authorization, basicAuth, oauth2, 或 sigv4 同时设置。
Expand
Name类型描述必填

cloud

enum

Azure Cloud。选项为 'AzurePublic'、'AzureChina' 或 'AzureGovernment'。

Enum:AzureChina,AzureGovernment,AzurePublic

false

managedIdentity

object

ManagedIdentity 定义 Azure User-assigned Managed 身份。不能与 oauthsdk 同时设置。

false

oauth

object

OAuth 定义用于验证的 oauth 配置。

  • 不可与 managedIdentitysdk 同时设置。
  • 它需要 Prometheus >= v2.48.0。

false

sdk

object

SDK 定义用于验证的 Azure SDK 配置。请参阅 Azure SDK 身份验证

  • 不可与 oauthmanagedIdentity 同时设置。
  • 它需要 Prometheus >= 2.52.0。

false

ManagedIdentity 定义 Azure User-assigned Managed 身份。

  • 不能与 oauthsdk 同时设置。
Expand
Name类型描述必填

clientId

string

客户端 ID

true

OAuth 定义用于验证的 oauth 配置。

  • 不可与 managedIdentitysdk 同时设置。
  • 它需要 Prometheus >= v2.48.0。
Expand
Name类型描述必填

clientId

string

clientID 是用于身份验证的 Azure Active Directory 应用程序的 clientId。

true

clientSecret

object

clientSecret 指定包含用于身份验证的 Azure Active Directory 应用程序的客户端 secret 的 Secret 密钥。

true

tenantId

string

tenantId 是用于身份验证的 Azure Active Directory 应用程序的租户 ID。

true

clientSecret 指定包含用于身份验证的 Azure Active Directory 应用程序的客户端 secret 的 Secret 密钥。

Expand
Name类型描述必填

key

字符串

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 Secret 或其密钥

false

SDK 定义用于验证的 Azure SDK 配置。

如需更多信息,请参阅 Azure SDK 身份验证

  • 不可与 oauthmanagedIdentity 同时设置。
  • 它需要 Prometheus >= 2.52.0。
Expand
Name类型描述必填

tenantId

string

tenantId 是要进行身份验证的 azure 活跃目录应用程序的租户 ID。

false

URL 的 BasicAuth 配置。

  • 不能同时设置 sigv4authorizationoauth2azureAd
Expand
Name类型描述必填

password

object

password 指定包含用于身份验证的密码的 Secret 的键。

false

username

object

username 指定包含用于身份验证的用户名的 Secret 的键。

false

password 指定包含用于身份验证的密码的 Secret 的键。

Expand
Name类型描述必填

key

string

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 Secret 或其密钥

false

username 指定包含用于身份验证的用户名的 Secret 的键。

Expand
Name类型描述必填

key

string

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 Secret 或其密钥

false

metadataConfig 配置将一系列元数据发送到远程存储。

Expand
Name类型描述必填

send

布尔值

定义是否将指标元数据发送到远程存储。

false

sendInterval

string

定义如何将指标元数据发送到远程存储的频率。

false

URL 的 OAuth2 配置。

  • 它需要 Prometheus >= v2.27.0。
  • 不能与 sigv4, authorization, basicAuth, 或 azureAd 同时设置。
Expand
Name类型描述必填

clientId

object

clientId 指定包含 OAuth2 客户端 ID 的 Secret 或 ConfigMap 对象的键。

true

clientSecret

object

clientSecret 指定包含 OAuth2 客户端 secret 的 Secret 的密钥。

true

tokenUrl

string

tokenURL 配置用于从中获取令牌的 URL。

true

endpointParams

map[string]string

endpointParams 配置 HTTP 参数以附加到令牌 URL。

false

noProxy

string

noProxy 是一个以逗号分隔的字符串,可以包含应该从代理中排除的 IP、CIDR 表示法或域名。IP 和域名可以包含端口号。

它需要 Prometheus >= v2.43.0 或 Alertmanager >= 0.25.0。

false

proxyConnectHeader

map[string][]object

ProxyConnectHeader (可选)指定在 CONNECT 请求期间发送到代理的标头。

它需要 Prometheus >= v2.43.0 或 Alertmanager >= 0.25.0。

false

proxyFromEnvironment

布尔值

是否使用环境变量 (HTTP_PROXYHTTPS_PROXYNO_PROXY) 定义的代理配置。

它需要 Prometheus >= v2.43.0 或 Alertmanager >= 0.25.0。

false

proxyUrl

string

proxyURL 定义要使用的 HTTP 代理服务器。

false

scopes

[]string

scopes 定义用于令牌请求的 OAuth2 范围。

false

tlsConfig

object

连接到 OAuth2 服务器时要使用的 TLS 配置。

它需要 Prometheus >= v2.43.0。

false

clientId 指定包含 OAuth2 客户端 ID 的 Secret 或 ConfigMap 的键。

Expand
Name类型描述必填

configMap

object

包含用于目标的数据的 ConfigMap。

false

secret

object

包含用于目标的数据的 secret。

false

包含用于目标的数据的 ConfigMap。

Expand
Name类型描述必填

key

string

要选择的密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 ConfigMap 或是其键

false

包含用于目标的数据的 secret。

Expand
Name类型描述必填

key

字符串

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 Secret 或其密钥

false

clientSecret 指定包含 OAuth2 客户端 secret 的 Secret 的密钥。

Expand
Name类型描述必填

key

字符串

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 Secret 或其密钥

false

SecretKeySelector 选择 Secret 的密钥。

Expand
Name类型描述必填

key

字符串

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 Secret 或其密钥

false

连接到 OAuth2 服务器时要使用的 TLS 配置。

  • 它需要 Prometheus >= v2.43.0。
Expand
Name类型描述必填

ca

object

验证服务器证书时使用的证书颁发机构。

false

cert

object

执行 client-authentication 时要出现的客户端证书。

false

insecureSkipVerify

布尔值

禁用目标证书验证。

false

keySecret

object

包含目标客户端密钥文件的 secret。

false

maxVersion

enum

最大可接受的 TLS 版本。

它需要 Prometheus >= v2.41.0。

Enum: TLS10, TLS11, TLS12, TLS13

false

minVersion

enum

最低可接受的 TLS 版本。

它需要 Prometheus >= v2.35.0。

Enum: TLS10, TLS11, TLS12, TLS13

false

serverName

string

用于验证目标的主机名。

false

验证服务器证书时使用的证书颁发机构。

Expand
Name类型描述必填

configMap

object

包含用于目标的数据的 ConfigMap。

false

secret

object

包含用于目标的数据的 secret。

false

包含用于目标的数据的 ConfigMap。

Expand
Name类型描述必填

key

string

要选择的密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 ConfigMap 或是其键

false

包含用于目标的数据的 secret。

Expand
Name类型描述必填

key

字符串

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 Secret 或其密钥

false

执行 client-authentication 时要出现的客户端证书。

Expand
Name类型描述必填

configMap

object

包含用于目标的数据的 ConfigMap。

false

secret

object

包含用于目标的数据的 secret。

false

包含用于目标的数据的 ConfigMap。

Expand
Name类型描述必填

key

string

要选择的密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 ConfigMap 或是其键

false

包含用于目标的数据的 secret。

Expand
Name类型描述必填

key

字符串

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 Secret 或其密钥

false

包含目标客户端密钥文件的 secret。

Expand
Name类型描述必填

key

字符串

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 Secret 或其密钥

false

SecretKeySelector 选择 Secret 的密钥。

Expand
Name类型描述必填

key

字符串

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 Secret 或其密钥

false

QueueConfig 允许调整远程写入队列参数。

Expand
Name类型描述必填

batchSendDeadline

string

BatchSendDeadline 是示例在缓冲中等待的最长时间。

false

capacity

整数

Capacity 是在我们开始丢弃前每个分片缓冲的示例数量。

false

maxBackoff

string

MaxBackoff 是最大重试延迟。

false

maxRetries

整数

MaxRetries 是可在可恢复错误时重试批处理的次数上限。

false

maxSamplesPerSend

整数

MaxSamplesPerSend 是每个发送的最大示例数。

false

maxShards

整数

MaxShards 是分片的最大数量,即并发数量。

false

minBackoff

string

MinBackoff 是初始重试延迟。每次重试都会加倍。

false

minShards

整数

MinShards 是最小分片数量,即并发数量。

false

retryOnRateLimit

布尔值

从远程写入存储中接收到 429 状态代码时重试。

这是一个 实验性功能,它可能会以中断的方式改变任何即将推出的版本。

false

sampleAgeLimit

string

SampleAgeLimit 丢弃超过限制的示例。

它需要 Prometheus >= v2.50.0。

false

Sigv4 允许为 URL 配置 AWS 的 Signature Verification 4。

  • 它需要 Prometheus >= v2.26.0。
  • 不能与 authorization, basicAuth, oauth2, 或 azureAd 同时设置。
Expand
Name类型描述必填

accessKey

object

AccessKey 是 AWS API 密钥。如果没有指定,则使用环境变量 AWS_ACCESS_KEY_ID

false

配置集

string

Profile 是用来进行身份验证的命名 AWS 配置集。

false

region

string

Region 是 AWS 区域。如果为空,则使用默认凭证链中的区域。

false

roleArn

string

RoleArn 是用来进行身份验证的 AWS 配置集。

false

secretKey

object

SecretKey 是 AWS API secret。如果没有指定,则使用环境变量 AWS_SECRET_ACCESS_KEY

false

AccessKey 是 AWS API 密钥。如果没有指定,则使用环境变量 AWS_ACCESS_KEY_ID

Expand
Name类型描述必填

key

字符串

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 Secret 或其密钥

false

SecretKey 是 AWS API secret。如果没有指定,则使用环境变量 AWS_SECRET_ACCESS_KEY

Expand
Name类型描述必填

key

string

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 Secret 或其密钥

false

用于 URL 的 TLS 配置。

Expand
Name类型描述必填

ca

object

验证服务器证书时使用的证书颁发机构。

false

caFile

string

Prometheus 容器中用于目标的 CA 证书的路径。

false

cert

object

执行 client-authentication 时要出现的客户端证书。

false

certFile

string

目标的 Prometheus 容器中客户端证书文件的路径。

false

insecureSkipVerify

布尔值

禁用目标证书验证。

false

keyFile

string

目标的 Prometheus 容器中客户端密钥文件的路径。

false

keySecret

object

包含目标客户端密钥文件的 secret。

false

maxVersion

enum

最大可接受的 TLS 版本。

它需要 Prometheus >= v2.41.0。

Enum: TLS10, TLS11, TLS12, TLS13

false

minVersion

enum

最低可接受的 TLS 版本。

它需要 Prometheus >= v2.35.0。

Enum: TLS10, TLS11, TLS12, TLS13

false

serverName

string

用于验证目标的主机名。

false

验证服务器证书时使用的证书颁发机构。

Expand
Name类型描述必填

configMap

object

包含用于目标的数据的 ConfigMap。

false

secret

object

包含用于目标的数据的 secret。

false

包含用于目标的数据的 ConfigMap。

Expand
Name类型描述必填

key

string

要选择的密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 ConfigMap 或是其键

false

包含用于目标的数据的 secret。

Expand
Name类型描述必填

key

string

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 Secret 或其密钥

false

执行 client-authentication 时要出现的客户端证书。

Expand
Name类型描述必填

configMap

object

包含用于目标的数据的 ConfigMap。

false

secret

object

包含用于目标的数据的 secret。

false

包含用于目标的数据的 ConfigMap。

Expand
Name类型描述必填

key

string

要选择的密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 ConfigMap 或是其键

false

包含用于目标的数据的 secret。

Expand
Name类型描述必填

key

string

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 Secret 或其密钥

false

包含目标客户端密钥文件的 secret。

Expand
Name类型描述必填

key

string

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

引用的名称。需要此字段,但因为向后兼容的目的,它可以为空。具有空值的此类实例几乎肯定是错误的。

如需更多信息,请参阅 Kubernetes 文档

false

optional

布尔值

指定是否必须定义 Secret 或其密钥

false

RelabelConfig 允许为目标、警报、提取示例和远程写入示例动态重写标签。

如需更多信息,请参阅 Prometheus Docs

Expand
Name类型描述必填

action

enum

根据正则表达式匹配要执行的操作。

  • UppercaseLowercase 操作需要 Prometheus >= v2.36.0。
  • DropEqualKeepEqual 操作需要 Prometheus >= v2.41.0。

Enum: replace, Replace, keep, Keep, drop, Drop, hashmod, HashMod, labelmap, LabelMap, labeldrop, LabelDrop, labelkeep, LabelKeep, lowercase, Lowercase, uppercase, Uppercase, keepequal, KeepEqual, dropequal, DropEqual

默认replace

false

modulus

整数

modulus 采用 source 标签值的哈希。

仅在操作为 HashMod 时适用。

格式 :int64

false

regex

string

匹配提取值的正则表达式。

false

replacement

string

如果正则表达式匹配,则执行 replace 操作的替换值。

正则表达式捕获组可用。

false

separator

string

Separator 是串联的 SourceLabels 之间的字符串。

false

sourceLabels

[]string

source 标签从现有标签中选择值。其内容使用配置的 Separator 连接,并与配置的正则表达式匹配。

false

targetLabel

string

生成的字符串写入替换标签。

对于 Replace, HashMod, Lowercase, Uppercase, KeepEqualDropEqual 操作是必需的。

正则表达式捕获组可用。

false

6.57. MonitoringStack.spec.prometheusConfig.webTLSConfig

为 Prometheus web 服务器配置 TLS 选项。

Expand
Name类型描述必填

certificate

object

对 Web 服务器的 TLS 公共证书的引用。

true

certificateAuthority

object

引用用于验证 Web 服务器证书的 root 证书颁发机构。

true

privateKey

object

对 web 服务器的 TLS 私钥的引用。

true

对 Web 服务器的 TLS 公共证书的引用。

Expand
Name类型描述必填

key

string

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

要选择的对象命名空间中的 secret 名称。

true

引用用于验证 Web 服务器证书的 root 证书颁发机构。

Expand
Name类型描述必填

key

string

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

要选择的对象命名空间中的 secret 名称。

true

对 web 服务器的 TLS 私钥的引用。

Expand
Name类型描述必填

key

string

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

要选择的对象命名空间中的 secret 名称。

true

6.61. MonitoringStack.spec.resourceSelector

MonitoringStack 资源的标签选择器。

  • 要监控所有内容,设置空映射选择器。例如,resourceSelector: {}
  • 要禁用服务发现,设置为 null。例如,resourceSelector:
Expand
Name类型描述必填

matchExpressions

[]object

matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。

false

matchLabels

map[string]string

matchLabels 是 {key,value} 对的映射。matchLabels 映射中的单个 {key,value} 等同于 matchExpressions 的一个元素,其 key 字段是 "key",运算符是 "In",值数组仅包含 "value"。要求的逻辑关系是 AND。

false

标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。

Expand
Name类型描述必填

key

string

key 是选择器应用到的标签键。

true

operator

string

operator 代表一个键与一组值的关系。有效的运算符为 InNotInExistsDoesNotExist

true

values

[]string

values 是字符串值的数组。如果运算符是 InNotIn,则值数组必须是非空的。如果运算符是 ExistsDoesNotExist,则值数组必须为空。这个数组会在策略性合并补丁中被替换。

false

6.63. MonitoringStack.spec.resources

MonitoringStack Pod 定义资源请求和限值。

Expand
Name类型描述必填

claims

[]object

Claims 列出此容器使用的 spec.resourceClaims 中定义的资源名称。

这是一个 alpha 字段,需要启用 DynamicResourceAllocation 功能门。

此字段不可变。它只能为容器设置。

false

limits

map[string]int 或 string

Limits 描述了允许的最大计算资源量。

如需更多信息,请参阅 Kubernetes 文档

false

requests

map[string]int 或 string

Requests 描述了所需的最少计算资源。如果容器省略了 Requests,则默认为 Limits(如果明确指定),否则默认为实现定义的值。Requests 不能超过 Limits

如需更多信息,请参阅 Kubernetes 文档

false

6.64. MonitoringStack.spec.resources.claims[index]

ResourceClaim 引用 PodSpec.ResourceClaims 中的一个条目。

Expand
Name类型描述必需

name

string

Name 必须与使用此字段的 Pod 的 pod.spec.resourceClaims 中的一个条目的名称匹配。它允许容器内部使用该资源。

true

request

string

Request 是为引用的声明中的请求所选择的名称如果为空,则提供声明中的所有内容,否则仅提供此请求的结果。

false

6.65. MonitoringStack.spec.tolerations[index]

Toleration 附加到的 pod,它可以容限与 <key,value,effect> 匹配的任何污点(使用匹配 operator <operator>

Expand
Name类型描述必填

effect

string

Effect 代表要匹配的污点效果。空意味着匹配所有污点效果。指定后,允许的值为 NoSchedulePreferNoScheduleNoExecute

false

key

string

Key 是容限应用到的污点键。empty 表示与所有污点键匹配。如果键为空,则运算符必须是 Exists ;此组合意味着匹配所有值和所有键。

false

operator

string

Operator 代表键与值的关系。有效的运算符为 ExistsEqual。默认值为 EqualExists 等同于值的通配符,pod 可以容忍特定类别的所有污点。

false

tolerationSeconds

整数

TolerationSeconds 代表容限的期间(效果需要是 NoExecute,否则此字段将被忽略)可以容忍污点。默认情况下,它不会被设置,这意味着容许任何污点(不要驱除)。零值和负值将被视为 0 (立即删除)。

格式 :int64

false

value

string

value 是容限匹配的污点值。如果运算符是 Exists,则值应为空,否则仅是一个常规字符串。

false

6.66. MonitoringStack.status

MonitoringStackStatus 定义 MonitoringStack 实例的观察状态。它应该始终从集群和/或外界的状态重建。

Expand
Name类型描述必填

conditions

[]object

Conditions 提供有关 MonitoringStack 实例的状态信息。

true

6.67. MonitoringStack.status.conditions[index]

Expand
Name类型描述必填

lastTransitionTime

string

lastTransitionTime 是条件从一个状态转换到另一个状态最后一次的时间。这应该是底层条件变化的时间。如果为未知,则使用 API 字段更改的时间是可以接受的。

格式:date-time

true

message

string

message 是人类可读的消息,指示有关转换的详细信息。这可能是一个空字符串。

true

reason

string

reason 包含程序标识符,指示条件最后一次转换的原因。特定条件类型的制作者可能会定义预期的值和此字段的含义,以及这些值是否被视为有保证的 API。该值应该是 CamelCase 字符串。此字段可能不是空的。

true

status

enum

条件的状态

Enum: True, False, Unknown, Degraded

true

type

string

在 CamelCase 或在 foo.example.com/CamelCase 中的条件的 type。它匹配的正则表达式是 (dns1123SubdomainFmt/)?(qualifiedNameFmt)

true

observedGeneration

整数

observedGeneration 代表条件基于其设置的 .metadata.generation。例如,如果 .metadata.generation 目前为 12,但 .status.conditions[x].observedGeneration 是 9,则代表条件与实例的当前状态不同。

格式 :int64

最小: 0

false

6.68. ThanosQuerier

ThanosQuerier 概述了由此堆栈管理的 Thanos querier 组件

Expand
Name类型描述必填

apiVersion

string

monitoring.rhobs/v1alpha1

true

kind

string

ThanosQuerier

true

metadata

object

有关 metadata 字段中的字段,请参阅 Kubernetes API 文档。

true

spec

object

ThanosQuerierSpec 定义了一个单个的 Thanos Querier 实例。这意味着选择 MonitoringStack 实例要查询的标签选择器,以及可选的命名空间选择器和用于重复数据删除的副本标签列表。

false

status

object

ThanosQuerierStatus 定义了 ThanosQuerier 的观察状态。它应该始终从集群和/或外界的状态重建。

false

6.69. ThanosQuerier.spec

ThanosQuerierSpec 定义了一个单个的 Thanos Querier 实例。这意味着选择 MonitoringStack 实例要查询的标签选择器,以及可选的命名空间选择器和用于重复数据删除的副本标签列表。

Expand
Name类型描述必填

selector

object

选择要统一的监控堆栈的选择器。

true

namespaceSelector

object

选择要从中发现 MonitoringStack 对象的命名空间选择器。

false

replicaLabels

[]string

 

false

webTLSConfig

object

为 Thanos web 服务器配置 TLS 选项。

false

6.70. ThanosQuerier.spec.selector

选择要统一的监控堆栈的选择器。

Expand
Name类型描述必填

matchExpressions

[]object

matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。

false

matchLabels

map[string]string

matchLabels 是 {key,value} 对的映射。matchLabels 映射中的单个 {key,value} 等同于 matchExpressions 的一个元素,其 key 字段是 "key",运算符是 "In",值数组仅包含 "value"。要求的逻辑关系是 AND。

false

6.71. ThanosQuerier.spec.selector.matchExpressions[index]

标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。

Expand
Name类型描述必填

key

string

key 是选择器应用到的标签键。

true

operator

string

operator 代表一个键与一组值的关系。有效的运算符为 InNotInExistsDoesNotExist

true

values

[]string

values 是字符串值的数组。如果运算符是 InNotIn,则值数组必须是非空的。如果运算符是 ExistsDoesNotExist,则值数组必须为空。这个数组会在策略性合并补丁中被替换。

false

6.72. ThanosQuerier.spec.namespaceSelector

选择要从中发现 MonitoringStack 对象的命名空间选择器。

Expand
Name类型描述必填

any

布尔值

布尔值描述是否都选择了所有命名空间,而不是使用一个列表来限制它们。

false

matchNames

[]string

命名空间名称列表。

false

6.73. ThanosQuerier.spec.webTLSConfig

为 Thanos web 服务器配置 TLS 选项。

Expand
Name类型描述必填

certificate

object

对 Web 服务器的 TLS 公共证书的引用。

true

certificateAuthority

object

引用用于验证 Web 服务器证书的 root 证书颁发机构。

true

privateKey

object

对 web 服务器的 TLS 私钥的引用。

true

6.74. ThanosQuerier.spec.webTLSConfig.certificate

对 Web 服务器的 TLS 公共证书的引用。

Expand
Name类型描述必填

key

string

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

要选择的对象命名空间中的 secret 名称。

true

6.75. ThanosQuerier.spec.webTLSConfig.certificateAuthority

引用用于验证 Web 服务器证书的 root 证书颁发机构。

Expand
Name类型描述必填

key

string

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

要选择的对象命名空间中的 secret 名称。

true

6.76. ThanosQuerier.spec.webTLSConfig.privateKey

对 web 服务器的 TLS 私钥的引用。

Expand
Name类型描述必填

key

字符串

要从中选择的 secret 的密钥。必须是一个有效的 secret 密钥。

true

name

string

要选择的对象命名空间中的 secret 名称。

true

Legal Notice

Copyright © 2025 Red Hat

OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).

Modified versions must remove all Red Hat trademarks.

Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.

Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.

Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat