背景说明

想查看kubernetes集群每个节点的pod的CPU负载、内存负载、可以通过安装监控实现

解决方案

命令查看

  1. [root@cka-master ~]# kubectl top pod
  2. error: Metrics API not available
  3. [root@cka-master ~]#

监控安装

开源地址

https://github.com/kubernetes-sigs/metrics-server

版本兼容

image.png

集群版本

  1. [root@cka-master ~]# kubectl version
  2. Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.7", GitCommit:"b56e432f2191419647a6a13b9f5867801850f969", GitTreeState:"clean", BuildDate:"2022-02-16T11:50:27Z", GoVersion:"go1.16.14", Compiler:"gc", Platform:"linux/amd64"}
  3. Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.7", GitCommit:"b56e432f2191419647a6a13b9f5867801850f969", GitTreeState:"clean", BuildDate:"2022-02-16T11:43:55Z", GoVersion:"go1.16.14", Compiler:"gc", Platform:"linux/amd64"}
  4. [root@cka-master ~]#

文件下载

image.png

  1. [root@cka-master ~]# wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.1/components.yaml

查看文件components.yaml

  1. 132 spec:
  2. 133 containers:
  3. 134 - args:
  4. 135 - --cert-dir=/tmp
  5. 136 - --secure-port=4443
  6. 137 - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
  7. 138 - --kubelet-use-node-status-port
  8. 139 - --metric-resolution=15s
  9. 140 image: k8s.gcr.io/metrics-server/metrics-server:v0.6.1
  10. 141 imagePullPolicy: IfNotPresent

由于国内网络无法下载替换image,使用阿里云镜像中心
image.png
image.png
即替换文件内容如下

  1. 132 spec:
  2. 133 containers:
  3. 134 - args:
  4. 135 - --cert-dir=/tmp
  5. 136 - --secure-port=4443
  6. 137 - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
  7. 138 - --kubelet-use-node-status-port
  8. 139 - --metric-resolution=15s
  9. - --kubelet-insecure-tls # 加上该启动参数,解决客户端证书问题
  10. 140 image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.6.1 # 这一行替换镜像
  11. 141 imagePullPolicy: IfNotPresent

文件应用

  1. [root@cka-master ~]# kubectl apply -f components.yaml
  2. serviceaccount/metrics-server created
  3. clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
  4. clusterrole.rbac.authorization.k8s.io/system:metrics-server created
  5. rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
  6. clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
  7. clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
  8. service/metrics-server created
  9. deployment.apps/metrics-server created
  10. apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
  11. [root@cka-master ~]#
  12. [root@cka-master ~]# kubectl get pod -n kube-system | grep metrics-server
  13. metrics-server-6f796dd456-4xqqv 1/1 Running 0 48s
  14. [root@cka-master ~]#

监控查看

查看pod

  1. [root@cka-master ~]# kubectl get pod
  2. No resources found in default namespace.
  3. [root@cka-master ~]# kubectl get pod -A
  4. NAMESPACE NAME READY STATUS RESTARTS AGE
  5. kube-system calico-kube-controllers-6fd7b9848d-27rpd 1/1 Running 10 (38d ago) 51d
  6. kube-system calico-node-4dccw 1/1 Running 4 (38d ago) 51d
  7. kube-system calico-node-5mldl 1/1 Running 4 (38d ago) 51d
  8. kube-system calico-node-d7vx7 1/1 Running 4 (38d ago) 51d
  9. kube-system coredns-7f6cbbb7b8-d874v 1/1 Running 4 (38d ago) 50d
  10. kube-system coredns-7f6cbbb7b8-vw5jc 1/1 Running 4 (38d ago) 52d
  11. kube-system etcd-cka-master 1/1 Running 18 (38d ago) 52d
  12. kube-system kube-apiserver-cka-master 1/1 Running 18 (38d ago) 52d
  13. kube-system kube-controller-manager-cka-master 1/1 Running 11 (38d ago) 52d
  14. kube-system kube-proxy-2p82l 1/1 Running 4 (38d ago) 52d
  15. kube-system kube-proxy-chq7d 1/1 Running 5 (38d ago) 51d
  16. kube-system kube-proxy-xgvjs 1/1 Running 4 (38d ago) 51d
  17. kube-system kube-scheduler-cka-master 1/1 Running 11 (38d ago) 52d
  18. kube-system metrics-server-6f796dd456-4xqqv 1/1 Running 0 2m21s
  19. kubernetes-dashboard dashboard-metrics-scraper-c45b7869d-7sprs 1/1 Running 1 (38d ago) 38d
  20. kubernetes-dashboard kubernetes-dashboard-79b5779bf4-wfl9j 1/1 Running 1 (38d ago) 38d
  21. [root@cka-master ~]#

查看node

[root@cka-master ~]# kubectl top node
NAME         CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
cka-master   312m         3%     1600Mi          41%       
cka-node1    148m         1%     752Mi           26%       
cka-node2    153m         1%     686Mi           23%