☸️

Kubernetes 1.33: SIG-Instrumentationの変更内容

に公開

はじめに

本記事では Kubernetes v1.33 の Changelog から、SIG-Instrumentation 関連及びメトリクスの変更点について取り上げ、まとめています。

Changes by kind

Urgent Upgrade Notes

  • SIG/Instrumentationに関連する項目はありませんでした

Deprecation

  • SIG/Instrumentationに関連する項目はありませんでした

API Changes

  • /statusz endpoint (件数が多いためまとめて紹介します)

    • PRs
    • KEP-4827: Component Statusz にて提案されている機能で、kube-scheduler、kubeletといった各Kubernetesのcomponentに /statusz エンドポイントを追加し、ビルドバージョン、Go のバージョンといった情報を返すようになりました。v1.33ではkube-apiserver以外でのサポートが追加されています。
  • /flagz endpoint (件数が多いためまとめて紹介します)

    • PRs
    • KEP-4828: Component Flagz にて提案されている機能で、KEP-4827の様にkube-scheduler、kubeletといった各Kubernetesのcomponentに /flagz エンドポイントを追加し、コマンドラインのフラグといった情報を返すようになりました。v1.33ではkube-apiserver以外でのサポートが追加されています。
    • 📝 v1.32からフォーマットが変更されています。feature-gatesの値が表示されない問題があったようですが、修正されています。
kube-apiserver flags
Warning: This endpoint is not meant to be machine parseable, has no formatting compatibility guarantees and is for debugging purposes only.

- admission-control []
+ admission-control=[]
- admission-control-config-file 
+ admission-control-config-file=
- advertise-address 172.18.0.2
+ advertise-address=172.18.0.2
...
- feature-gates 
+ feature-gates=:ComponentFlagz=true,:ComponentStatusz=true,:KubeletInUserNamespace=true
...
  • Device Resource Allocation(DRA)において、デバイスごとのtaints/tolerationを付与する機能が導入されました。これに際して2つのメトリクスが導入されています。 (#130447@pohly)
    • 🆕 device_taint_eviction_controller_pod_deletions_total
      • taintによってevictされたPodの総数を返します。
    • 🆕 device_taint_eviction_controller_pod_deletion_duration_seconds_*
      • taintが付与されてからPodがeviction controllerによって削除されるまでの時間を表すbucketです。
  • ReplicationController の replicasminReadySeconds フィールドの最小値バリデーションが宣言的バリデーションに移行しました。従来の方式とvalidation結果が異なったり問題があった際にメトリクスが報告されます。 (#130725@jpbetz)
    • 1.33からDeclarativeValidation Feature Gateがbetaとして導入され、デフォルトで有効化されています。validation自体は実施されますが、同様に1.33から導入されたDeclarativeValidationTakeover Feature Gateを有効化しない限り、宣言的バリデーションの結果は適用されません。こちらはデフォルトで無効化されています。
    • 🆕 declarative_validation_mismatch_total
      • mismatchが発生した場合に報告されるメトリクスです。
    • 🆕 declarative_validation_mismatch_panic_total
      • validationでpanicが発生した場合に報告されるメトリクスです。

Features

  • API serverのwatch cacheとetcdのデータに差異があるかを5分おきにチェックし、メトリクスとして報告されます(#130475@serathius, KEP‑4988)
    • 🆕 apiserver_storage_consistency_checks_total
      • labelとしてsuccess/failure/errorがあります。
    • hash/fnv を利用してハッシュが計算されています。
    • 現在ではListFromCacheSnapshot Feature Gateはalphaです。
      • beta以降では自動的にキャッシュをバイパスするようになるそうです。
  • kube-apiserverのtracing機能で、認証済みなリクエストに対してヘッダで渡された既存のtrace idを引き継げるようになりました (#127053@dashpole)
    • abuse防止のため、system:master または system:monitoring groupに所属しているユーザのみ利用できます。

Documentation

  • SIG/Instrumentationに関連する項目はありませんでした

Bug or Regression

  • SIG/Instrumentationに関連する項目はありませんでした

Other (Cleanup or Flake)

  • pod_scheduling_duration_seconds メトリクスが削除されました。代わりに pod_scheduling_sli_duration_seconds を使う必要があります。 (#128906@sanposhiho)
    • 🆑 pod_scheduling_duration_seconds
      • v1.28からdeprecateされており、v1.33にて削除されました。
    • pod_scheduling_duration_seconds は、KEP-3521にてScheduling Gateに関連して追加されたPreEnqueueという拡張点における時間を含んでおりメトリクスとして不適当でした。

Metrics Changes

  • kubeletのリソースアラインメントエラーの主な原因を公開するメトリクスが追加されました。 (#129950@ffromani)
    • 🆕 kubelet_container_aligned_compute_resources_failure_count
  • NUMA nodeごとのCPUの利用数を公開するメトリクスが追加されました (#130491@swatisehgal)
    • 🆕 kubelet_cpu_manager_allocation_per_numa
  • image volumeのmountに関するメトリクスが追加されました (#130135@saschagrunert)
    • 🆕 kubelet_image_volume_requested_total
    • 🆕 kubelet_image_volume_mounted_succeed_total
    • 🆕 kubelet_image_volume_mounted_errors_total
  • kube-proxyのメトリクスにIP familyのlabelが追加されました (#129173@aroradaman)
    • 🆙 kubeproxy_network_programming_duration_seconds
    • 🆙 kubeproxy_proxy_healthz_total
    • 🆙 kubeproxy_sync_partial_proxy_rules_duration_seconds
    • 🆙 kubeproxy_sync_proxy_rules_duration_seconds
    • 🆙 kubeproxy_sync_proxy_rules_endpoint_changes_pending
    • 🆙 kubeproxy_sync_proxy_rules_iptables_partial_restore_failures_total
    • 🆙 kubeproxy_sync_proxy_rules_iptables_restore_failures_total
    • 🆙 kubeproxy_sync_proxy_rules_iptables_total
    • 🆙 kubeproxy_sync_proxy_rules_last_queued_timestamp_seconds
    • 🆙 kubeproxy_sync_proxy_rules_last_timestamp_seconds
    • 🆙 kubeproxy_sync_proxy_rules_nftables_cleanup_failures_total
    • 🆙 kubeproxy_sync_proxy_rules_nftables_sync_failures_total
    • 🆙 kubeproxy_sync_proxy_rules_no_local_endpoints_total
  • kube-proxyが削除したconntrack flowの累積値を取得するメトリクスが追加されました (#130204@aroradaman)
    • 🆕 kubeproxy_conntrack_reconciler_deleted_entries_total
    • こちらもIP familyのlabelが導入されています
  • kube-proxyのconttrackのreconcileにかかった時間を取得できるメトリクスが追加されました (#130200@aroradaman)
    • 🆕 kubeproxy_conntrack_reconciler_sync_duration_seconds
    • こちらもIP familyのlabelが導入されています
  • scheduler_cache_size メトリクスが導入され、代わりに scheduler_scheduler_cache_size メトリクスはdeprecateされました (#128810@googs1025)
    • 🆕 scheduler_cache_size
    • ⚠️ scheduler_scheduler_cache_size
      • v1.34で削除される予定です。
GitHubで編集を提案

Discussion