Kubelet トレースは、Pod のライフサイクル管理や API コールなど、Kubelet がノードで実行する主要な操作を記録します。これにより、システムパフォーマンスのボトルネックを特定し、クラスターの問題をトラブルシューティングするのに役立ちます。有効にすると、Kubelet トレースデータは自動的に Managed Service for OpenTelemetry にレポートされます。このサービスは、トレース詳細やリアルタイムトポロジーなどの視覚的なモニタリングデータを提供します。
トレースを初めて使用する場合は、「基本概念」で基本を学んでください。
前提条件
-
Kubernetes 1.28 以降を実行する ACK マネージドクラスターまたは ACK 専用クラスターが必要です。クラスターをアップグレードするには、「クラスターを手動でアップグレードする」をご参照ください。
-
Helm v3 以降がインストールされている必要があります。Helm をアップグレードするには、「Helm V2 から Helm V3 への移行」をご参照ください。
この機能に必要な OpenTelemetry Collector コンポーネントをインストールするには、Helm 3.9 以降を使用する必要があります。
-
Managed Service for OpenTelemetryが有効化され、承認されました。詳細については、「はじめに」をご参照ください。
Managed Service for OpenTelemetry は、エンドツーエンドのトレース再構築、リクエスト量の統計、トレースのトポロジー、アプリケーションの依存関係分析など、分散アプリケーション向けのツールを提供します。
この機能を使用すると、ACK クラスターの料金に加えて、Managed Service for OpenTelemetry の可観測性データの量に対して課金されます。Managed Service for OpenTelemetry の無料クォータと料金詳細については、「課金」をご参照ください。
次の手順に従って、クラスター内のデータプレーンコンポーネントのトレースを有効化します。
-
Managed Service for OpenTelemetry と Managed Service for OpenTelemetry のデータを Managed Service for OpenTelemetry から取得し、認証トークンをクラスターシークレットに保存します。これにより、OpenTelemetry Collector は設定および認証情報を読み取ることができます。
-
OpenTelemetry Collector コンポーネントをデプロイして、可観測性データを収集、処理、エクスポートします。
ACK マーケットプレイスを使用すると、DaemonSet モードで OpenTelemetry Collector をクラスターに迅速にデプロイできます。
-
Kubelet の設定でトレースを有効にし、サンプリングレートなどの関連パラメーターを設定すると、OpenTelemetry Collector は収集したデータを Managed Service for OpenTelemetry に転送します。
ステップ 1:エンドポイントと認証トークンの取得
-
Managed Service for OpenTelemetry コンソールにログインします。 左側のナビゲーションペインで、アクセスセンターをクリックします。
-
オープンソースフレームワーク セクションで、[OpenTelemetry] カードをクリックします。
-
データレポート用のリージョンを選択し、Connection Method を Alibaba Cloud 内部ネットワークモード に、送信方式 を gRPC に設定します。後で使用するため、エンドポイント情報を保存しておきます。
リージョンを初めて使用する場合、そのリソースは自動的に初期化されます。画面の指示に従ってプロセスを完了してください。
ページにAlibaba Cloud VPC エンドポイントアドレスと認証トークンが表示されます。対応するコピーボタンをクリックしてコピーします。注:Golang を使用してデータを報告する場合、エンドポイントアドレスから
http://プレフィックスを削除してください。
ステップ 2:認証トークンをクラスターの Secret に保存
認証トークンを ACK クラスター内の Secret に保存します。OpenTelemetry Collector は、この認証トークンを変数として参照して使用します。Secret と、次のステップでインストールする OpenTelemetry Collector は、同じ名前空間に存在する必要があります。
デフォルトでは、OpenTelemetry Collector は otel-collector 名前空間にデプロイされます。otel-collector 名前空間を手動で作成するか、別の名前空間を使用して OpenTelemetry Collector のインストール時にそれを選択できます。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
-
作成する をクリックし、画面の指示に従ってシークレットを作成します。
パラメーター
値
例
[名前]
opentelemetry-exporter-config
重要この名前を正確に使用してください。カスタム名は指定しないでください。
タイプとして [Opaque] を選択します。
[タイプ]
Opaque
次のパラメーターを設定して、データキーを追加します。
[名前]
grpc-token
重要この名前を正確に使用してください。カスタム名は指定しないでください。
[値] フィールドに認証トークンを入力し、[データ値をBase64でエンコード] を選択します。
[値]
ステップ 1 で取得した認証トークン。
[Base64 を使用してデータ値のエンコード]
はい
ステップ 3:OpenTelemetry Collector のインストール
OpenTelemetry Collector は、データの受信、処理、エクスポートのための統一された機能を提供する可観測性データコレクターです。Jaeger、Prometheus、Fluent Bit などのさまざまなオープンソースの可観測性データソースをサポートしており、複数のコレクターをデプロイする必要がなくなります。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
-
opentelemetry-collectorを検索し、アプリケーションカードをクリックします。このページには、コンポーネントの Helm チャートに関する説明とパラメーターのリファレンスが記載されています。このページの情報を確認するか、以下の手順に従って必要な設定を完了できます。
-
ページの右上隅で、デプロイ をクリックします。クラスターと名前空間を選択し、画面の指示に従って次のステップに進みます。
コンポーネントの名前空間は、ステップ 2 で作成した Secret の名前空間と同じである必要があります。
-
チャートバージョンを選択します。デフォルトバージョンの使用を推奨します。チャートのパラメーターを設定し、画面の指示に従ってチャートをインストールします。
パラメーター
説明
modeOpenTelemetry Collector を DaemonSet としてデプロイするには、このパラメーターを
daemonsetに設定します。mode: "daemonset"enableXtraceTokenFromSecret環境変数を使用して認証トークンを参照するには、このパラメーターを
trueに設定します。この方法では、OpenTelemetry Collector の設定に認証トークンが平文で格納されるのを防ぎ、機密情報の漏洩を回避します。enableXtraceTokenFromSecret: trueチャートのデプロイの失敗を防ぐために、ステップ 2 の操作を完了していることを確認してください。
exportersotlpという名前のエクスポーターを追加し、トレースデータの報告先アドレスを指定します。ステップ 1 で取得した内部エンドポイントを
endpointに設定します。exporters: otlp: endpoint: <your_intranet_endpoint> tls: insecure: true headers: Authentication: ${env:OPENTELEMETRY_GRPC_TOKEN}receiversOTLP/gRPC 経由で Kubelet トレースデータを受信するために、ローカルポート 4317 でリッスンするレシーバー
otlp/kubeletを追加します。receivers: otlp/kubelet: # Creates a receiver named otlp/kubelet. protocols: grpc: endpoint: 127.0.0.1:4317service.pipelines.tracesトレース処理パイプラインを設定します。
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/kubelethostNetworkこのパラメーターを
trueに設定します。これにより、OpenTelemetry Collector は、ホストの IP アドレスとポートを通信に直接使用できるようになります。hostNetwork: trueインストールが成功すると、自動的に Helm ページにリダイレクトされます。
ワークロード > Daemon Sets ページに移動します。コンポーネントの名前空間を選択します。
opentelemetry-collector-agentという名前の DaemonSet が存在し、そのすべての Pod が実行中であれば、インストールは成功です。
ステップ 4:Kubelet のトレースの有効化
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
-
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
-
ノードプールリストで、対象のノードプールを見つけ、アクション 列の を選択します。カスタムパラメーターを追加し、注意事項を確認し、アップグレードするノードを選択して、バッチ更新ポリシー (1 回の修復で修復可能なノード数の上限) を設定します。その後、送信 をクリックします。
-
ドロップダウンリストから、[トレーシング] を選択し、次に [エンドポイント] を選択します。値を
localhost:4317に設定します。これにより、Kubelet トレースデータがlocalhost:4317に送信されます。このアドレスは、ステップ 3 で設定した otlp/kubelet レシーバーのendpointに対応します。 -
ドロップダウンリストから再度 [tracing] を選択し、次に [samplingRatePerMillion] を選択します。このパラメーターはサンプリングレートを制御し、100万 リクエストごとにサンプリングされるリクエスト数を決定します。全体的な設定によっては、トレースがクラスターのネットワークと CPU パフォーマンスに影響を与える可能性があります。パフォーマンスの問題が発生した場合は、クラスターの負荷に基づいてサンプリングレートを下げてください。
たとえば、値が 1000000 の場合は 100% のサンプリングレートを示し、すべてのリクエストがサンプリングされることを意味します。値が 100000 の場合は 10% のサンプリングレート、10000 の場合は 1% のサンプリングレートを示します。
-
ステップ 5:OpenTelemetry でのトレースデータの表示
-
Managed Service for OpenTelemetry コンソールにログインします。 左側のナビゲーションペインで、アプリケーションリスト をクリックします。
-
ページの上部でリージョンを選択し、アプリケーション名 [kubelet] をクリックします。コンソールの指示に従ってトレース情報を表示します。
このセクションでは、主要なタブのみを説明します。各タブの詳細については、「アプリケーション詳細」をご参照ください。
-
呼び出しチェーン分析 タブ: Kubelet リクエストのトレースやアプリケーション トポロジーなどの情報を表示します。
-
左上隅の検索ボックスに
resources.k8s.cluster.name : "YourClusterId"を入力して、特定のクラスターのトレースを絞り込みます。クラスター ID は、ACK コンソールのクラスターリストから取得できます。
-
トレースリストでトレース ID をクリックすると、トポロジービュー、関連するサービス数、API コール数など、Kubelet リクエストトレースの詳細が表示されます。
-
-
[サービスの提供] タブ: Kubelet が提供するインターフェイスのリクエスト数、エラー数、平均レイテンシーを表示します。
-
[依存サービス] タブ: containerd などの Kubelet が依存するサービスへのリクエストに関する情報を表示します。この情報には、リクエスト数、エラー数、平均レイテンシーが含まれます。
-
関連ドキュメント
クラスターの API サーバーコンポーネントのトレースデータを監視および記録するには、「クラスターコントロールプレーンコンポーネントのトレースの有効化」をご参照ください。
> Kubelet の設定