kubelet のトレース分析は、ポッド ライフサイクル管理や API 呼び出しなど、ノード上で kubelet によって実行される主要な操作のトレースを記録できます。これにより、システム パフォーマンス ボトルネックの特定とクラスターの問題のトラブルシューティングに役立ちます。トレース分析を有効にすると、kubelet のリンク情報が Managed Service for OpenTelemetry に自動的にレポートされます。この機能は、トレースの詳細やリアルタイム トポロジーなどのモニタリングデータを提供します。
トレースに慣れていない場合は、基本概念を参照して、関連する基本概念を理解することができます。
前提条件
Kubernetes 1.28 以後を実行する ACK マネージドクラスター または ACK 専用クラスター が作成されていること。クラスターをアップグレードする方法の詳細については、「ACK クラスタを手動でアップグレードする」をご参照ください。
Helm のバージョンが V3 であること。Helm を更新する方法の詳細については、「Helm V2 から Helm V3 に更新する」をご参照ください。
OpenTelemetry Collector をインストールする場合、Helm のバージョンは 3.9 以後でなければなりません。
Managed Service for OpenTelemetry がアクティブ化され、承認されていること。詳細については、「準備」をご参照ください。
Managed Service for OpenTelemetry は、完全なトレース復元、リクエスト量統計、トレース トポロジー、アプリケーション依存関係分析など、分散アプリケーション向けのツールを提供します。
次のセクションでは、クラスタ データプレーンでトレース分析を有効にするプロセスについて説明します。
Managed Service for OpenTelemetry のエンドポイントと認証トークンを取得し、認証トークンをクラスタ シークレットに保存して、OpenTelemetry Collector が構成と認証情報を読み取れるようにします。
監視データの収集、処理、エクスポートを行うために、OpenTelemetry Collector をデプロイします。
Container Service for Kubernetes (ACK) のマーケットプレイスでは、OpenTelemetry Collector を DaemonSet モードでクラスターにデプロイできます。
kubelet を使用してトレース分析を有効にし、関連パラメータ (サンプルレート) を構成します。収集されたデータは、OpenTelemetry Collector を使用して Managed Service for OpenTelemetry に転送されます。
ステップ 1: エンドポイントと認証トークンを取得する
Managed Service for OpenTelemetry コンソール にログインします。左側のナビゲーションウィンドウで、[統合センター] をクリックします。
[オープンソース フレームワーク] セクションで、[OpenTelemetry] カードをクリックします。
データ レポーティング リージョンを選択し、[接続タイプ] を [Alibaba Cloud VPC ネットワーク] に、[エクスポート プロトコル] を [gRPC] に設定します。その後、後で使用するためにエンドポイント情報を保存します。
初めてアクセスするリージョンでは、リソースが自動的に初期化されます。ページの指示に従って操作を実行してください。

ステップ 2: 認証トークンをクラスターのシークレットに保存する
認証トークンを ACK クラスタ内のシークレットに保存し、OpenTelemetry Collector の環境変数を通じて参照します。シークレットは、ステップ 3 でデプロイされる OpenTelemetry Collector と同じ名前空間に存在する必要があります。
デフォルトでは、OpenTelemetry Collector は otel-collector 名前空間にデプロイされます。 otel-collector という名前の名前空間を手動で作成するか、別の名前空間を使用して、OpenTelemetry Collector をインストールするときに選択できます。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、変更するクラスターの名前をクリックします。左側のウィンドウで、 を選択します。
[作成] をクリックします。指示に従ってパラメータを構成し、シークレットを作成します。次の表にパラメータを示します。
パラメータ
有効な値
例
[名前]
opentelemetry-exporter-config
重要カスタム名ではなく、この値を使用してください。

[タイプ]
Opaque
シークレットを追加 ダイアログボックスのパラメータ:
[名前] (キー)
grpc-token
重要カスタム名ではなく、この値を使用してください。

[値]
ステップ 1 で取得した認証トークン。
[Base64 を使用してデータ値をエンコードする]
有効
ステップ 3: OpenTelemetry Collector をインストールする
OpenTelemetry Collector は、データの受信、処理、エクスポート機能を統合的に提供する、監視可能データ コレクターです。 OpenTelemetry Collector を使用すると、Jaeger、Prometheus、Fluent Bit など、さまざまなタイプのオープンソース監視可能データに接続できます。これにより、複数の監視可能コレクターをデプロイする必要がなくなります。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
opentelemetry-collector を検索して、カードをクリックします。
このページには、コンポーネントの紹介とパラメータの説明が含まれています。このページを読むか、次のガイドラインに従って必要な構成を完了することができます。
ページの右上隅にある [デプロイ] をクリックします。表示されるダイアログボックスで、クラスターと名前空間を選択します。次に、ページの指示に従って次のステップに進みます。
コンポーネントの名前空間は、ステップ 2 で作成したシークレットの名前空間と同じである必要があります。
チャート バージョンを選択します。デフォルト バージョンを使用することをお勧めします。指示に従ってパラメータを構成し、チャートをインストールします。
パラメータ
説明
例
modeこのパラメータを
daemonsetに設定して、OpenTelemetry Collector を DaemonSet モードでデプロイします。mode: "daemonset"
enableXtraceTokenFromSecretこのパラメータを
trueに設定して、環境変数を通じて認証トークンを参照します。有効にすると、トークンは OpenTelemetry Collector のシークレットにプレーンテキストとして保存されなくなり、機密情報の漏洩を防ぎます。enableXtraceTokenFromSecret: trueステップ 2 の操作を完了していることを確認してください。そうしないと、チャートのデプロイに失敗します。

exportersotlpという名前のデータ エクスポーターを追加して、トレース データがレポートされる URL を指定します。endpointを、ステップ 1 で取得したエンドポイントに置き換えます。exporters: otlp: endpoint: <取得した内部エンドポイント> tls: insecure: true headers: Authentication: ${env:OPENTELEMETRY_GRPC_TOKEN}
receiversotlp/kubeletという名前のレシーバーを追加して、ポート 4317 でリッスンし、OTLP または gRPC を使用して kubelet データを受信します。receivers: otlp/kubelet: # otlp/kubelet という名前のレシーバーを作成します。 protocols: grpc: endpoint: 127.0.0.1:4317
service.pipelines.tracesOpenTelemetry Collector の処理パイプラインを構成し、
otlpエクスポーターをservice.pipelines.traces.exportersに追加し、otlp/kubeletレシーバーをservice.pipelines.traces.receiversに追加します。traces: exporters: - debug - otlp processors: - memory_limiter - batch - resource receivers: - otlp - jaeger - zipkin - otlp/kubelet
hostNetworkこのパラメータを
trueに設定します。 OpenTelemetry Collector は、通信にホストの IP アドレスとポートを使用できます。hostNetwork: true
インストール後、ページは自動的に [Helm] ページにリダイレクトされます。
左側のナビゲーションウィンドウで、[ワークロード] > [DaemonSets] を選択します。 [DaemonSets] ページで、コンポーネントの名前空間を選択します。 opentelemetry-collector-agent という名前の DaemonSet があり、すべてのポッドのステータスが Running の場合、OpenTelemetry Collector はインストールされています。
ステップ 4: kubelet のトレース分析を有効にする
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
ノードプール[ノードプール] ページで、ターゲット ノードプールを見つけて、 列の アクション を選択します。指示に従ってカスタム パラメータを追加し、重要な考慮事項を読み、更新するノードを選択し、[バッチ更新ポリシー] ([バッチごとに修復するノードの最大数]) を構成し、[送信] をクリックします。
[カスタム パラメータ] セクションで、[+ カスタム パラメータ] をクリックします。 [名前] パラメータのドロップダウン リストから [tracing] を選択し、[endpoint] を選択します。 [値] パラメータを
localhost:4317に設定します。これは、kubelet トレース データが localhost:4317 に送信されることを示します。このアドレスは、ステップ 3 の otlp/kubelet レシーバーのendpointに対応します。[+ カスタム パラメータ] をクリックし、[名前] パラメータのドロップダウン リストから [tracing] を選択し、[samplingRatePerMillion] を選択します。コントロール サンプルレートは、100 万リクエストあたりにサンプリングされるリクエストの割合を決定します。全体的な構成によっては、トレース分析がクラスター ネットワークと CPU パフォーマンスに影響を与える可能性があります。パフォーマンスの問題が発生した場合は、クラスターの負荷に応じてサンプルレートを減らすことができます。
たとえば、1000000 は 100% のサンプルレートを表します。つまり、100 万リクエストごとに、すべてのリクエストがサンプリングされて記録されます。 100000 は 10% のサンプルレートを表します。 10000 は 1% のサンプルレートを表します。

ステップ 5: Managed Service for OpenTelemetry コンソールでトレース データを表示する
Managed Service for OpenTelemetry コンソール にログインします。左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。
ページの上部でリージョンを選択し、アプリケーション名 Kubelet をクリックし、コンソールの指示に従ってトレース情報を表示します。
次のセクションでは、メイン タブについて説明します。タブの詳細については、「アプリケーションの詳細」をご参照ください。
[トレース エクスプローラー]: kubelet リクエストのトレースとアプリケーション トポロジーを表示します。
ページの左上隅にある検索ボックスに
resources.k8s.cluster.name : "ClusterId"と入力して、指定したクラスターのトレースをフィルタリングします。クラスター ID は、クラスター リストで取得できます。
トレース リストのトレース ID をクリックして、kubelet リクエストのトレースの詳細を表示します。これには、トポロジー ビュー、関連するサービスの数、呼び出されたインターフェイスの数が含まれます。
[提供されるサービス]: kubelet によって提供されるインターフェイスのリクエスト数、エラー数、平均期間を表示します。
[依存関係]: kubelet 依存サービスへのリクエスト。たとえば、containerd のリクエスト数、エラー数、平均期間などです。
参照
クラスターの API サーバー のトレース データを監視および記録するには、「クラスター コントロールプレーン コンポーネントのトレース分析を有効にする」をご参照ください。
> [Kubelet 構成]