Myluzh Blog

K8S 部署OpenTelemetry(用于 Kubernetes ≤ v1.22 )

发布时间: 2025-7-2 文章作者: myluzh 分类名称: Kubernetes 朗读文章


0X01 前言 
这边有个测试集群,k8s版本是1.21,经过测试需要安装兼容v1alpha2的cert-manager,然后opentelemetry-operator最高版本是0.34.0。

0x02 安装 OpenTelemetry Operator
# 安装 cert-manager(兼容v1alpha2)
wget -O cert-manager-v0.16.1.yaml https://github.com/cert-manager/cert-manager/releases/download/v0.16.1/cert-manager.yaml
kubectl apply -f cert-manager-v0.16.1.yaml
kubectl get pod -n cert-manager

# 安装 opentelemetry-operator
wget -O opentelemetry-operator-v0.34.0.yaml https://github.com/open-telemetry/opentelemetry-operator/releases/download/v0.34.0/opentelemetry-operator.yaml
kubectl apply -f opentelemetry-operator-v0.34.0.yaml
kubectl get pod -n opentelemetry-operator-system

0x03 部署Collector
1、部署deployment collector
# cat center-collector.yaml 
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
  name: center
spec:
  mode: deployment
  #image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/otel/opentelemetry-collector:0.34.0
  config: |
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: 0.0.0.0:4317
          http:
            endpoint: 0.0.0.0:4318
    processors:
      batch:
    exporters:
      logging:
    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: [batch]
          exporters: [logging]
部署中心Collector到opentelemetry
kubectl apply -f center-collector.yaml -n opentelemetry

2、部署sidecar collector
# cat sidecar-collector.yaml 
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
  name: sidecar
spec:
  mode: sidecar
  image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/otel/opentelemetry-collector:0.34.0
  config: |
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: 0.0.0.0:4317
          http:
            endpoint: 0.0.0.0:4318

    processors:
      batch:

    exporters:
      logging: {}
      otlp:
        endpoint: center-collector.opentelemetry.svc.cluster.local:4317

    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: [batch]
          exporters: [logging, otlp]
sidecar-collector(mode: sidecar)应部署在与你的应用相同的命名空中,以便自动注入。
kubectl apply -f sidecar-collector.yaml -n dev-test

3、查看
sidecar 代理依赖于应用程序启动,因此现在创建后并不会立即启动,需要我们创建一个应用程序并使用这个 sidecar 模式的 collector。
# kubectl get opentelemetrycollectors -n opentelemetry   
NAME      MODE         VERSION   AGE
center    deployment   0.34.0    27m
sidecar   sidecar      0.34.0    14m


# kubectl get all -n opentelemetry
NAME                                    READY   STATUS    RESTARTS   AGE
pod/center-collector-678854c96f-nd5z7   1/1     Running   0          19m

NAME                                  TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
service/center-collector              ClusterIP   10.43.52.157    <none>        4317/TCP,4318/TCP   26m
service/center-collector-headless     ClusterIP   None            <none>        4317/TCP,4318/TCP   26m
service/center-collector-monitoring   ClusterIP   10.43.173.126   <none>        8888/TCP            26m

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/center-collector   1/1     1            1           26m
0x04 应用埋点
在某些版本的 OpenTelemetry Operator 中(比如 v0.34.0),你可以 不依赖 Instrumentation CRD,直接通过设置 sidecar.opentelemetry.io/inject: "true" 来注入 Sidecar Collector。


标签: k8s kubernetes OpenTelemetry 观测


正文到此结束
版权声明:若无特殊注明,本文皆为 Myluzh Blog 原创,转载请保留文章出处。
文章内容:https://itho.cn/k8s/531.html
文章标题:《K8S 部署OpenTelemetry(用于 Kubernetes ≤ v1.22 )

发表评论