全部產品
Search
文件中心

Container Service for Kubernetes:為叢集資料面組件啟用鏈路追蹤

更新時間:May 29, 2025

kubelet的鏈路追蹤可以記錄kubelet在節點上執行的關鍵操作軌跡,例如 Pod 生命週期管理、API 呼叫等,以便定位系統效能瓶頸並排查叢集問題。啟用後,kubelet的鏈路資訊將自動上報至Managed Service for OpenTelemetry,提供可視化的鏈路明細、即時拓撲等監控資料。

如果您不熟悉鏈路追蹤,可參見基本概念瞭解相關基礎概念。

前提條件

  • 已建立1.28及以上的ACK託管叢集ACK專有叢集。如需升級,請參見手動升級叢集

  • Helm為v3版本。如需升級,請參見將Helm V2升級遷移至Helm V3

    安裝本功能依賴的組件OpenTelemetry Collector時,Helm需為3.9及以上版本。
  • 已開通Managed Service for OpenTelemetry並授權,請參見準備工作

    可觀測鏈路 OpenTelemetry 版為分布式應用提供了完整的調用鏈路還原、調用請求量統計、鏈路拓撲、應用依賴分析等工具。
說明

使用本功能時,除ACK叢集產生的費用外,還會產生可觀測資料量計費,由Managed Service for OpenTelemetry收取。關於Managed Service for OpenTelemetry提供的免費額度和具體定價,請參見計費說明


實現叢集資料面的鏈路追蹤流程如下:

  1. 擷取Managed Service for OpenTelemetry資料存取點和鑒權Token,並將鑒權Token儲存在叢集Secret中,以便讓OpenTelemetry Collector正確讀取配置和鑒權資訊。

  2. 部署 OpenTelemetry Collector 組件,用於收集、處理和匯出觀測資料。

    ACK應用市場提供快速部署 OpenTelemetry Collector 的方式,可在叢集內以 DaemonSet 模式部署。
  3. 通過kubelet配置開啟鏈路追蹤並配置相關參數(採樣率),讓採集資料通過 OpenTelemetry Collector 轉寄至Managed Service for OpenTelemetry

步驟一:擷取存取點和鑒權Token

  1. 登入可觀測鏈路 OpenTelemetry 版控制台,在左側導覽列單擊接入中心

  2. 開源架構地區單擊OpenTelemetry卡片。

  3. 選擇資料上報地區,選擇串連方式阿里雲內網方式上報方式gRPC,儲存存取點資訊供後續使用。

    初次接入的地區將會自動進行資源初始化,請按頁面提示完成操作。

    image

步驟二:將鑒權Token儲存到叢集Secret中

將鑒權 Token 儲存到 ACK 叢集的Secret中後,並通過引用變數的方式在 OpenTelemetry Collector 使用此鑒權 Token 資訊。Secret 與下一步安裝的 OpenTelemetry Collector 需處於同一命名空間。

OpenTelemetry Collector 預設部署在 otel-collector 命名空間。您可以手動建立 otel-collector 命名空間,也可以使用其他命名空間,並在安裝OpenTelemetry Collector時選擇該命名空間。
  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇組態管理 > 保密字典

  3. 單擊建立,按照頁面提示完成Secret的建立。

    配置項

    取值

    樣本

    名稱

    opentelemetry-exporter-config

    重要

    請使用此值,不要自訂名稱。

    image

    類型

    Opaque

    以下為添加密鑰資料配置項:

    名稱

    grpc-token

    重要

    請使用此值,請勿自訂名稱。

    image

    步驟一擷取的鑒權Token資訊

    對資料值進行 base64 編碼

步驟三:安裝 OpenTelemetry Collector

OpenTelemetry Collector 是一個可觀測資料擷取器,提供了統一的資料接收、處理和匯出能力。OpenTelemetry Collector 可支援對接各類開源可觀測資料(例如 Jaeger、Prometheus、Fluent Bit 等),避免需要部署多個可觀測採集器。

  1. 登入Container Service管理主控台,在左側導覽列選擇市場 > 應用市場

  2. 搜尋opentelemetry-collector,點擊卡片。

    此頁麵包含組件介紹和組件Helm Chart的參數說明。您可以在此頁面瞭解,也可以根據下文指引完成必要配置。
  3. 然後在頁面右上方單擊一鍵部署,選擇叢集和命名空間,按照頁面指引進入下一步。

    組件的命名空間需與步驟二建立的Secret命名空間保持一致。

  4. 選擇Chart版本(建議使用預設版本),設定 Chart 參數,按照頁面提示完成Chart的安裝。

    參數

    說明

    樣本

    mode

    設定為 daemonset,以DaemonSet的模式部署 OpenTelemetry Collector 。

    mode: "daemonset"

    image

    enableXtraceTokenFromSecret

    設定為 true,以通過環境變數引用鑒權 Token。開啟後,鑒權 Token 將不會以明文的方式儲存在 OpenTelemetry Collector 的 Secret 中,避免敏感資訊泄露。

    enableXtraceTokenFromSecret: true
    請確保您已完成步驟二的操作,避免Chart部署失敗。

    image

    exporters

    添加名為otlp的資料匯出器(Exporter),用於指定鏈路資料上報的地址。

    endpoint設定為步驟一中擷取的內網存取點。

    exporters:
      otlp:
        endpoint: <此前擷取的內網存取點>
        tls:
          insecure: true
        headers:
          Authentication: ${env:OPENTELEMETRY_GRPC_TOKEN}

    image

    receivers

    添加名為otlp/kubelet的接收器(Receiver),監聽本地 4317 連接埠,通過 OTLP/gRPC 協議接收 kubelet 鏈路資料。

      receivers:
        otlp/kubelet: # 建立一個名為 otlp/kubelet 的接收器。
          protocols:
            grpc:
              endpoint: 127.0.0.1:4317

    image

    service.pipelines.traces

    配置OpenTelemetry Collector 的處理管道,在 service.pipelines.traces.exporters中添加 otlp 匯出器,在service.pipelines.traces.receivers中添加 otlp/kubelet 接收器。

          traces:
            exporters:
              - debug
              - otlp
            processors:
              - memory_limiter
              - batch
              - resource
            receivers:
              - otlp
              - jaeger
              - zipkin
              - otlp/kubelet

    image

    hostNetwork

    設定為 true,OpenTelemetry Collector 可直接使用主機的 IP 位址和連接埠進行通訊。

    hostNetwork: true

    image

    成功安裝後,頁面將自動跳轉至Helm頁面。

    前往工作負載 > 守護進程集頁面,選擇組件的命名空間,如有名為 opentelemetry-collector-agent 的 DaemonSet 且所有Pod運行狀態為Running,表示安裝成功。

步驟四:為 kubelet 開啟鏈路追蹤

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇節點管理 > 節點池

  3. 在節點池列表的操作列下的image > Kubelet 配置,按照頁面提示添加自訂參數、瞭解注意事項、選擇待升級的節點,並設定批次更新策略(每批次的最大並行數),然後單擊提交

    • 下拉選擇 tracing,並選擇 endpoint,值填寫為 localhost:4317,代表 kubelet 鏈路資料將發送至 localhost:4317。該地址與中步驟三 otlp/kubelet Receiver 的 endpoint 對應。

    • 再次下拉選擇 tracing,並選擇 samplingRatePerMillion,控制採樣率,決定每一百萬次請求中被採樣的比例。鏈路追蹤可能會對叢集網路和CPU效能產生一定影響,具體取決於整體配置情況。如遇效能問題,可根據叢集的負載情況適當調低採樣率。

      例如,1000000表示100%的採樣率,即每一百萬次請求中,所有請求都會被採樣和記錄;100000表示10%的採樣率;10000表示1%的採樣率。

      image

步驟五:在可觀測鏈路 OpenTelemetry 版上查看調用鏈路資料

  1. 登入可觀測鏈路 OpenTelemetry 版控制台,在左側導覽列單擊應用列表

  2. 在頁面頂部選擇地區,然後單擊應用程式名稱kubelet按照控制台指引查看鏈路資訊。

    下方僅介紹主要頁簽。如需瞭解不同頁簽的詳細說明,請參見應用詳情的相關文檔。
    • 調用鏈分析頁簽:kubelet請求的調用鏈、應用拓撲等。

      • 在頁面左上方的搜尋方塊輸入resources.k8s.cluster.name : "叢集ClusterId",篩選指定叢集的調用鏈。

        叢集ClusterId可在叢集列表中擷取。
      • 單擊Trace列表的Trace ID,查看一個kubelet請求的Trace詳情,包括拓撲視圖、涉及的服務數、調用的介面數等。

    • 提供服務頁簽:kubelet對外提供的介面的請求數、錯誤數和平均耗時等。

    • 依賴服務頁簽:對kubelet依賴服務的請求,例如請求containerd的請求數、錯誤數、平均耗時等。

相關文檔

如需監測並記錄集群API Server組件的鏈路資料,請參見為叢集控制面組件啟用鏈路追蹤