はじめに(What’s New の内容含む)
ここでは、Kubernetes 1.27 の CHANGELOG から Metrics の変更と SIG Instrumentation の取り組みについてまとめています。
Kubernetes v1.27 で SIG Instrumentation が扱う主要なテーマと注目したいテーマはないため、更新された KEP の Milestone と参考リンクを記載しておきます。
-
KEP-2831: Kubelet Tracing
- v1.27 で Beta になりました
- Traces For Kubernetes System Components | Kubernetes
-
KEP-647: APIServer Tracing
- v1.27 で Beta になりました
- Traces For Kubernetes System Components | Kubernetes
-
KEP-3466: Kubernetes Component SLIs
- v1.27 で Beta になりました
- こちらの記事で紹介しています
- Kubernetes Component SLI Metrics | Kubernetes
-
KEP-3498: Extending Metrics Stability
- v1.27 で Beta になりました
- こちらの記事で紹介しています
-
KEP-1748: Expose Pod Resource Request Metrics
- v1.27 で GA となりました
それでは Metrics Changes
について説明していきます。
メトリクスの変更
は、私が全ての変更点からメトリクスの変更に関連するものを抜粋した内容となります。
メトリクスの変更(Metrics Changes)
component-base
- [ADD] クライアント側でサーバーへの再試行回数を計測したメトリクスが追加されました(#108396, @tkashem)
- Counter:
rest_client_request_retries_total
- Labels: {"code", "verb", "host"}
- Counter:
kube-apiserver
- [ADD] Status RPC から無効な keyID が返された回数を計測するメトリクスが追加されました(#115846, @ritazh)
- Counter:
apiserver_envelope_encryption_invalid_key_id_from_status_total
- Labels: {"provider_name", "error"}
- Counter:
- [ADD] KMSv2 GRPC サービスのレイテンシーを計測するメトリクスが追加されました(#115649, @aramase)
- Histogram:
apiserver_envelope_encryption_kms_operations_latency_seconds
- Labels: {"provider_name", "method_name", "grpc_status_code"}
- Buckets: metrics.ExponentialBuckets(0.001, 2, 18)
- Histogram:
- [ADD] etcd でオブジェクトをデコードする際に発生したエラー回数を記録するメトリクスが追加されました(#114376, @baomingwang)
- Counter:
apiserver_storage_decode_errors_total
- Labels: {"resource"}
- Counter:
- [ADD|DEPRECATED] 冗長なサブシステム名がメトリクスに含まれていたので削除し新しいメトリクスが追加されました。元のメトリクスは非推奨となります(#114497, @dgrisonnet)
-
kube_apiserver_pod_logs_pods_logs_backend_tls_failure_total
=>kube_apiserver_pod_logs_backend_tls_failure_total
-
kube_apiserver_pod_logs_pods_logs_insecure_backend_total
=>kube_apiserver_pod_logs_insecure_backend_total
-
- [ADD] KMSv2 関連のメトリクスが追加されました(#115394, @ritazh)
- Counter:
apiserver_envelope_encryption_key_id_hash_total
- Labels: {"transformation_type", "provider_name", "key_id_hash"}
- Histogram:
apiserver_envelope_encryption_key_id_hash_last_timestamp_seconds
- Lables: {"transformation_type", "provider_name", "key_id_hash"}
- Gauge:
apiserver_envelope_encryption_key_id_hash_status_last_timestamp_seconds
- Labels: {"provider_name", "key_id_hash"}
- Counter:
- [MOD]
transformer_prefix
のラベルが追加されました (#115394, @ritazh)- Histogram:
apiserver_storage_transformation_duration_seconds
- Labels: {"transformation_type", "transformer_prefix"}
- Buckets: metrics.ExponentialBuckets(5e-6, 2, 25)
- Histogram:
- [ADD] Aggregated Discovery のメトリクスが追加されました (#115630, @Jefftree)
- Counter:
aggregator_discovery_aggregation_count_total
- Labels: なし
- Counter:
- [MOD] SLO/SLI レイテンシーのメトリクスから APF の待ち時間が除外されました(#116420, @andrewsykim)
- Histogram:
apiserver_request_slo_duration_seconds
- Histogram:
apiserver_request_sli_duration_seconds
- Histogram:
- [MOD] Webhook のタイムアウト秒数に合わせて 10 秒と 25 秒のバケットが追加されました(#115802, @logicalhan)
- Histogram:
apiserver_admission_webhook_admission_duration_seconds
- Labels: {"name", "type", "operation", "rejected"}
- Buckets: {0.005, 0.025, 0.1, 0.5, 1.0, 2.5, 10, 25}
- Histogram:
kubelet
- [ADD] Topology Manager のアドミッションリクエスト数とアドミッションエラー数を計測するメトリクスが追加されました(#115137, @swatisehgal)
- Counter:
kubelet_topology_manager_admission_requests_total
- Labels: なし
- Counter:
kubelet_topology_manager_admission_errors_total
- Labels: なし
- Counter:
- [ADD] Topology Manager のアドミッションリクエストのレイテンシーを計測するメトリクスが追加されました(#115590, @swatisehgal)
- Counter:
kubelet_topology_manager_admission_duration_ms
- Labels: なし
- Buckets: metrics.ExponentialBuckets(.05, 2, 15)
- Notes: 単位は混在させてない方針だと思うので、そのうち seconds に修正されるかと思います
- Counter:
- [ADD] kubelet 起動時のボリューム再構築に関するメトリクスが追加されました(#115965, @jsafrane)
- Counter:
reconstruct_volume_operations_total
- Labels: なし
- Counter:
reconstruct_volume_operations_errors_total
- Labels: なし
- Counter:
force_cleaned_failed_volume_operations_total
- Labels: なし
- Counter:
force_cleaned_failed_volume_operation_errors_total
- Labels: なし
- Counter:
- [ADD] 強制削除された Pod は終了中にコンテナランタイムでエラーが発生すると kubelet が再起動されるまで終了に失敗することがあります。kubelet が追跡している Pod の数を計測する新しいメトリクスにより、オペレーターは完了しない可能性のある Pod などがモニタリングできます(#113145, @smarterclayton)
- Counter:
kubelet_desired_pods
- Labels: {"static"}
- Counter:
kubelet_active_pods
- Labels: {"static"}
- Counter:
kubelet_mirror_pods
- Labels: なし
- Counter:
kubelet_working_pods
- Labels: {"lifecycle", "config", "static"}
- Counter:
kubelet_orphaned_runtime_pods_total
- Labels: なし
- Counter:
kubelet_active_pods
- Labels: {"static"}
- Counter:
- [DEL] 非推奨のメトリクスが削除されました(#115209, @dgrisonnet)
-
node_collector_evictions_number
- 代わりに
node_collector_evictions_total
を利用してください
- 代わりに
-
scheduler_e2e_scheduling_duration_seconds
- 代わりに
scheduler_scheduling_attempt_duration_seconds
を利用してください
- 代わりに
-
kube-controller-manager
- [ADD] HPA コントローラーで以下のメトリクスが追加されました(#116010, @sanposhiho) (#116326, @sanposhiho)
- Counter:
horizontal_pod_autoscaler_controller_reconciliations_total
- Labels: {"action", "error"}
- Histogram:
horizontal_pod_autoscaler_controller_reconciliation_duration_seconds
- Labels: {"action", "error"}
- Buckets: metrics.ExponentialBuckets(0.001, 2, 15)
- Counter:
horizontal_pod_autoscaler_controller_metric_computation_total
- Labels: {"action", "error", "metric_type"}
- Histogram:
horizontal_pod_autoscaler_controller_metric_computation_duration_seconds
- Labels: {"action", "error", "metric_type"}
- Buckets: metrics.ExponentialBuckets(0.001, 2, 15)
- Counter:
- [ADD] Node IPAM コントローラーに割り当て可能な CIDER の最大数を計測するメトリクスが追加されました(#112260, @aryan9600)
- Gauge:
node_ipam_controller_cirdset_max_cidrs
- Labels: {"clusterCIDR"}
- Gauge:
node_ipam_controller_multicirdset_max_cidrs
- Labels: {"clusterCIDR"}
- Gauge:
kube-scheduler
- [ADD] プラグインがスケジューリング結果に何回影響を与えたかを計測するメトリクスが追加されました。無関係な Pod の場合、この値は増加しません。(#115082, @sanposhiho)
- Counter:
scheduler_plugin_evaluation_total
- Labels: {"plugin", "extension_point", "profile"}
- Counter:
- [MOD] PreEnqueue プラグインの実行時間を含めるようになりました(#116201, @sanposhiho)
- Histogram:
scheduler_plugin_execution_duration_seconds
- Histogram:
- [MOD] 以下のメトリクスの Stability Level が Stable になりました(#115454, @dgrisonnet)
- Gauge:
kube_pod_resource_request
- Gauge:
kube_pod_resource_limit
- Gauge:
kube-proxy
- なし
その他
-
cAdvisor
がv0.47.0
に更新されました(#114883, @bobbypage)- [DEL]
container_accelerator_duty_cycle
- [DEL]
container_accelerator_memory_total_bytes
- [DEL]
container_accelerator_memory_used_bytes
- [DEL]
メトリクス以外の変更点
-
KubeletTracing
フィーチャーゲートが Beta に移行になりデフォルトで有効になりました(#115750, @saschagrunert)
-
HPAContainerMetrics
フィーチャーゲートが Beta に移行しました(#116046, @sanposhiho)
- コントロールプレーンのコンポーネントで
/metrics/slis
エンドポイントが利用可能となりました(#114997, @Richabanker)
-
APIServerTracing
フィーチャーゲートが Beta となりデフォルトで有効となりましたが、利用するためには設定で有効化する必要があります(#116144, @dashpole)
- Cloud Controller Manager にロギングフォーマットのオプションが追加されました(#108984, @LittleFox94)
-
InterPodAffinity
フィルタープラグインが Pod と無関係な場合、Scheduler がInterPodAffinity
フィルタープラグインをスキップするようになりました。InterPodAffinity
フィルタープラグインに関連するメトリクスの計測に影響を与える可能性があります(#114889, @sanposhiho)
-
HPAContainerMetrics
フィーチャーゲートが無効な場合に HPA コントローラーはコンテナリソースメトリクスでエラーを返すようになりました(#116043, @sanposhiho)
- HPA で誤解を招くメッセージを改善しました(#114740, @kushagra98)
- 構造化ロギングに対応(#112670, @yangjunmyfm192085)
-
kube-proxy
はContextualLogging
,LoggingAlphaOptions
,LoggingBetaOptions
に対応しました(#115233, @pohly) -
Contextual Logging への移行
- DaemonSet Controller@249043822)
- Controller Helper Functions (#115049, @fatsheep9146)
- ResourceQuota Controller(#113315, @ncdc)
- StatefulSet Controller(#113840, @249043822)
- ClusterRole Aggregation Controller (#113910, @mengjiao-liu)
- Deployment Controller(#113525, @249043822)
- ReplicaSet Controller(#114871, @Namanl2001)
- Bootstrap Signer Controller/Token Cleaner Controller(#113464, @mengjiao-liu)
- Defaultbinder Scheduler Plugin(#116571, @mengjiao-liu)
- Kube-controller-manager Binary(#116529, @pohly)
- Namespace Controller(#113443, @yangjunmyfm192085)
- Service Account Controller(#114918, @Namanl2001)
- Volume Attach/Detach Controller/PersistentVolumeClaim Protection Controller/PersistentVolume Protection Controller(#113584, @yangjunmyfm192085)
- TTL after finished Controller(#113916, @songxiao-wang87)
- Cronjob Controller(#113428, @mengjiao-liu)
- GC Controller(#113986, @songxiao-wang87)
- Kubernetes Object Garbage Collector(#113471, @ncdc)
- TTlafterfinished Controller(#115332, @obaranov1)
- Sample-controller Controller(#113879, @pchan)