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提供的免費額度和具體定價,請參見計費說明。
實現叢集資料面的鏈路追蹤流程如下:
擷取Managed Service for OpenTelemetry資料存取點和鑒權Token,並將鑒權Token儲存在叢集Secret中,以便讓OpenTelemetry Collector正確讀取配置和鑒權資訊。
部署 OpenTelemetry Collector 組件,用於收集、處理和匯出觀測資料。
ACK應用市場提供快速部署 OpenTelemetry Collector 的方式,可在叢集內以 DaemonSet 模式部署。
通過kubelet配置開啟鏈路追蹤並配置相關參數(採樣率),讓採集資料通過 OpenTelemetry Collector 轉寄至Managed Service for OpenTelemetry。
步驟一:擷取存取點和鑒權Token
登入可觀測鏈路 OpenTelemetry 版控制台,在左側導覽列單擊接入中心。
在開源架構地區單擊OpenTelemetry卡片。
選擇資料上報地區,選擇串連方式為阿里雲內網方式,上報方式為gRPC,儲存存取點資訊供後續使用。
初次接入的地區將會自動進行資源初始化,請按頁面提示完成操作。

步驟二:將鑒權Token儲存到叢集Secret中
將鑒權 Token 儲存到 ACK 叢集的Secret中後,並通過引用變數的方式在 OpenTelemetry Collector 使用此鑒權 Token 資訊。Secret 與下一步安裝的 OpenTelemetry Collector 需處於同一命名空間。
OpenTelemetry Collector 預設部署在 otel-collector 命名空間。您可以手動建立 otel-collector 命名空間,也可以使用其他命名空間,並在安裝OpenTelemetry Collector時選擇該命名空間。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
單擊建立,按照頁面提示完成Secret的建立。
配置項
取值
樣本
名稱
opentelemetry-exporter-config
重要請使用此值,不要自訂名稱。

類型
Opaque
以下為添加密鑰資料配置項:
名稱
grpc-token
重要請使用此值,請勿自訂名稱。

值
步驟一擷取的鑒權Token資訊
對資料值進行 base64 編碼
是
步驟三:安裝 OpenTelemetry Collector
OpenTelemetry Collector 是一個可觀測資料擷取器,提供了統一的資料接收、處理和匯出能力。OpenTelemetry Collector 可支援對接各類開源可觀測資料(例如 Jaeger、Prometheus、Fluent Bit 等),避免需要部署多個可觀測採集器。
登入Container Service管理主控台,在左側導覽列選擇。
搜尋opentelemetry-collector,點擊卡片。
此頁麵包含組件介紹和組件Helm Chart的參數說明。您可以在此頁面瞭解,也可以根據下文指引完成必要配置。
然後在頁面右上方單擊一鍵部署,選擇叢集和命名空間,按照頁面指引進入下一步。
組件的命名空間需與步驟二建立的Secret命名空間保持一致。
選擇Chart版本(建議使用預設版本),設定 Chart 參數,按照頁面提示完成Chart的安裝。
參數
說明
樣本
mode設定為
daemonset,以DaemonSet的模式部署 OpenTelemetry Collector 。mode: "daemonset"
enableXtraceTokenFromSecret設定為
true,以通過環境變數引用鑒權 Token。開啟後,鑒權 Token 將不會以明文的方式儲存在 OpenTelemetry Collector 的 Secret 中,避免敏感資訊泄露。enableXtraceTokenFromSecret: true請確保您已完成步驟二的操作,避免Chart部署失敗。

exporters添加名為
otlp的資料匯出器(Exporter),用於指定鏈路資料上報的地址。將
endpoint設定為步驟一中擷取的內網存取點。exporters: otlp: endpoint: <此前擷取的內網存取點> tls: insecure: true headers: Authentication: ${env:OPENTELEMETRY_GRPC_TOKEN}
receivers添加名為
otlp/kubelet的接收器(Receiver),監聽本地 4317 連接埠,通過 OTLP/gRPC 協議接收 kubelet 鏈路資料。receivers: otlp/kubelet: # 建立一個名為 otlp/kubelet 的接收器。 protocols: grpc: endpoint: 127.0.0.1:4317
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
hostNetwork設定為
true,OpenTelemetry Collector 可直接使用主機的 IP 位址和連接埠進行通訊。hostNetwork: true
成功安裝後,頁面將自動跳轉至Helm頁面。
前往工作負載 > 守護進程集頁面,選擇組件的命名空間,如有名為 opentelemetry-collector-agent 的 DaemonSet 且所有Pod運行狀態為Running,表示安裝成功。
步驟四:為 kubelet 開啟鏈路追蹤
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在節點池列表的操作列下的,按照頁面提示添加自訂參數、瞭解注意事項、選擇待升級的節點,並設定批次更新策略(每批次的最大並行數),然後單擊提交。
下拉選擇 tracing,並選擇 endpoint,值填寫為
localhost:4317,代表 kubelet 鏈路資料將發送至 localhost:4317。該地址與中步驟三 otlp/kubelet Receiver 的endpoint對應。再次下拉選擇 tracing,並選擇 samplingRatePerMillion,控制採樣率,決定每一百萬次請求中被採樣的比例。鏈路追蹤可能會對叢集網路和CPU效能產生一定影響,具體取決於整體配置情況。如遇效能問題,可根據叢集的負載情況適當調低採樣率。
例如,1000000表示100%的採樣率,即每一百萬次請求中,所有請求都會被採樣和記錄;100000表示10%的採樣率;10000表示1%的採樣率。

步驟五:在可觀測鏈路 OpenTelemetry 版上查看調用鏈路資料
登入可觀測鏈路 OpenTelemetry 版控制台,在左側導覽列單擊應用列表。
在頁面頂部選擇地區,然後單擊應用程式名稱kubelet,按照控制台指引查看鏈路資訊。
下方僅介紹主要頁簽。如需瞭解不同頁簽的詳細說明,請參見應用詳情的相關文檔。
調用鏈分析頁簽:kubelet請求的調用鏈、應用拓撲等。
在頁面左上方的搜尋方塊輸入
resources.k8s.cluster.name : "叢集ClusterId",篩選指定叢集的調用鏈。叢集ClusterId可在叢集列表中擷取。
單擊Trace列表的Trace ID,查看一個kubelet請求的Trace詳情,包括拓撲視圖、涉及的服務數、調用的介面數等。
提供服務頁簽:kubelet對外提供的介面的請求數、錯誤數和平均耗時等。
依賴服務頁簽:對kubelet依賴服務的請求,例如請求containerd的請求數、錯誤數、平均耗時等。
相關文檔
如需監測並記錄集群API Server組件的鏈路資料,請參見為叢集控制面組件啟用鏈路追蹤。
> Kubelet 配置