Please enable Javascript to view the contents

如何预估 Kubernetes 集群中监控组件的资源消耗

 ·  ☕ 2 分钟

本文描述的监控指标,仅包含 Kubernetes 基础的指标,不包含业务相关指标,相关组件为 prometheus-server、kube-state-metrics、node-exporter,数据的保存周期为 3 天。

1. 集群中监控相关组件

1
2
3
4
helm -n monitor list

NAME    	NAMESPACE      	REVISION	UPDATED                                	STATUS  	CHART            	APP VERSION
prom-k8s	monitor	        1       	2022-05-12 16:47:53.789549796 +0800 CST	deployed	prometheus-15.0.1	2.32.0     
1
2
3
4
5
6
7
8
kubectl -n monitor get deploy,daemonset

NAME                                          READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/prom-k8s-kube-state-metrics   1/1     1            1           102d
deployment.apps/prom-k8s-prometheus-server    1/1     1            1           102d

NAME                                               DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
daemonset.apps/prom-k8s-prometheus-node-exporter   20        20        20      20           20          <none>          102d

2. 指标计算方式

  • 集群全部节点数

count(kube_node_created{app_kubernetes_io_instance="prom-k8s"}) by (cluster)

  • 集群版本

sum by (cluster,kubelet_version)(kube_node_info{app_kubernetes_io_instance="prom-k8s"})

  • 运行的 POD 数量

sum(kube_pod_info) by (cluster)

  • 监控组件使用的内存

sum(container_memory_working_set_bytes{image!="", namespace="monitor"}) by (cluster)

  • 监控组件使用的 CPU

sum (rate (container_cpu_usage_seconds_total{namespace="monitor"}[5m])) by (cluster)

3. 统计数据分析

节点数量 Kuberntes 版本 POD 数量 监控占用内存 监控占用 CPU
19 v1.16.8 1046 7.04 GB 0.289
22 v1.19.15 1014 4.56 GB 0.239
28 v1.18.20 974 3.23 GB 0.187
12 v1.16.11 600 2.94 GB 0.134
8 v1.20.12 195 2.48 GB 0.598
9 v1.16.9 616 2.11 GB 0.116
13 v1.16.11 558 1.87 GB 0.096
20 v1.16.11 452 1.78 GB 0.099
14 v1.16.11 378 1.57 GB 0.064
9 v1.19.15 284 1.52 GB 0.090
6 v1.16.11 428 1.48 GB 0.102
12 v1.16.8 324 1.36 GB 0.052
9 v1.16.11 382 1.09 GB 0.065
4 v1.20.12 220 1.08 GB 0.052
12 v1.16.11 504 1.04 GB 0.060
4 v1.20.12 156 1.01 GB 0.042
4 v1.16.11 170 937.66 MB 0.055
8 v1.16.11 254 914.81 MB 0.053
10 v1.16.8 435 907.60 MB 0.032
10 v1.16.11 278 852.69 MB 0.034
11 v1.16.11 420 839.70 MB 0.047
7 v1.16.11 268 815.48 MB 0.046
4 v1.16.11 248 804.21 MB 0.032
9 v1.16.11 256 784.44 MB 0.034
10 v1.16.11 284 776.07 MB 0.047
6 v1.16.11 222 745.46 MB 0.034
8 v1.16.11 252 709.10 MB 0.034
5 v1.16.11 200 678.32 MB 0.036
7 v1.16.11 202 642.48 MB 0.037
5 v1.16.8 174 640.41 MB 0.030
7 v1.20.12 97 624.49 MB 0.025
6 v1.16.11 198 590.52 MB 0.029
6 v1.20.12 95 578.39 MB 0.034
7 v1.16.11 222 569.38 MB 0.032
6 v1.16.11 140 560.03 MB 0.027
8 v1.16.11 166 557.45 MB 0.028
5 v1.20.12 70 494.62 MB 0.019
5 v1.16.11 120 455.13 MB 0.024
6 v1.16.8 112 449.50 MB 0.022
7 v1.16.11 128 448.15 MB 0.026
6 v1.16.11 112 441.64 MB 0.022
6 v1.16.11 112 437.66 MB 0.026
2 v1.16.11 84 326.72 MB 0.024
2 v1.20.15 11 208.16 MB 0.012

每个集群平均 POD 数量 306 个,平均内存占用 1246 MB,一个 POD 大约占用 40 MB 内存,CPU 消耗基本可以忽略。


微信公众号
作者
微信公众号