K8S 部署jaeger-operator,与其演示项目hotrod

news2025/1/12 12:03:36

最近在研究observabilty在K8S环境的onboard,查阅了一些资料,发现现在网上Prometheus/Metrics相关的资源,是比较全面的,而Trace相关的部分不是很全面,所以写下这篇博文,以做备忘和分享。

组件介绍

我这里选择使用jaeger-operator,Github主页为:GitHub - jaegertracing/jaeger-operator: Jaeger Operator for Kubernetes simplifies deploying and running Jaeger on Kubernetes.因为这里只是demo的需要所以采用了all-in-one的方式部署,生产环境建议朋友们采用可靠的持久化部署方式。

j为什么没有选择jaeger-kubernetes呢?因为它是有些过时的,从其主页上我们可以看到GitHub - jaegertracing/jaeger-kubernetes: Support for deploying Jaeger into Kubernetes

此项目处于已经归档且久未更新的状态。

部署jaeger-operator

我们可以参考jeager的官方网站Operator for Kubernetes — Jaeger documentation

请注意,可能官方网站的最新版本,和Github的最新版本是不一样的,如本人在起草文章的时候,Github的最新版是1.57,而官网的最新版是1.59,因此需要下载Github资源的时候请留意。

创建命名空间observability

kubectl create namespace observability

资源创建

kubectl create -f https://github.com/jaegertracing/jaeger-operator/releases/download/v1.59.0/jaeger-operator.yaml -n observability

或者

wget https://github.com/jaegertracing/jaeger-operator/releases/download/v1.57.0/jaeger-operator.yaml
kubectl apply -f jaeger-operator.yaml -o observability

这个yaml很长,而且是官网下载未编辑,就不贴给大家看了。

我们可以检查是否部署成功

$ kubectl get deployment jaeger-operator -n observability

NAME              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
jaeger-operator   1         1         1            1           48s

创建Jaeger实例

我们创建部署文件Jaeger-example.yaml

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: all-in-one
spec:
  strategy: allinone
  agent:
    strategy: DaemonSet
  ingress:
    hosts:
    - xxx
  imagePullSecrets:
  - name: xxx

其中ingress和imagePullSecrets部分可以省略或按需要配置,imagePullSecrets是因为docker.io限制了拉取次数,可能需要配置包括注册信息的Secret。

kubectl -f jaeger-example.yaml -o observability

然后我们查看是否完成创建

k get svc -n observability | grep all-in-one

部署hotrod

资源创建

创建配置文件hotrod.yaml

metadata:
  name: hotrod
spec:
  rules:
  - host: hotrod.jaeger.k8s.local
    http:
      paths:
      - backend:
          service:
            name: hotrod
            port:
              number: 8080
        path: /
        pathType: Prefix
---
apiVersion: v1
kind: Service
metadata:
  name: hotrod
  labels:
    app: hotrod
spec:
  ports:
  - port: 8080
    protocol: TCP
  selector:
    app: hotrod
---
apiVersion: v1
kind: Pod
metadata:
  name: hotrod
  labels:
    app: hotrod
spec:
  containers:
  - name: hotrod
    image: jaegertracing/example-hotrod
    imagePullPolicy: IfNotPresent
    args:
    - all
    - --jaeger-ui=http://jaeger.k8s.local
    env:
    - name: JAEGER_AGENT_HOST
      value: xxxx
    - name: OTEL_EXPORTER_OTLP_ENDPOINT
      value: http://xxx:4318
  imagePullSecrets:
  - name: xx

OTEL_EXPORTER_OTLP_ENDPOINT这个环境变量,是为了导出trace数据到Jaeger,它的默认值是localhost:4318,可以参考jaeger-operator部署出来的all-in-one-query服务;

JAEGER_AGENT_HOST我也不清楚有什么用,可能是参考的配置文件版本有点老。。

接下来我们部署资源。

kubectl apply -f hotrod.yaml -o observability

检查部署情况

kubectl get svc -n observability | grep hot

从UI检验

方便起见可以将service以Nodeport启动

Hotrod: http://node_IP:node_port

我们可以点击UI产生一些trace;

Jaeger:http://node_IP:node_port (all-in-one-query服务)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1938341.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++面试题之判断一个变量是不是指针

对于变量其实对应的就是内存,而内存并没有表明一定是什么数据类型,所以判断变量是否是一个指针其实是一个参数类型匹配问题,在C中支持函数的重载,那么不同的函数因为参数的不同从而匹配不同函数调用过程。 编译器在进行函数匹配调…

格密码基础

目录 写在前面 一. 格上基本向量 二. 封闭球内格点数 三. 半稳定格 四. Chernoff-Hoeffding 界 五. 格密码中常用的细节 六. 可证明安全的格基 6.1 引入问题 6.2 格基选取 6.3 流程性小结 写在前面 本文章主要介绍格密码中所使用的一些基本概念,其中包括…

SVN分支管理基本原理

原文全文详见个人博客: SVN分支管理基本原理学习完svn和git的版本管理理念上的差异后,自然的我们再进一步对比svn和git在分支管理上的原理差异,这种差异正是由二者版本管理理念和存储方式差异造成的,今天我们先研究一下svn的分支…

Python爬虫(基本流程)

1. 确定目标和范围 明确需求:确定你需要从哪些网站抓取哪些数据。合法性:检查目标网站的robots.txt文件,了解哪些内容可以被抓取。数据范围:确定爬取数据的起始和结束点,比如时间范围、页面数量等。 2. 选择合适的工…

展望未来:利用【Python】结合【机器学习】强化数据处理能力

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 一、引言二、数据清洗与预处理三、特征工程四、数据可视化五、模型训练与评估六、模型部署与优化七、总结 在数据驱动的时代,数据处理与机器学习技术的结合已成为推动业务增长和创新的关键…

分类预测 | Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积支持向量机分类预测

分类预测 | Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积支持向量机分类预测 目录 分类预测 | Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积支持向量机分类预测&#xff0…

前端基础之JavaScript学习——函数的使用

大家好我是来自CSDN的前端寄术区博主PleaSure乐事,今天我们继续有关JavaScript的学习,使用的编译器为vscode,浏览器为谷歌浏览器。 函数的声明与使用 声明 在JavaScript当中函数的声明和其他语言类似,使用如下格式即可声明&…

SpringBoot+Session+redis实现分布式登录

SpringBootSessionRedis实现分布式登录功能实现 文章目录 目录 文章目录 前言 一、引库 二、修改配置文件 三、使用 四、解决乱码问题 1.引库 2.配置redis序列化 3.配置Session-Redis序列化 前言 这里简单介绍一下,如果你想多台机器部署你的项目的话,在…

Python爬虫速成之路(6):Selenium的使用

hello hello~ ,这里是绝命Coding——老白~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页:绝命Coding-CSDN博客 &a…

Excel的操作

Excel的操作 一、Excel的作用 Excel是一款功能强大的电子表格软件,主要用于数据处理和分析。 二、Excel的基础操作 新建文档 一般情况下,就在桌面空白处,点击鼠标右键,即可新建 三、页面布局 1、快速访问工具栏 主要包含&am…

前端特效动画魔法书:文字渐入效果实现,可做引导页面

前端特效动画魔法书:文字渐入效果实现,可做引导页面 简介 在网页设计的世界中,动画是吸引用户眼球的魔法。Anime.js,一个轻量级且功能强大的JavaScript动画库,是实现这一魔法的完美工具。本文将作为你的技术文档&…

深入理解PHP基础【代码审计实战指南】

文章目录 基础语法单双引号的区别前后端分离数据类型PHP常量函数var_dump函数count函数print_r函数**readfile()函数****file_get_contents()函数****file_put_contents()函数**header函数fopen函数fread 函数rename函数copy()函数…

什么是单例模式,有哪些应用?

目录 一、定义 二、应用场景 三、6种实现方式 1、懒汉式,线程不安全。 2、懒汉式,线程安全 3、双检锁/双重校验锁(DCL,即 double-checked locking) 4、静态内部类方式-------只适用于静态域 5、饿汉式 6、枚举…

MATLAB函数介绍——plotm

简述 matlab中,plotm和不带“m”的plot意义相似,都是绘制二维图像的。只是加了m以后,在绘制时将图像投影到了世界地图坐标系上面进行显示。 plotm的第一个输入量是纬度,第二个输入量是经度,单位都是弧度。 例程 官方…

各种复现,保证质量

代码复现,文献复现,模型复现,算法复现,文章复现,创新点等等,python/matlab/c语言/r语言均可,保证高质量完成,可接急单,不成功不收费!

docker应用:搭建云手机

简介:近来慵懒,身体懈怠良多,思来想去随手看点小攻略以宽慰不懈怠的心。云手机Cloudphone,就是将云计算技术运用于网络终端服务,通过云服务器实现云服务的手机。其实就是深度结合了网络服务的智能手机,这类…

基于多线程延迟排序的睡眠排序算法的创新与改进

基于多线程延迟排序的睡眠排序算法的创新与改进 摘要 本文在传统睡眠排序算法的基础上,提出了一种改进方案,旨在优化处理负数和大规模数据集的性能。通过引入线程池管理和数据分段排序技术,改进后的算法在处理大数据集和包含负数的数据集时…

【11】微服务链路追踪SkyWalking

1、skywalking是什么 1.1 链路追踪介绍 对于一个大型的几十个、几百个微服务构成的微服务架构系统,通常会遇到下面一些问题,比如: 如何串联整个调用链路,快速定位问题?如何缕清各个微服务之间的依赖关系?…

【web】-flask-简单的计算题(不简单)

打开页面是这样的 初步思路,打开F12,查看头,都发现了这个表达式的base64加密字符串。编写脚本提交答案,发现不对; 无奈点开source发现源代码,是flask,初始化表达式,获取提交的表达式&#xff0…

C语言 | Leetcode C语言题解之第260题只出现一次的数字III

题目&#xff1a; 题解&#xff1a; int* singleNumber(int* nums, int numsSize, int* returnSize) {int xorsum 0;for (int i 0; i < numsSize; i) {xorsum ^ nums[i];}// 防止溢出int lsb (xorsum INT_MIN ? xorsum : xorsum & (-xorsum));int type1 0, type2…