
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Jaeger Operator 是一个 Kubernetes Operator,用于在 Kubernetes 集群中自动化部署、配置、管理和升级 Jaeger 分布式追踪系统。通过自定义资源(Custom Resource, CR)抽象,Jaeger Operator 简化了 Jaeger 实例的生命周期管理,降低了在 Kubernetes 环境中构建可观测性平台的复杂度。
Jaeger 自定义资源定义(CRD)声明式管理 Jaeger 实例,支持 YAML 配置即部署。all-in-one(测试)、production(生产)等部署策略,适配不同环境需求。前提条件
安装方式
1. 通过 Helm Chart 安装(推荐)
Helm 是 Jaeger Operator 官方推荐的安装方式,支持版本控制和参数自定义:
bash# 添加 Jaeger Helm 仓库 helm repo add jaegertracing https://jaegertracing.github.io/helm-charts helm repo update # 安装 Operator(默认命名空间:observability) helm install jaeger-operator jaegertracing/jaeger-operator \ --namespace observability \ --create-namespace \ --version 2.48.0 # 替换为最新版本
2. 通过 Kubernetes Manifests 安装
直接 apply 官方维护的 YAML 清单(包含 CRD、RBAC 及 Operator Deployment):
bash# 安装 CRD kubectl apply -f https://github.com/jaegertracing/jaeger-operator/releases/download/v1.48.0/jaeger-operator.yaml
3. 通过 Operator Lifecycle Manager (OLM) 安装
若集群已部署 OLM(如 OpenShift 内置),可通过 OperatorHub 搜索 Jaeger 并一键安装。
安装 Operator 后,通过 Jaeger 自定义资源(CR)创建实例。以下为典型场景示例:
场景 1:All-in-One 模式(测试环境)
all-in-one 模式将 Jaeger 所有组件(Agent、Collector、Query、Ingester)打包为单个 Pod,适合快速测试,不持久化数据:
yaml# jaeger-all-in-one.yaml apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger-test spec: strategy: allInOne # 测试模式 allInOne: image: jaegertracing/all-in-one:1.48 # Jaeger 镜像版本 ingress: enabled: true # 启用 Ingress 暴露 Query UI hosts: - jaeger-test.example.com # 替换为实际域名
应用配置:
bashkubectl apply -f jaeger-all-in-one.yaml -n observability
场景 2:Production 模式(生产环境)
production 模式采用分布式部署,组件独立部署并使用持久化存储(如 Elasticsearch),适合生产环境:
yaml# jaeger-production.yaml apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger-prod spec: strategy: production # 生产模式 collector: replicas: 2 # collector 副本数(高可用) resources: limits: cpu: 1000m memory: 1Gi query: replicas: 2 # Query 副本数 resources: limits: cpu: 500m memory: 512Mi storage: type: elasticsearch # 使用 Elasticsearch 存储追踪数据 elasticsearch: nodeCount: 3 # Elasticsearch 节点数(若需 Operator 自动部署 ES) # 若使用外部 ES,替换为: # hosts: ["https://elasticsearch:9200"] # secretName: jaeger-es-secret # 存储 ES 认证信息的 Secret 名称 agent: strategy: DaemonSet # Agent 以 DaemonSet 部署(每个节点一个实例) ingress: enabled: true hosts: - jaeger-prod.example.com
应用配置:
bashkubectl apply -f jaeger-production.yaml -n observability
Jaeger 自定义资源(CR)核心字段
| 字段路径 | 说明 | 可选值/示例 |
|---|---|---|
spec.strategy | 部署策略 | allInOne(测试)、production(生产) |
spec.storage.type | 存储后端类型 | elasticsearch、cassandra、memory |
spec.collector.replicas | Collector 副本数(生产环境建议 ≥2) | 2、3 |
spec.agent.strategy | Agent 部署模式 | DaemonSet(节点级)、Sidecar(应用级) |
spec.ingress.enabled | 是否启用 Ingress 暴露 Query UI | true、false |
spec.resources | 资源限制(可作用于 Collector/Query/Agent 等组件) | limits: {cpu: "1000m", memory: "1Gi"} |
环境变量配置
Jaeger Operator 自身支持通过环境变量调整行为(通过 Operator Deployment 的 env 字段配置):
| 环境变量 | 说明 | 默认值 |
|---|---|---|
WATCH_NAMESPACE | Operator 监控的命名空间(多 namespace 用逗号分隔,为空时监控全集群) | 安装 Operator 的命名空间 |
LOG_LEVEL | 日志级别 | info |
JAEGER_AGENT_HOST | Operator 自身接入 Jaeger 追踪的 Agent 地址(用于调试 Operator) | 空(默认不开启) |
存储集成(Elasticsearch 示例)
生产环境推荐使用 Elasticsearch 存储追踪数据。若已有外部 Elasticsearch 集群,通过 spec.storage.elasticsearch.hosts 和 secretName 配置:
yamlspec: storage: type: elasticsearch elasticsearch: hosts: ["https://es-cluster:9200"] # 外部 ES 地址 secretName: es-credentials # 包含 ES 用户名密码的 Secret(key 为 `username` 和 `password`)
采样策略配置
通过 spec.sampling 定义采样策略(如固定采样率、基于服务名动态调整):
yamlspec: sampling: options: default_strategy: type: probabilistic # 概率采样 param: 0.001 # 采样率(1/1000 请求) per_service_strategies: - service: "payment-service" # 对特定服务调整采样率 type: rateLimiting param: 10 # 每秒最多采样 10 个请求
安全配置(TLS)
为 Jaeger 组件间通信或外部访问启用 TLS:
yamlspec: ingress: tls: - hosts: [jaeger-prod.example.com] secretName: jaeger-tls # 包含 TLS 证书的 Secret(key 为 `tls.crt` 和 `tls.key`) collector: tls: enabled: true # 启用 Collector 服务端 TLS(客户端需验证证书) secretName: collector-tls # Collector 证书 Secret
bash# 添加仓库并安装 Operator(指定命名空间和版本) helm repo add jaegertracing https://jaegertracing.github.io/helm-charts helm repo update helm install jaeger-operator jaegertracing/jaeger-operator \ --namespace observability \ --create-namespace \ --version 2.48.0 \ --set watchNamespace="" # 监控全集群(默认仅监控安装命名空间)
yaml# jaeger-prod-full.yaml apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger-prod namespace: observability spec: strategy: production collector: replicas: 3 resources: requests: {cpu: "500m", memory: "512Mi"} limits: {cpu: "1000m", memory: "1Gi"} query: replicas: 2 resources: limits: {cpu: "500m", memory: "512Mi"} serviceType: ClusterIP # 内部访问用 ClusterIP,外部通过 Ingress 暴露 storage: type: elasticsearch elasticsearch: hosts: ["https://es-cluster:9200"] secretName: es-creds indexCleaner: # 自动清理旧索引 enabled: true numberOfDays: 30 # 保留 30 天数据 agent: strategy: DaemonSet resources: limits: {cpu: "100m", memory: "64Mi"} ingress: enabled: true hosts: [jaeger.example.com] tls: - hosts: [jaeger.example.com] secretName: jaeger-tls sampling: options: default_strategy: {type: "probabilistic", param: 0.01}
部署后通过以下命令验证资源状态:
bash# 查看 Jaeger CR 状态 kubectl get jaeger -n observability # 查看 Jaeger 组件 Pod kubectl get pods -n observability -l app.kubernetes.io/instance=jaeger-prod # 查看 Ingress 地址 kubectl get ingress jaeger-prod -n observability -o jsonpath='{.status.load***.ingress[0].ip}'
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务