はじめに(Feature の内容含む)
ここでは、Kubernetes 1.18 の CHANGELOG から Metrics の変更と SIG Instrumentation の取り組みについてまとめています。
前回に引き続き、Control-Plane Metrics Stability のため show-hidden-metrics-for-version
フラグが次のコンポーネントで実装されました。
- kube-apiserver(form v1.17)
- kube-proxy(#85279, @RainbowMango)
- kube-scheduler(#84913, @serathius)
- kube-controller-manager(#85281, @RainbowMango)
- kubelet(#85282, @serathius )
それでは CHANGELOG を見ていきます。
メトリクスの変更(Metrics Changes)
追加
- [component-base]
rest_client_rate_limiter_duration_seconds
- クライアント側の Rate Limiter のレイテンシを秒単位で記録し、verb と url のラベルを持ちます(#88134, @jennybuckley)
- [component-base]
rest_client_certificate_expiration_seconds
- クライアント証明書の有効期限を 1970 年 1 月 1 日 UTC からの経過を秒単位で記録した Gauge(#84382, @sambdavidson)
- [component-base]
rest_client_certificate_rotation_age
- ローテーション後のクライアント証明書の経過時間を記録した Histgram(#84382, @sambdavidson)
- [controller-manager]
workqueue_(depth|adds_total|queue_duration_seconds|work_duration_seconds|unfinished_work_seconds|longest_running_processor_seconds|retries_total)
- [api-server] 次のメトリクスの subresource ラベルに、
/healthz
、/livez
、/readyz
へのリクエストが記録されるようになりました(#83598, @jktomer)apiserver_request_duration_seconds
apiserver_request_total
apiserver_response_sizes
- [kubelet]
(server|client)_expiration_renew_failure
- 証明書のローテーションが失敗した場合に記録します(#84614, @rphillips)
- [kubelet]
kubelet_pleg_last_seen_seconds
- 正常に PLEG が動作しているかを判断するために、最後にヘルスチェックした時間を記録します(#86251, @bboreham)
変更/非推奨
- [kubelet] 次のメトリクスの Stability Level が ALPHA となりました(#85446, @RainbowMango)
process_start_time_seconds
-
[kubelet] 次のメトリクスが非表示となりました(#83841, @RainbowMango)
kubelet_pod_worker_latency_microseconds
kubelet_pod_start_latency_microseconds
kubelet_cgroup_manager_latency_microseconds
kubelet_pod_worker_start_latency_microseconds
kubelet_pleg_relist_latency_microseconds
kubelet_pleg_relist_interval_microseconds
kubelet_eviction_stats_age_microseconds
kubelet_runtime_operations
kubelet_runtime_operations_latency_microseconds
kubelet_runtime_operations_errors
kubelet_device_plugin_registration_count
kubelet_device_plugin_alloc_latency_microseconds
kubelet_docker_operations
kubelet_docker_operations_latency_microseconds
kubelet_docker_operations_errors
kubelet_docker_operations_timeout
network_plugin_operations_latency_microseconds
-
次のメトリクスは非表示となったので、対応するメトリクスに置き換えてください (#76496, @danielqsj)
-
rest_client_request_latency_seconds
->rest_client_request_duration_seconds
-
scheduler_scheduling_latency_seconds
->scheduler_scheduling_duration_seconds
-
docker_operations
->docker_operations_total
-
docker_operations_latency_microseconds
->docker_operations_duration_seconds
-
docker_operations_errors
->docker_operations_errors_total
-
docker_operations_timeout
->docker_operations_timeout_total
-
network_plugin_operations_latency_microseconds
->network_plugin_operations_duration_seconds
-
kubelet_pod_worker_latency_microseconds
->kubelet_pod_worker_duration_seconds
-
kubelet_pod_start_latency_microseconds
->kubelet_pod_start_duration_seconds
-
kubelet_cgroup_manager_latency_microseconds
->kubelet_cgroup_manager_duration_seconds
-
kubelet_pod_worker_start_latency_microseconds
->kubelet_pod_worker_start_duration_seconds
-
kubelet_pleg_relist_latency_microseconds
->kubelet_pleg_relist_duration_seconds
-
kubelet_pleg_relist_interval_microseconds
->kubelet_pleg_relist_interval_seconds
-
kubelet_eviction_stats_age_microseconds
->kubelet_eviction_stats_age_seconds
-
kubelet_runtime_operations
->kubelet_runtime_operations_total
-
kubelet_runtime_operations_latency_microseconds
->kubelet_runtime_operations_duration_seconds
-
kubelet_runtime_operations_errors
->kubelet_runtime_operations_errors_total
-
kubelet_device_plugin_registration_count
->kubelet_device_plugin_registration_total
-
kubelet_device_plugin_alloc_latency_microseconds
->kubelet_device_plugin_alloc_duration_seconds
-
scheduler_e2e_scheduling_latency_microseconds
->scheduler_e2e_scheduling_duration_seconds
-
scheduler_scheduling_algorithm_latency_microseconds
->scheduler_scheduling_algorithm_duration_seconds
-
scheduler_scheduling_algorithm_predicate_evaluation
->scheduler_scheduling_algorithm_predicate_evaluation_seconds
-
scheduler_scheduling_algorithm_priority_evaluation
->scheduler_scheduling_algorithm_priority_evaluation_seconds
-
scheduler_scheduling_algorithm_preemption_evaluation
->scheduler_scheduling_algorithm_preemption_evaluation_seconds
-
scheduler_binding_latency_microseconds
->scheduler_binding_duration_seconds
-
kubeproxy_sync_proxy_rules_latency_microseconds
->kubeproxy_sync_proxy_rules_duration_seconds
-
apiserver_request_latencies
->apiserver_request_duration_seconds
-
apiserver_dropped_requests
->apiserver_dropped_requests_total
-
etcd_request_latencies_summary
->etcd_request_duration_seconds
-
apiserver_storage_transformation_latencies_microseconds
->apiserver_storage_transformation_duration_seconds
-
apiserver_storage_data_key_generation_latencies_microseconds
->apiserver_storage_data_key_generation_duration_seconds
-
apiserver_request_count
->apiserver_request_total
apiserver_request_latencies_summary
-
apiserver_storage_transformation_failures_total
->apiserver_storage_transformation_operations_total
-
その他の変更 (Other [Bug, Cleanup or Flake])
- [kube-apiserver]
--show-hidden-metrics-for-version
フラグで非表示のメトリクスを表示できなかったバグを修正(#85444, @RainbowMango)
所感
v1.16 から始まった KEP Metrics Stability Migration の作業も進み、次のマイナーバージョンからは KEP Structured Logging の取り組みも入ってきそうです。
JSON ログフォーマットで出力してくれるとログストアの機能によっては検索やフィルターがしやすくなるので個人的には注目しています。