はじめに(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_secondsapiserver_request_totalapiserver_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_microsecondskubelet_pod_start_latency_microsecondskubelet_cgroup_manager_latency_microsecondskubelet_pod_worker_start_latency_microsecondskubelet_pleg_relist_latency_microsecondskubelet_pleg_relist_interval_microsecondskubelet_eviction_stats_age_microsecondskubelet_runtime_operationskubelet_runtime_operations_latency_microsecondskubelet_runtime_operations_errorskubelet_device_plugin_registration_countkubelet_device_plugin_alloc_latency_microsecondskubelet_docker_operationskubelet_docker_operations_latency_microsecondskubelet_docker_operations_errorskubelet_docker_operations_timeoutnetwork_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 ログフォーマットで出力してくれるとログストアの機能によっては検索やフィルターがしやすくなるので個人的には注目しています。