Kubernetes 1.25 SIG Instrumentation の変更内容

- [Kubernetes 1.23 SIG Instrumentation の変更内容](https://qiita.com/watawuwu/items/0a0496f415b818edcb4d)
- [Kubernetes 1.24 SIG Instrumentation の変更内容](https://qiita.com/watawuwu/items/fe9b8e7f8d3089813020)


## はじめに

この記事では、Kubernetes 1.25 の [CHANGELOG](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md) から Metrics の変更と SIG Instrumentation の取り組みについてまとめています。

Kubernetes v1.25 で SIG Instrumentation が扱う主要なテーマと注目したいテーマはないため、更新された KEP の Milestone を記載しておきます。

- [KEP-2845: Deprecate klog specific flags in Kubernetes Compnents](https://github.com/kubernetes/enhancements/tree/master/keps/sig-instrumentation/2845-deprecate-klog-specific-flags-in-k8s-components)
  - Beta => Stable
- [KEP-2831: Kubelet Tracing](https://github.com/kubernetes/enhancements/blob/master/keps/sig-instrumentation/2831-kubelet-tracing/kep.yaml)
  - v1.24 で Alpha の予定でしたが、v1.25 で Alpha に変更されました

## メトリクスの追加

### kubelet

<!-- - Added container probe duration metrics. ([#104484](https://github.com/kubernetes/kubernetes/pull/104484), [@&#xFFF0;jackfrancis](https://github.com/jackfrancis)) -->
- コンテナのプローブを計測するメトリクスが追加されました([#104484](https://github.com/kubernetes/kubernetes/pull/104484), [@&#xFFF0;jackfrancis](https://github.com/jackfrancis))
  - Histogram: `prober_probe_duration_seconds`
    - Labels: {"probe_type", "container", "pod", "namespace"}

### kube-controller-manager
<!-- - Metric `running_managed_controllers` is enabled for Cloud Node Lifecycle controller. ([#111033](https://github.com/kubernetes/kubernetes/pull/111033), [@&#xFFF0;jprzychodzen](https://github.com/jprzychodzen)) -->
<!-- - Metric `running_managed_controllers` is enabled for Node IPAM controller in KCM. ([#111466](https://github.com/kubernetes/kubernetes/pull/111466), [@&#xFFF0;jprzychodzen](https://github.com/jprzychodzen)) -->
<!-- - Metric `running_managed_controllers` is enabled for Route,Service and Cloud Node controllers in KCM and CCM. ([#111462](https://github.com/kubernetes/kubernetes/pull/111462), [@&#xFFF0;jprzychodzen](https://github.com/jprzychodzen)) -->
- Cloud Node Lifecycle コントローラー、Node IPAM コントローラー、Route、Service コントローラー、Cloud Node コントローラーで、コントローラーの起動状態を確認できるメトリクスが追加されました([#111033](https://github.com/kubernetes/kubernetes/pull/111033), [@&#xFFF0;jprzychodzen](https://github.com/jprzychodzen))、([#111466](https://github.com/kubernetes/kubernetes/pull/111466), [@&#xFFF0;jprzychodzen](https://github.com/jprzychodzen))、([#111462](https://github.com/kubernetes/kubernetes/pull/111462), [@&#xFFF0;jprzychodzen](https://github.com/jprzychodzen))
  - Gauge: `running_managed_controllers`
    - Lebels: {"name", "manager"}

## メトリクスの変更

### kube-apiserver
<!-- - Renamed `apiserver_watch_cache_watch_cache_initializations_total` to `apiserver_watch_cache_initializations_total` ([#109579](https://github.com/kubernetes/kubernetes/pull/109579), [@&#xFFF0;logicalhan](https://github.com/logicalhan)) -->
- 次のメトリクスがリネームされました([#109579](https://github.com/kubernetes/kubernetes/pull/109579), [@&#xFFF0;logicalhan](https://github.com/logicalhan))
  - Counter: `apiserver_watch_cache_watch_cache_initializations_total` => `apiserver_watch_cache_initializations_total`

<!-- - Some apiserver metrics were changed, as follows. -->
<!--   - `priority_level_seat_count_samples` is replaced with `priority_level_seat_utilization`, which samples every nanosecond rather than every millisecond; the old metric conveyed utilization despite its name. -->
<!--   - `priority_level_seat_count_watermarks` is removed. -->
<!--   - `priority_level_request_count_samples` is replaced with `priority_level_request_utilization`, which samples every nanosecond rather than every millisecond; the old metric conveyed utilization despite its name. -->
<!--   - `priority_level_request_count_watermarks` is removed. -->
<!--   - `read_vs_write_request_count_samples` is replaced with `read_vs_write_current_requests`, which samples every nanosecond rather than every second; the new metric, like the old one, measures utilization when the max-in-flight filter is used and number of requests when the API Priority and Fairness filter is used. -->
<!--   - `read_vs_write_request_count_watermarks` is removed. ([#110104](https://github.com/kubernetes/kubernetes/pull/110104), [@&#xFFF0;MikeSpreitzer](https://github.com/MikeSpreitzer)) [SIG API Machinery, Instrumentation and Testing] -->
- 次のメトリクスがリネームされ、ミリ秒単位ではなくナノ秒単位でサンプリングされるように変更されました([#110104](https://github.com/kubernetes/kubernetes/pull/110104), [@&#xFFF0;MikeSpreitzer](https://github.com/MikeSpreitzer))
  - `apiserver_flowcontrol_priority_level_seat_count_samples`    => `apiserver_flowcontrol_priority_level_seat_utilization`
  - `apiserver_flowcontrol_priority_level_request_count_samples` => `apiserver_flowcontrol_priority_level_request_utilization`
  - `apiserver_flowcontrol_read_vs_write_request_count_samples`  => `apiserver_flowcontrol_read_vs_write_current_requests`
    - 新しいメトリクスは以前のメトリクスと同様に、 max-in-flight フィルターの場合は使用率を、 API Priority and Fairness フィルターの場合はリクエスト数を記録します。

### その他
<!-- - [\[kube-up\]: Bump coredns to v1.9.3 by mzaian · Pull Request #110488 · kubernetes/kubernetes](https://github.com/kubernetes/kubernetes/pull/110488/files) -->
<!--   - https://github.com/coredns/coredns/pull/4934/files -->
<!--   - https://github.com/coredns/coredns/pull/4914/files -->
<!--   - [plugin/prometheus: write rcode properly to the metrics by Tantalor93 · Pull Request #5126 · coredns/coredns](https://github.com/coredns/coredns/pull/5126) -->
<!--     - 1.8.7 からのバグであれば紹介不要かな？ -->
<!--   - [add zones label to cache metrics by elijahandrews · Pull Request #5124 · coredns/coredns](https://github.com/coredns/coredns/pull/5124/files) -->
<!--   - [Add metric counting DNS-over-HTTPS responses by rschone · Pull Request #5130 · coredns/coredns](https://github.com/coredns/coredns/pull/5130/files) -->
- CoreDNS が v1.9.3 に更新されたことで以下のメトリクスが追加・更新されました [\[kube-up\]: Bump coredns to v1.9.3 by mzaian · Pull Request #110488 · kubernetes/kubernetes](https://github.com/kubernetes/kubernetes/pull/110488)
  - `type` ラベルに `HTTPS` が追加されました [coredns #4934](https://github.com/coredns/coredns/pull/4934)
    - Counter: `coredns_dns_requests_total`
    - Histogram: `coredns_dns_request_duration_seconds`
  - `plugin` ラベルが追加されました [coredns #4914](https://github.com/coredns/coredns/pull/4914)
    - Counter: `coredns_dns_responses_total`
  - `rcode` ラベルに正しい内容が記録されるように修正されました[coredns #5126](https://github.com/coredns/coredns/pull/5126)
    - 1.8.7 からの不具合
  - `zones` ラベルが追加されました[coredns #5124](https://github.com/coredns/coredns/pull/5124)
    - Gauge: `coredns_cache_entries`
    - Counter: `coredns_cache_hits_total`
    - Counter: `coredns_cache_misses_total`
    - Counter: `coredns_cache_requests_total`
    - Counter: `coredns_cache_prefetch_total`
    - Counter: `coredns_cache_drops_total`
    - Counter: `coredns_cache_served_stale_total`
    - Counter: `coredns_cache_evictions_total`

## メトリクスの非推奨

- なし

## メトリクスの削除

### kube-apiserver
<!-- - `apiserver_dropped_requests` is dropped from this release since `apiserver_request_total` can now be used to track dropped requests. `etcd_object_counts` is also removed in favor of `apiserver_storage_objects`. `apiserver_registered_watchers` is also removed in favor of `apiserver_longrunning_requests`. ([#110337](https://github.com/kubernetes/kubernetes/pull/110337), [@&#xFFF0;logicalhan](https://github.com/logicalhan)) -->

- 次のメトリクスは削除されました。代わりに `apiserver_request_total` メトリクスの `code` ラベルを利用して確認できます([#110337](https://github.com/kubernetes/kubernetes/pull/110337), [@&#xFFF0;logicalhan](https://github.com/logicalhan))
  - Counter: `apiserver_dropped_requests`

- 次のメトリクスは削除されました。 代わりに `apiserver_storage_objects` メトリクスを利用してください([#110337](https://github.com/kubernetes/kubernetes/pull/110337), [@&#xFFF0;logicalhan](https://github.com/logicalhan))
  - Counter: `etcd_object_counts`

- 次のメトリクスは削除されました。 代わりに `apiserver_longrunning_requests` メトリクスを利用してください([#110337](https://github.com/kubernetes/kubernetes/pull/110337), [@&#xFFF0;logicalhan](https://github.com/logicalhan))
  - Gauge: `apiserver_registered_watchers`

<!-- - `apiserver_longrunning_gauge` was removed from the codebase. Please use `apiserver_longrunning_requests` instead. ([#110310](https://github.com/kubernetes/kubernetes/pull/110310), [@&#xFFF0;logicalhan](https://github.com/logicalhan)) -->
- 次のメトリクスは削除されました。 代わりに `apiserver_longrunning_requests` メトリクスを利用してください([#110310](https://github.com/kubernetes/kubernetes/pull/110310), [@&#xFFF0;logicalhan](https://github.com/logicalhan))
  - Gauge: `apiserver_longrunning_gauge`

- 次のメトリクスが削除されました([#110104](https://github.com/kubernetes/kubernetes/pull/110104), [@&#xFFF0;MikeSpreitzer](https://github.com/MikeSpreitzer))
  - Histogram: `apiserver_flowcontrol_priority_level_seat_count_watermarks`
  - Histogram: `apiserver_flowcontrol_priority_level_request_count_watermarks`
  - Histogram: `apiserver_flowcontrol_read_vs_write_request_count_watermarks`

### kubelet
<!-- - The kubelet no longer supports collecting accelerator metrics through cAdvisor. The feature gate `DisableAcceleratorUsageMetrics` is now GA and cannot be disabled. ([#110940](https://github.com/kubernetes/kubernetes/pull/110940), [@&#xFFF0;pacoxu](https://github.com/pacoxu)) -->
- `DisableAcceleratorUsageMetrics` フィーチャーゲートが GA となり、kubelet による GPU アクセラレータメトリクスがサポートされなくなりました([#110940](https://github.com/kubernetes/kubernetes/pull/110940), [@&#xFFF0;pacoxu](https://github.com/pacoxu))


## メトリクスの修正

### kubelet
<!-- - Do not report terminated container metrics ([#110950](https://github.com/kubernetes/kubernetes/pull/110950), [@&#xFFF0;yangjunmyfm192085](https://github.com/yangjunmyfm192085)) [SIG Node] -->
- cAdvisor のメトリクスで、終了したコンテナのメトリクスが公開されないように修正されました([#110950](https://github.com/kubernetes/kubernetes/pull/110950), [@&#xFFF0;yangjunmyfm192085](https://github.com/yangjunmyfm192085))

<!-- - Updated to cAdvisor v0.44.1 to fix an issue where metrics generated by kubelet for pod network stats were empty in some cases. ([#109658](https://github.com/kubernetes/kubernetes/pull/109658), [@&#xFFF0;bobbypage](https://github.com/bobbypage)) -->
- cAdvisor が v0.44.1 に更新され、kubelet が生成する Pod Network Stats のメトリクスの問題を修正しました([#109658](https://github.com/kubernetes/kubernetes/pull/109658), [@&#xFFF0;bobbypage](https://github.com/bobbypage))

<!-- - When metrics are counted, discard the wrong container StartTime metrics ([#110880](https://github.com/kubernetes/kubernetes/pull/110880), [@&#xFFF0;yangjunmyfm192085](https://github.com/yangjunmyfm192085)) [SIG Instrumentation and Node] -->
- 誤った StartTime を持つコンテナの場合、 `container_start_time_seconds` メトリクスを公開しないように修正されました([#110880](https://github.com/kubernetes/kubernetes/pull/110880), [@&#xFFF0;yangjunmyfm192085](https://github.com/yangjunmyfm192085))

### kube-scheduler
<!-- - Fix a bug where metrics are not recorded during Preemption(PostFilter). ([#108727](https://github.com/kubernetes/kubernetes/pull/108727), [@&#xFFF0;sanposhiho](https://github.com/sanposhiho)) [SIG Scheduling] -->
- Preemption 時にメトリクスが記録されない問題を修正([#108727](https://github.com/kubernetes/kubernetes/pull/108727), [@&#xFFF0;sanposhiho](https://github.com/sanposhiho))

### kube-apiserver

<!-- - Fix incorrectly report scope for request_duration_seconds and request_slo_duration_seconds metrics for POST custom resources API calls. ([#110009](https://github.com/kubernetes/kubernetes/pull/110009), [@&#xFFF0;azylinski](https://github.com/azylinski)) [SIG Instrumentation] -->
- `scope` ラベルが正しく記録されるように修正されました([#110009](https://github.com/kubernetes/kubernetes/pull/110009), [@&#xFFF0;azylinski](https://github.com/azylinski))
  - Histogram: `apiserver_request_duration_seconds`
  - Histogram: `apiserver_request_slo_duration_seconds`

<!-- - Fix the bug that reported incorrect metrics for the cluster IP allocator. ([#110027](https://github.com/kubernetes/kubernetes/pull/110027), [@&#xFFF0;tksm](https://github.com/tksm)) -->
- 次の Cluster IP Allocator のメトリクスが正しく記録されるように修正されました :tada: ([#110027](https://github.com/kubernetes/kubernetes/pull/110027), [@&#xFFF0;tksm](https://github.com/tksm))
  - `kube_apiserver_clusterip_allocator_*`

<!-- - The `priority_level_request_utilization` metric histogram is adjusted so that for the cases where `phase=waiting` the denominator is the cumulative capacity of all of the priority level's queues.The `read_vs_write_current_requests` metric histogram is adjusted, in the case of using API Priority and Fairness instead of max-in-flight, to divide by the relevant limit: sum of queue capacities for waiting requests, sum of seat limits for executing requests. ([#110164](https://github.com/kubernetes/kubernetes/pull/110164), [@&#xFFF0;MikeSpreitzer](https://github.com/MikeSpreitzer)) -->
- `apiserver_flowcontrol_priority_level_request_utilization` メトリクスと `apiserver_flowcontrol_read_vs_write_current_requests` メトリクスの記録方法が修正されました([#110164](https://github.com/kubernetes/kubernetes/pull/110164), [@&#xFFF0;MikeSpreitzer](https://github.com/MikeSpreitzer))

### kube-proxy
<!-- - The kube-proxy `sync_proxy_rules_no_endpoints_total` metric now only counts local-traffic-policy services which have remote endpoints but not local endpoints. ([#109782](https://github.com/kubernetes/kubernetes/pull/109782), [@&#xFFF0;danwinship](https://github.com/danwinship)) -->
- `sync_proxy_rules_no_endpoints_total` メトリクスは、リモートエンドポイントを持ち、ローカルエンドポイントを持たない local-traffic-policy サービスのみをカウントするようになりました([#109782](https://github.com/kubernetes/kubernetes/pull/109782), [@&#xFFF0;danwinship](https://github.com/danwinship))