LoginSignup
0
0

Kubernetes 1.30 SIG Instrumentation の変更内容

Last updated at Posted at 2024-04-22

はじめに

ここでは Kubernetes v1.30 の Changelog からメトリクスの変更と SIG Instrumentation の取り組みについてまとめました。

Kubernetes v1.30 では以下の KEP が Beta となりました。

KEP-3077: Contextual Logging

前回の v1.29 がリリースされた時に公式からブログが公開されていますので、詳細はこちらの記事を参照してください。

その他にも以下の KEP が Stable となりました。

メトリクスの変更

component-base

  • :new: すべてのコンポーネントの /metrics/slis エンドポイントにプロセスの開始時間を記録するメトリクスが追加されました(#122750, @￰richabanker)
    • Gauge: process_start_time_seconds
      • Labels: {}

kube-apiserver

  • :new: ウォッチのキャッシュが新しくなるまでの待ち時間を測定するメトリクスが追加されました(#123190, @￰padlar)
    • Histogram: apiserver_watch_cache_read_wait
      • Labels: {"resource"}
  • :new: --authorization-config で指定されたファイルが更新されるとリロードし、メトリクスに記録されるようになりました。リロードに成功した場合は status="success" 、失敗した場合は status="failed" が記録されます(#121946, @￰liggitt)
    • Gauge: apiserver_authorization_config_controller_automatic_reload_last_timestamp_seconds
      • Labels: {"status", "apiserver_id_hash"}
  • :new: Authorization Webhook のマッチ条件について以下のメトリクスが記録されるようになりました(#123611, @￰ritazh)
    • Counter: apiserver_authorization_match_condition_evaluation_errors_total
      • Labels: {"type", "name"}
    • Counter: apiserver_authorization_match_condition_exclusions_total
      • Labels: {"type", "name"}
    • Histogram: apiserver_authorization_match_condition_evaluation_seconds
      • Labels: {"type", "name"}
  • :new: JWT Authenticator で以下のメトリクスが記録されるようになりました(#123793, @￰aramase)
    • Histogram: apiserver_authentication_config_controller_automatic_reloads_total
      • Labels: {"status", "apiserver_id_hash"}
    • Histogram: apiserver_authentication_config_controller_automatic_reload_last_timestamp_seconds
      • Labels: {"status", "apiserver_id_hash"}
  • :new: API サーバーの暗号化設定のリロード回数を記録するメトリクスが追加されました。このメトリクスは、success または failure を値とする status ラベルを持ちます(#123179, @￰aramase)
    • Counter: apiserver_encryption_config_controller_automatic_reloads_total
      • Labels: {"status", "apiserver_id_hash"}
    • :warning: この変更にともない以下のメトリクスが非推奨となりました
      • apiserver_encryption_config_controller_automatic_reload_success_total
      • apiserver_encryption_config_controller_automatic_reload_failure_total
      • 代わりに上記で追加された apiserver_encryption_config_controller_automatic_reloads_total を利用してください
  • :new: JWT Authenticator のトークン認証のレイテンシを記録するメトリクスが追加されました(#123225, @￰aramase)
    • Histogram: apiserver_authentication_jwt_authenticator_latency_seconds
      • Labels: {"result", "jwt_issuer_hash"}
  • :new: 認可の結果を decision ラベルに alloweddenied で記録するメトリクスが追加されました(#123333, @￰liggitt)
    • Counter: apiserver_authorization_decisions_total
      • Labels: {"type", "name", "decision"}
  • :new: Authorization Webhook で次のメトリクスを記録するようになりました(#123639, @￰liggitt)
    • Counter: apiserver_authorization_webhook_evaluations_total
      • Labels: {"name", "result"}
    • Histogram: apiserver_authorization_webhook_duration_seconds
      • Labels: {"name", "result"}
    • Counter: apiserver_authorization_webhook_evaluations_fail_open_total
      • Labels: {"name", "result"}
  • :up: ラベル名をリネームし、StabilityLevel が Stable となりました(#124283, dims) (#123342, @￰logicalhan)
    • Gauge: apiserver_storage_size_bytes
      • Labels: {"cluster" => "storage_cluster_id"}

kubelet

  • :new: 待機時間を含め、コンテナイメージがダウンロードされるまでの時間(秒)を記録するメトリクスが追加されました。このメトリクスはイメージサイズをラベルに持ちますが、おもしろいことにラベル値にもバケットのようなものが定義されており、以下の範囲ごとに記録されます(#121719, @￰ruiwen-zhao)
    • Histogram: kubelet_image_pull_duration_seconds
      • Labels: {"image_size_in_bytes"}
      • image_size_in_bytes ラベルの値
        • {0-10MB, 10MB-100MB, 100MB-500MB, 500MB-1GB, 1GB-5GB, 5GB-10GB, 10GB-20GB, 20GB-30GB, 30GB-40GB, 40GB-60GB, 60GB-100GB, GT100GB}
  • :new: LifecycleHandler のスリープが予期せず終了した回数を記録するメトリクスが追加されました(#122456, @￰AxeZhan)
    • Gauge: kubelet_sleep_action_terminated_early_total
      • Labels: {}
  • :new: Memory Manager のピニングの割当を記録するメトリクスが追加されました(#121778, @￰Tal-or)
    • Counter: kubelet_memory_manager_pinning_requests_total
      • Labels: {}
    • Counter: kubelet_memory_manager_pinning_errors_total
      • Labels: {}
  • :new: 開発者がノード起動時の遅延問題の原因を把握できるように、最初のネットワーク Pod が起動するのにかかる時間(イメージのダウンロードやinitコンテナの実行時間を除く)を記録するメトリクスが追加されました。Pod 作成のタイムスタンプから、すべてのコンテナが起動しウォッチで観測されるまでの時間(秒)となります(#121720, @￰aojea)。
    • Gauge: kubelet_first_network_pod_start_sli_duration_seconds
      • Labels: {}
  • :up: agespace の値を持つ reason ラベルが追加されました。これにより何が要因でコンテナイメージが GC されたかが区別できるようになりました(#123345, @￰haircommander)
    • Counter: kubelet_image_garbage_collected_total
      • Labels: {"reason"}
  • :up: RWXROXRWORWOP などの値を持つ、access_mode ラベルが追加されました#123667, @￰jsafrane)
    • volume_manager_selinux_*
      • Labels: {"access_mode"}

kube-scheduler

  • :up: 不要な時は NodeAffinity Score プラグインをスキップするようになりました。そのため次のメトリクスが増加している可能性があります(#117024, @￰sanposhiho)
    • Histogram: scheduler_plugin_execution_duration_seconds{extension_point="score", plugin="NodeAffinity"}
  • :warning: 非推奨バージョンが 1.28 から 1.29 に修正されました(#123038, @￰alculquicondor)
    • scheduler_pod_scheduling_duration_seconds
      • 代替は scheduler_pod_scheduling_sli_duration_seconds を利用してください

kube-proxy

  • なし

その他

  • client-go: リーダーが最適化されずに更新されているかどうかを監視できるメトリクスが追加されました(#122069, @￰linxiulei)。
    • Counter: leader_election_slowpath_total
      • Labels: {"name"}

メトリクス以外の変更点

  • kubelet: 同時にログローテーションを行う機能が有効になりました。これは、containerLogMaxWorkers という設定により、実行可能な同時ローテーションの最大数を決定します。また、containerLogMonitorInterval という設定で監視期間を設定します(#114301, @￰harshanarayana)
  • コンポーネントのテキストロギングにtextloggerが使われるようになりパフォーマンスが向上しました(#114672, @￰pohly)
  • kube-controller-manager: Broadcaster ロギングのグローバルレベルを 3 に更新し、ログベルを下げることでユーザーがイベントメッセージを無視できるようにしました。これによりログのノイズが減少します(#122293, @￰mengjiao-liu)
  • audit-log: apiserver.latency.k8s.io/decode-response-object アノテーションが追加され、デコード時間が記録されるようになりました(#121512, @￰HirazawaUi)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0