LoginSignup
2
0

Kubernetes 1.28 SIG Instrumentation の変更内容

Last updated at Posted at 2023-08-24

はじめに

ここでは、Kubernetes 1.28 の CHANGELOG からメトリクスの変更と SIG Instrumentation の取り組みについてまとめています。

Kubernetes v1.28 で SIG Instrumentation が扱う主要なテーマはありませんが、SIG Node のテーマに SIG Instrumentation に関連した施策があるため記載します(注意: v1.28 のマイルストーンから外れました)。

CRI container and pod statistics without cAdvisor

このテーマは SIG Node のため詳細については割愛しますが、kubelet の /metrics/cadvisor/stats/summary エンドポイントで取得できる統計情報の取得元の整理と改善が進められています。

エンドポイント自体の廃止などはノンゴールとなっていますが、一部のメトリクスは新しい情報源である CRI API でサポートされない可能性もあるため注視していきたいと思います。
この施策によりメトリクスの変更がある場合も可能な限り メトリクスの変更 で記載していきます。

ただし、残念ながら v1.28 のマイルストーンからは外れたため Beta ではなく Alpha のままとなっています。
cAdvisor-less, CRI-full Container and Pod Stats · Issue #2371 · kubernetes/enhancements

それ以外の更新された KEP のマイルストーンと参考リンクを記載しておきます。

それでは Metrics Changes について説明していきます。
メトリクスの変更 は、私が全ての変更点からメトリクスの変更に関連するものを抜粋した内容となります。

メトリクスの変更(Metrics Changes)

component-base

  • [ADD] client-go の DNS 解決のレイテンシーを計測するメトリクスが追加されました(#115357, @￰mfojtik)
    • Histogram: rest_client_dns_resolution_duration_seconds
      • Labels: {"host"}
      • Buckets: {0.005, 0.025, 0.1, 0.25, 0.5, 1.0, 2.0, 4.0, 8.0, 15.0, 30.0}
  • [ADD] client-go の http.Transports の処理で、キャッシュエントリ数とトランスポートの作成数を記録するメトリクスが追加されました(#117295, @￰aojea)
    • Gauge: rest_client_transport_cache_entries
      • Labels: None
    • Counter: rest_client_transport_create_calls_total
      • Labels: {"result"}
  • [MOD] 次のメトリクスが Beta になりました(#119264, @￰logicalhan)
    • Gauge: kubernetes_feature_enabled
  • [MOD] 次のメトリクスの名前がリネームされ、Beta になりました(#119264, @￰logicalhan)
    • Counter: registered_metric_total => registered_metrics_total
    • Counter: disabled_metric_total => disabled_metrics_total
    • Counter: hidden_metric_total => hidden_metrics_total
  • [MOD] 次のメトリクスが Beta になりました(#118986, @￰logicalhan)
    • Counter: kubernetes_healthcheck
    • Counter: kubernetes_healthchecks_total

kube-apiserver

  • [ADD] ValidatingWebhookConfiguration、または MutatingWebhookConfiguration の matchCondition の評価時間と除外された数を記録するメトリクスが追加されました(#119311, @￰ivelichkovich)
    • Histogram: apiserver_admission_match_condition_evaluation_seconds
      • Labels: {"name", "kind", "type", "operation"}
      • Buckets: {0.001, 0.005, 0.01, 0.025, 0.1, 0.2, 0.25}
    • Counter: apiserver_admission_match_condition_exclusions_total
      • Labels: {"name", "kind", "type", "operation"}
  • [ADD] apiserver から etcd へのリクエストをモニタリングするためのメトリクスが追加されました。type ラベルにはリソースタイプが記録されます(#117222, @￰iyear)
    • Counter: etcd_requests_total
      • Labels: {"operation", "type"}
    • Counter: etcd_request_errors_total
      • Labels: {"operation", "type"}
  • [ADD] Encryption Configuration Controller の暗号設定の自動再読み込みをモニタリングするメトリクスが追加されました (#119008, @￰nilekhc)
    • Counter: apiserver_encryption_config_controller_automatic_reload_failures_total
      • Help: Total number of failed automatic reloads of encryption configuration.
      • Labels: None
    • Counter: apiserver_encryption_config_controller_automatic_reload_success_total
      • Help: Total number of successful automatic reloads of encryption configuration
      • Labels: None
    • Gauge: apiserver_encryption_config_controller_automatic_reload_last_timestamp_seconds
      • Help: Timestamp of the last successful or failed automatic reload of encryption configuration
      • Labels: None
  • [ADD] Authorization Webhook をモニタリングするメトリクスが追加されました(#117211, @￰HirazawaUi)
    • Counter: authorization_attempts_total
      • Labels: {"result"}
    • Histgram: authorization_duration_seconds
      • Labels: {"result"}
      • Buckets: metrics.ExponentialBuckets(0.001, 2, 15)
  • [ADD] CRD Conversion Webhook のリクエストをモニタリングするメトリクスが追加されました(#118292, @￰cchapla)
    • Counter: apiserver_webhook_conversion_request_total
      • Labels: {"result", "failure_type"}
    • Histogram: apiserver_webhook_conversion_duration_seconds
      • Labels: {"result", "failure_type"}
      • Bucket: {0.005, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 30, 45, 60}
  • [ADD|DEPRECATED] 次の紛らわしい名前のメトリクスが非推奨となり、代わりのメトリクスが追加されました(#118960, @￰MikeSpreitzer)
    • [DEPRECATED] Gauge: apiserver_flowcontrol_request_concurrency_in_use
    • [ADD] Gauge: apiserver_flowcontrol_current_executing_seats
      • Labels: {"priorityLevel", "flowSchema"}
  • [MOD] 次の Flowcontrol に関するメトリクスが Beta となりました(#119110, @￰andrewsykim)
    • Histgram: apiserver_flowcontrol_request_wait_duration_seconds
    • Gauge: apiserver_flowcontrol_current_executing_seats
    • Gauge: apiserver_flowcontrol_nominal_limit_seats
    • Counter: apiserver_flowcontrol_rejected_requests_total
    • Counter: apiserver_flowcontrol_dispatched_requests_total
    • Gauge: apiserver_flowcontrol_current_inqueue_requests
    • Gauge: apiserver_flowcontrol_current_executing_requests
  • [MOD] 次のメトリクスがリネームされました(#118812, @￰serathius)
    • apiserver_storage_db_total_size_in_bytes => apiserver_storage_size_bytes
  • [MOD] 次のメトリクスのバケットを更新しました(#118945, @￰andrewsykim)
    • Histogram: apiserver_request_filter_duration_seconds
      • Buckets: {0.0001, 0.0003, 0.001, 0.003, 0.01, 0.03, 0.1, 0.3, 1.0, 5.0, 10.0, 15.0, 30.0}
    • Histogram: apiserver_request_wait_duration_seconds
      • Buckets: {0, 0.005, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 15, 30}
  • [DEPRECATED] 次のメトリクスが非推奨となりました。合わせてヘルプテキストも修正されています (#118959, @￰MikeSpreitzer)
    • Gauge: apiserver_flowcontrol_request_concurrency_limit
      • 代わりに apiserver_flowcontrol_nominal_limit_seats の利用を検討してください

kubelet

  • [ADD] /stats/summary/metrics/resource のエンドポイントにスワップのメトリクスが追加されました(#118865, @￰iholder101)
    • Gauge: node_swap_usage_bytes
      • Labels: None
    • Gauge: pod_swap_usage_bytes
      • Labels: None
    • Gauge: container_swap_usage_bytes
      • Labels: None
  • [ADD] CRI: Windows 固有のメモリメトリクスが公開されました(#119238, @￰kiashok)
  • [FIX] volume_plugin="kubernetes.io/empty-dir" のラベル値でカウントされるエラー数に、Projected Volume が作成されるたびにカウントされている問題が修正されました(#117022, @￰mpatlasov)
    • Couner: storage_operation_duration_seconds_count
  • [FIX] 再起動待ちの Static Pod で正しくカウントされていない問題が修正されました(#116995, @￰smarterclayton)
    • Counter: kubelet_working_pods

kube-controller-manager

  • [MOD] Attach detach controller に、以下のメトリクスのラベルが追加されました(#119185, @￰xing-yang)
    • attachdetach_controller_forced_detaches
      • Labels: {"reason"}
  • [FIX] Pod GC による強制削除の全ての挙動で記録されるように修正され、ラベルも追加されました(#118480, @￰carlory)
    • Counter: force_delete_pods_total
      • Labels: {"namespace", "reason"}
    • Counter: force_delete_pod_errors_total
      • Labels: {"namespace", "reason"}

kube-scheduler

  • [DEL] 次のメトリクスが削除されました(#117727, @￰kerthcet)
    • Gauge: scheduler_scheduler_goroutines
      • 代わりに scheduler_goroutines を利用してください
  • [MOD] extension_point ラベルに PrescoreScore のサポートが追加されました。PrescoreScore に関係のない Pod はカウントされません。(#118025, @￰AxeZhan)
    • Counter: scheduler_plugin_evaluation_total
      • Labels: {"extension_point","plugin","profile"}
  • [FIX] Pod が PreEnqueue に失敗した時間を含まないように修正されました(#118049, @￰helayoty)
    • Histgram: pod_scheduling_duration_seconds
      • Labels: {"attempts"}

kube-proxy

  • kubeproxy_sync_proxy_rules_duration_seconds メトリクスとは別に、以下のメトリクスが追加されました。(#117787, @￰danwinship)
    • Histgram kubeproxy_sync_full_proxy_rules_duration_seconds
      • Labels: None
      • Buckets: metrics.ExponentialBuckets(0.001, 2, 15)
    • Histgram: kubeproxy_sync_partial_proxy_rules_duration_seconds
      • Labels: None
      • Buckets: metrics.ExponentialBuckets(0.001, 2, 15)
    • :pencil: kubeproxy_sync_proxy_rules_duration_seconds は 2 つのメトリクスは分割されましたが、今のところ元のメトリクスも継続して利用できるようです
  • [MOD|ADD] sync_proxy_rules_iptables_total メトリクスは v1.27 以前の方法である kube-proxy が管理する iptables のルール総数を記録する方法にリバートされました。最後に同期したルール数をカウントするメトリクスは別のメトリクスとして追加されました。(#119140, @￰danwinship)
    • Gauge: kubeproxy_sync_proxy_rules_iptables_last
      • Labels: {"table"}

その他

  • [ADD] Cloud Controller Manager の Node Controller が Node の初期同期のタイミングでメトリクスを出力するようになりました。このメトリクスは新しい Node の作成と、クラウドプロバイダのテイントの削除、Node Controller の初期アクションとの間のレイテンシーを記録します。これらのメトリクスは、Cloud Manager の --concurrent-node-syncs フラグを設定する際に参照する必要があります。(#119241, @￰cartermckinnon)
    • Histgram: node_controller_cloud_provider_taint_removal_delay_seconds
      • Labels: None
      • Buckets: metrics.ExponentialBuckets(1, 4, 6)
    • Histgram: node_controller_initial_node_sync_delay_seconds
      • Labels: None
      • Buckets: metrics.ExponentialBuckets(1, 4, 6)

メトリクス以外の変更点

  • component-base/logs は設定を複数回適用するとエラーとして処理するようになりました(#117108, @￰pohly)
  • cAdvisor が v0.47.2 にアップデートされました。このバージョンでは cri-o でコンテナがリスタートした場合にメトリクスが欠損する問題が修正されています(#118774, @￰harche)
  • [KMSv2] ログ中の KeyID 値をハッシュ化する機能が追加されました。KeyID 値は機密情報であるため平文で記録しないようにします。ハッシュ化することで、必要な情報を記録しつつ、データの機密性を保護できます(#118988, @￰nilekhc)
  • スケジューラーは Pod に関連した設定がない場合、 InterPodAffinity Score プラグインの処理をスキップします。この処理によりスケジューラーのメトリクスに影響が生じます(#117794, @￰utam0k)
  • スケジューラーは Pod Topology Spread Constraint の設定がない場合、PodTopologySpread Filter プラグインの処理をスキップします。この処理によりスケジューラーのメトリクスに影響が生じます(#117683, @￰utam0k)
  • スケジューラーは Pod に関連した設定がない場合 PodTopologySpread Score プラグインの処理をスキップします。この処理によりスケジューラーのメトリクスに影響が生じます(#118608, @￰AxeZhanutam0k)
  • kube-proxy に --logging-format フラグが追加され構造化ロギングがサポートされました(#117800, @￰cyclinder)
  • [Addons] metrics-server の metric-resolution が 30s から 15s に変更されました(#117121, @￰dgrisonnet)
  • klogv2.100.1 にアップデートされました。テキスト出力の構造体、マップ、スライスのエンコーディングに JSON が使用されます(#117687, @￰pohly)
  • [Scheduler] プリエンプトされた Pod の詳細がログに記録されうようになりました(ログレベル 2 ) (#117214, @￰HirazawaUi)
2
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
2
0