Kubernetes 1.16: Metrics Changes以及SIG Instrumentation的变更内容
首先
这里从 Kubernetes 1.16 的 CHANGELOG 中总结了有关度量变化和 SIG Instrumentation 的工作。
我将介绍与本次发布相关的以下KEP。
KEP Kubernetes Control-Plane Metrics Stability
ゴール
Kubernetes コントロールプレーンのメトリクス取得に関するさまざまな安定性の保証について定義する
メトリクスの安定性を表現するための統一的なメカニズムを定義する
KEP Metrics Stability Migration
ゴール
Stability Framework にメトリクスを移行するための一般的な戦略の概要を定義する
共有されているメトリクスの移行方法を明示的に定義する
移行パスを通じて下位互換性を維持する
ただしメトリクスのオーバーホールで廃止予定になったメトリクスは除外する(今後削除されるものも含む)
メトリクスの変更を各コンポーネントの所有者に通知する
指标的稳定性是社区持续关注的问题,如果控制平面的指标发生变化,应提前通知,并需要提供充足的迁移期等。因此,在 KEP Control-Plane Metrics Stability 中,我们提出了对于指标名称和标签名称的一些保证,并提议了适当处理的程序。此外,在 KEP Metrics Stability Migration 中,我们提出了一种迁移到上述确定的框架的方法。
在这个版本的发布中,已经实现并纳入了以上某些关键增强计划(KEP)的一部分。
大致内容是在一些控制平面的度量值中添加了名为“稳定级别”(Stability Level)的元数据,并注册了“稳定等级”(ALPHA,STABLE)作为其值。
这些元数据会显示在度量值的帮助文本中。
以下是示例)
# HELP kubelet_docker_operations [ALPHA] (Deprecated) Cumulative number of Docker operations by operation type.
# TYPE kubelet_docker_operations counter
kubelet_docker_operations{operation_type="create_container"} 33
kubelet_docker_operations{operation_type="info"} 1
...
那么,让我们来看看 CHANGELOG。
度量衡的变化
新增的指标 (Added metrics)
api 服务器
aggregator_openapi_v2_regeneration_count、aggregator_openapi_v2_regeneration_gauge、apiextension_openapi_v2_regeneration_count
kube-apiserver が OpenAPI Spec を再生成するときに、トリガーになる API Service または CRD と、追加、更新、削除などの理由を計測します(#81786, @sttts)
authentication_attempts
認証の試行回数をカウントします(#81509, @RainbowMango)
apiserver_admission_webhook_rejection_count
Admission Webhook により Reject された原因を計測します(#81399, @roycaihw)
apiserver_watch_events_total
システム内で Watch しているイベント数をカウントします(#78732, @mborsz)
apiserver_watch_events_sizes
システム内の Watch しているイベントのサイズを見積もりするために使用するメトリクスです(#80477, @mborsz)
kubelet – kubelet是一个在每个节点上运行的Kubernetes组件。
running_container_count
container_state のラベルが追加され、コンテナの状態(running/exited/created/unknown)に基づいてコンテナ数を取得できるようになりました(#81573, @irajdeep)
kubelet_evictions
リソースを再利用するために kubelet によって実行された Pod eviction 数をカウントします(#81377, @sjenning)
- StatFS メトリクスプロバイダーを使用し、NFS ドライバーのメトリクスが収集できるようになりました(#75805, @brahmaroutu)
容器监控器
-
- cAdvisor が v0.34.0 にアップデートされました(#81972, @dashpole)
container_sockets
コンテナで開いているソケット数を計測します
container_threads
コンテナ内で実行されているスレッドの数を計測します
container_threads_max
コンテナ内で許可されるスレッドの最大数を計測します。値がゼロの場合は無限となります。
kube-proxy (Kubernetes代理)
sync_proxy_rules_iptables_restore_failures_total
iptable のリストアに失敗した数をカウントします(ipvsとiptablesの両方に対応)(#81210, @figo)
已删除的指标
SIG instrumentation のガイドライン に合わせて、cAvisor のメトリクスから pod_name と container_name のラベルが削除されました。もし cAdvisor や kubelet で提供されたメトリクスで pod_name と container_name のラベルを利用している PromQL がある場合は、pod と container に置き換える必要があります(#80376, @ehashman)。
Grafana のダッシュボードで使ってる PromQL、Prometheus の Record Rule、Alert Rule で コンテナの CPU や Memory を参照しているプロジェクトでは v1.16 移行前には修正が必要です。
container_cpu_usage_seconds_total{
container=”coredns”,
# 削除された=> container_name=”coredns”,
pod=”coredns-xxxxxxxxxx-xxxx”,
# 削除された=> pod_name=”coredns-xxxxxxxxxx-xxxx”
}
不被推荐/已更改的度量标准
- kube-controller-manager と cloud-controller-manager のメトリクスは、Stability Level が ALPHA となりました(#81624, @logicalhan)
- kube-proxy のメトリクスは、Stability Level が ALPHA となりました(#81626, @logicalhan)
- kube-apiserver のメトリクスは、Stability Level が ALPHA となりました(#81531, @logicalhan)
- kubelet の /metrics と /metrics/probes のパスが提供するメトリクスは、Stability Level が ALPHA となりました(#81534, @logicalhan)
- scheduler のメトリクスは、Stability Level が ALPHA となりました(#81576, @logicalhan)
apiserver_admission_webhook_admission_duration_seconds メトリクスの rejected ラベルの値が正しい結果が記録されるように修正されました(#81399, @roycaihw)
- CSI ドライバーがメトリクスをサポートしていない場合、サポートしていないエラーを返さない CSI メトリクスの不具合が修正されました(#79851, @jparklab)
-
- ZFS ストレージプールを使用し LXD のディスク Stats が修正されました(#81972, @dashpole)
- CRI-O に存在しないネットワークメトリクスの不具合が修正されました(#81972, @dashpole)
其他显著变化
- addons で利用されている fluentd-elasticsearch の Kibana が 最新版に更新され改善されました(#80421, @lostick)
所感受到的
如果Kubernetes Event Processor(KEP)的实施完成,稳定的指标将不会突然被废弃,但Prometheus(Alertmanager)和Grafana无法以编程方式检测到已过时的指标。
希望将来可以重新审视Prometheus(或OpenMetrics)端的指标规范,以实现对已过时指标的可编程检测。
备考
准备考试
- 前回: Kubernetes 1.15: SIG Instrumentation の変更内容