3.2. 配置和部署 Jaeger

Jaeger Operator 使用自定义资源定义(CRD)文件定义创建和部署 Jaeger 资源时要使用的架构和配置设置。您可以安装默认配置或修改该文件以更好地满足您的业务要求。

Jaeger 具有预定义的部署策略。您可以在自定义资源文件中指定一个部署策略。创建 Jaeger 实例时,Operator 会使用此配置文件创建部署所需的对象。

Jaeger 自定义资源文件显示部署策略

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: simple-prod
spec:
  strategy: production 1

1
Jaeger Operator 目前支持以下部署策略:
  • allInOne (默认)- 这个策略主要用于开发、测试和演示目的,它不用于生产环境。主要的后端组件 Agent、Collector 和 Query 服务都打包成单一可执行文件,(默认)配置为使用内存存储。

    注意

    内存存储不是持久性的,这意味着如果 Jaeger 实例关闭、重启或被替换,您的 trace 数据将会丢失。此外,内存存储无法扩展,因为每个 Pod 都有自己的内存。对于持久性存储,您必须使用 productionstreaming 策略,这些策略使用 Elasticsearch 作为默认存储。

  • production - production 策略主要用于生产环境,在生产环境中,对 trace 数据进行长期存储非常重要,同时需要更容易扩展和高度可用的构架。因此,每个后端组件都将单独部署。Agent 可以作为检测应用程序上的 sidecar 注入。Query 和 Collector 服务被配置为使用一个受支持的存储类型 - 当前为 Elasticsearch。可以根据性能和恢复能力的需要提供每个组件的多个实例。
  • streaming - streaming 策略旨在提供在 Collector 和后端存储 (Elasticsearch) 之间有效发挥作用的流传输功能,以此增强 production 策略。这样做的好处是在高负载情况下降低后端存储压力,并允许其他 trace 后处理功能直接从流传输平台 (AMQ Streams/ Kafka) 中利用实时 span 数据。

    注意

    streaming 策略需要额外的 AMQ Streams 订阅。

注意

有两种方法可用来安装和使用 Jaeger,作为服务网格的一部分或作为独立组件。如果您已将 Jaeger 作为 Red Hat OpenShift Service Mesh 的一部分安装,您可以将 Jaeger 配置为 ServiceMeshControlPlane 的一部分,或者配置 Jaeger,然后在 ServiceMeshControlPlane 中引用 Jaeger 配置

3.2.1. 从 Web 控制台部署默认 Jaeger 策略

自定义资源定义 (CRD) 定义部署 Jaeger 实例时使用的配置。Jaeger 的默认 CR 名为 jaeger-all-in-one-inmemory,它配置为使用最少资源,以确保您可以在默认的 OpenShift Container Platform 安装中成功安装它。您可以使用此默认配置创建使用 AllInOne 部署策略的 Jaeger 实例,或者您可以定义自己的自定义资源文件。

注意

内存存储不是持久性的,这意味着如果 Jaeger Pod 关闭、重启或被替换,您的 trace 数据将会丢失。对于持久性存储,您必须使用 productionstreaming 策略,这些策略使用 Elasticsearch 作为默认存储。

先决条件

  • 必须安装 Jaeger Operator。
  • 查看有关如何自定义 Jaeger 安装的说明。
  • 具有 cluster-admin 角色的帐户。
注意

目前 IBM Z 上不支持 Jaeger 流。

流程

  1. 以具有 cluster-admin 角色的用户身份登录到 OpenShift Container Platform web 控制台。
  2. 创建一个新项目,如 jaeger-system

    1. 浏览至 HomeProject
    2. 点击 Create Project
    3. Name 字段中输入 jaeger-system
    4. 点击 Create
  3. 导航到 OperatorsInstalled Operators
  4. 如果需要,请在 Project 菜单中选择 jaeger-system。您可能需要等待一些时间,让 Operator 复制到新项目中。
  5. 点击 OpenShift Jaeger Operator。在 Overview 选项卡上的 Provided APIs 下,Operator 提供了单个链接。
  6. Jaeger 下点击 Create Instance
  7. Create Jaeger 页面上,要使用默认值进行安装,请点击 Create 来创建 Jaeger 实例。
  8. Jaegers 页面上,点击 Jaeger 实例的名称,如 jaeger-all-in-one-inmemory
  9. Jaeger Details 页面上,点击 Resources 选项卡。等到 Pod 的状态变为“Running”再继续操作。

3.2.1.1. 通过 CLI 部署默认 Jaeger

按照以下步骤,通过命令行创建 Jaeger 实例。

先决条件

  • 已安装并验证 OpenShift Jaeger Operator。
  • 访问与 OpenShift Container Platform 版本匹配的 OpenShift CLI(oc)。
  • 具有 cluster-admin 角色的帐户。

流程

  1. 以具有 cluster-admin 角色的用户身份登录到 OpenShift Container Platform CLI。

    $ oc login https://{HOSTNAME}:8443
  2. 创建一个名为 jaeger-system 的新项目。

    $ oc new-project jaeger-system
  3. 创建一个名为 jaeger.yaml 的自定义资源文件,其中包含以下文本:

    示例 Jaeger-all-in-one.yaml

    apiVersion: jaegertracing.io/v1
    kind: Jaeger
    metadata:
      name: jaeger-all-in-one-inmemory

  4. 运行以下命令来部署 Jaeger:

    $ oc create -n jaeger-system -f jaeger.yaml
  5. 在安装过程中运行以下命令来监控 pod 的进度:

    $ oc get pods -n jaeger-system -w

    安装过程完成后,您应该看到类似如下的输出:

    NAME                                         READY   STATUS    RESTARTS   AGE
    jaeger-all-in-one-inmemory-cdff7897b-qhfdx   2/2     Running   0          24s