3.2.4.5. Jaeger 存储配置选项

您可在 spec:storage 下为 Collector、Ingester 和 Query 服务配置存储。可以根据性能和恢复能力的需要提供每个组件的多个实例。

表 3.5. Operator 用来定义 Jaeger 存储的一般存储参数

参数描述默认值
spec:
  storage:
    type:

要在部署中使用的存储类型。

memoryelasticsearch。内存存储仅适用于开发、测试、演示和验证概念环境,因在关闭 pod 时,数据不会保留。对于生产环境,Jaeger 支持 Elasticsearch 的持久性存储。

memory

storage:
  secretname:

secret 的名称,如 jaeger-secret

 

N/A

storage:
  options: {}

定义存储的配置选项。

  

表 3.6. Elasticsearch 索引清理参数

参数描述默认值
storage:
  esIndexCleaner:
    enabled:

当使用 Elasticsearch 存储时,默认会创建一个任务来清理索引中的旧 trace。这个参数用于启用或禁用索引清理任务。

true/ false

true

storage:
  esIndexCleaner:
    numberOfDays:

删除索引前等待的天数。

整数值

7

storage:
  esIndexCleaner:
    schedule:

为 Elasticsearch 索引的清理频率定义调度。

Cron 表达式

"55 23 * * *"

3.2.4.5.1. 自动置备 Elasticsearch 实例

storage:type 设为 elasticsearch 但没有为 spec:storage:options:es:server-urls 设置值时,Jaeger Operator 会使用 OpenShift Elasticsearch Operator 根据自定义资源文件的 storage 部分中提供的配置创建一个 Elasticsearch 集群。

限制

  • 每个命名空间只能有一个具有自置备 Elasticsearch 实例的 Jaeger。Elasticsearch 集群意在专用于单个 Jaeger 实例。
  • 每个命名空间只能有一个 Elasticsearch。
注意

如果您已经安装了 Elasticsearch 作为 OpenShift 日志记录的一部分,Jaeger Operator 可以使用已安装的 OpenShift Elasticsearch Operator 来置备存储。

以下配置参数用于一个自置备的 Elasticsearch 实例,这是由 Jaeger Operator 使用 OpenShift Elasticsearch Operator 创建的实例。在配置文件中,您可以在 spec:storage:elasticsearch 下为自助置备 Elasticsearch 指定配置选项。

表 3.7. Elasticsearch 资源配置参数

参数描述默认值
elasticsearch:
  nodeCount:

Elasticsearch 节点数量。对于高可用性,需要至少 3 个节点。不要只使用 2 个节点,因为可能会出现“脑裂”问题。

整数值。例如,概念验证 = 1,最小部署 = 3

3

elasticsearch:
  resources:
    requests:
      cpu:

根据您的环境配置,请求的 CPU 数量。

以 core 或者 millicores 指定(例如: 200m, 0.5, 1)。例如,概念证明 = 500m,最小部署 =1

1

elasticsearch:
  resources:
    requests:
      memory:

根据您的环境配置,可用于请求的内存。

以字节为单位指定(例如: 200Ki, 50Mi, 5Gi)。例如,概念证明 = 1Gi,最小部署 = 16Gi*

16Gi

elasticsearch:
  resources:
    limits:
      cpu:

根据您的环境配置,CPU 数量的限值。

以 core 或者 millicores 指定(例如: 200m, 0.5, 1)。例如,概念证明 = 500m,最小部署 =1

 
elasticsearch:
  resources:
    limits:
      memory:

根据您的环境配置,可用的内存限值。

以字节为单位指定(例如: 200Ki, 50Mi, 5Gi)。例如,概念证明 = 1Gi,最小部署 = 16Gi*

 
elasticsearch:
  redundancyPolicy:

数据复制策略定义如何在集群中的数据节点之间复制 Elasticsearch 分片:如果没有指定,Jaeger Operator 会自动根据节点数量决定最合适的复制。

ZeroRedundancy(无副本分片)、SingleRedundancy(一个副本分片)、MultipleRedundancy(每个索引分散于一半的 Data 节点)、FullRedundancy(每个索引在集群中的每个 Data 节点上完全复制)。

 

*通过这个设置可以使每个 Elasticsearch 节点使用较低内存进行操作,但对于生产环境部署,不建议这样做。对于生产环境,您应该默认为每个 Pod 分配不少于 16Gi 内存,但最好为每个 Pod 最多分配 64Gi 内存。

生产环境存储示例

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: simple-prod
spec:
  strategy: production
  storage:
    type: elasticsearch
    elasticsearch:
      nodeCount: 3
      resources:
        requests:
          cpu: 1
          memory: 16Gi
        limits:
          memory: 16Gi

具有持久性存储的存储示例:

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: simple-prod
spec:
  strategy: production
  storage:
    type: elasticsearch
    elasticsearch:
      nodeCount: 1
      storage: 1
        storageClassName: gp2
        size: 5Gi
      resources:
        requests:
          cpu: 200m
          memory: 4Gi
        limits:
          memory: 4Gi
      redundancyPolicy: ZeroRedundancy

1
持久性存储配置。在本例中,AWS gp2 的大小为 5Gi。如果没有指定值,Jaeger 将使用 emptyDir。OpenShift Elasticsearch Operator 置备 PersistentVolumeClaimPersistentVolume,它们不会在 Jaeger 实例中删除。如果创建具有相同名称和命名空间的 Jaeger 实例,则可以挂载同一卷。