监控集群资源利用率

Metrics Server部署:

部署完成之后不会瞬间可以top到资源的利用率,因为抓取数据是周期性的不是实时性的;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.7/components.yaml

vi components.yaml
containers:
- name: metrics-server
image: lizhenliang/metrics-server:v0.3.7
imagePullPolicy: IfNotPresent
args:
- --cert-dir=/tmp
- --secure-port=4443
# 添加如下:
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP

# 验证组件是否就绪
[root@pool1 ~]# kubectl get apiservice | grep metrics-server
v1beta1.metrics.k8s.io kube-system/metrics-server True 11m
# 如状态为False
[root@pool1 ~]# kubectl describe apiservice v1beta1.metrics.k8s.io

查看node资源

1
2
3
4
5
[root@pool1 ~]# kubectl top node
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
pool1 212m 10% 1170Mi 68%
pool2 78m 3% 556Mi 32%
pool3 96m 4% 537Mi 31%

查看pod资源

1
2
3
4
5
[root@pool1 ~]# kubectl top pods -n cka
NAME CPU(cores) MEMORY(bytes)
zsir-7b5c955fb-7sb6d 0m 3Mi
zsir-7b5c955fb-svjm9 0m 3Mi
zsir-7b5c955fb-x4w7q 0m 3Mi

metrics-server数据抓取流程:

1、kubectl top请求apiserver再将请求转发给metrics-server;

2、metrics-server从每个节点上获取当前查看的资源利用率;

3、将获取到的数据反馈给apiserver在转发给kubectl top并展示给终端;