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

最近在研究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服务)

相关推荐

  1. 开发K8S Operator

    2024-07-20 22:20:03       45 阅读
  2. k8s项目部署流程

    2024-07-20 22:20:03       65 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 22:20:03       101 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 22:20:03       109 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 22:20:03       87 阅读
  4. Python语言-面向对象

    2024-07-20 22:20:03       96 阅读

热门阅读

  1. 网络安全-网络安全及其防护措施6

    2024-07-20 22:20:03       20 阅读
  2. [C++ 入门基础 - 命名空间]

    2024-07-20 22:20:03       21 阅读
  3. SharedPreferences 和 MMKV 是何方神圣

    2024-07-20 22:20:03       22 阅读
  4. 力扣1942.最小未被占据椅子的编号

    2024-07-20 22:20:03       22 阅读
  5. linux LED代码设计

    2024-07-20 22:20:03       25 阅读
  6. 【深度学习图像】拼接图的切分

    2024-07-20 22:20:03       23 阅读
  7. dp算法第三天(暑期提升)

    2024-07-20 22:20:03       26 阅读
  8. RabbitMQ 全面解析与常见问题解答

    2024-07-20 22:20:03       23 阅读
  9. 关于大数据技术栈的一些总结

    2024-07-20 22:20:03       23 阅读
  10. 酒茶元宇宙:探索科技与传统文化的融合

    2024-07-20 22:20:03       19 阅读