1.metrics是一个监控系统资源使用的插件,可以监控node节点上的CPU、内存的使用率,或pod对资源的占用率,通过读资源占用的了解,可以合理的部署容器应用
2.metrics从Kubernetes 1.8开始,资源使用情况的监控可以通过Metrics API的形式获取,具体组件为Metcics Server,用来替换之前的heapster。
使用metrics
查看资源占用情况(没装插件会失败)
kubectl top node
metrics-server是扩展的apiserver,依赖于kube-aggregator,因此需要在apiserver中开启相关参数,开启聚合API
修改api-server启动参数(master主机修改)
[root@master ~]# vim /etc/kubernetes/manifests/kube-apiserver.yaml
- --enable-aggregator-routing=true
[root@master ~]# systemctl restart kubelet #重启kubelet服务
[root@master ~]# kubectl -n kube-system get pod kube-apiserver-master -o yaml | grep enable-aggregator-routing
- --enable-aggregator-routing=true #验证配置
metrics需要使用kubelet证书
为kubelet签发证书
重启kubelet服务
要在所有节点执行(master,node-0001,node-0002,node-0003)
申请的多余证书可以使用 (kubectl delete certificatesigningrequests 证书名称) 删除 (所有节点都需要签发节点)
[root@node-0001 ~]# vim /var/lib/kubelet/config.yaml
serverTLSBootstrap: true #向k8s平台申请证书
[root@node-0001 ~]# systemctl restart kubelet
#-------------------------签发证书必须在 master 上执行 ------------------------------------
[root@master ~]# kubectl get certificatesigningrequests
NAME AGE REQUESTOR CONDITION
csr-wsfz7 8s system:node:master Pending
[root@master ~]# kubectl certificate approve csr-wsfz7
[root@master ~]# kubectl get certificatesigningrequests
NAME AGE REQUESTOR CONDITION
csr-wsfz7 86s system:node:master Approved,Issued
·官网:https://github.com/kubernets-sigs/metrics-server
下载镜像和资源文件,并导入私有仓库
镜像导入
安装metrics-server
——rbac.yaml 授权控制器
——pdb.yaml 中断控制器
——development.yaml 主进程 metrics
——service.yaml 后端是 metrics 主进程的服务
——apiservice.yaml 注册集群API
```powershell
```powershell
[root@master metrics]# docker load -i metrisc-server.tar.gz
[root@master metrics]# docker tag gcr.io/k8s-staging-metrics-server/metrics-server:master 192.168.1.100:5000/metrics-server:master
[root@master metrics]# docker push 192.168.1.100:5000/metrics-server:master
[root@master metrics]# vim deployment.yaml
29: image: 192.168.1.100:5000/metrics-server:master
[root@master metrics]# kubectl apply -f rbac.yaml
[root@master metrics]# kubectl apply -f pdb.yaml
[root@master metrics]# kubectl apply -f deployment.yaml
[root@master metrics]# kubectl apply -f service.yaml
[root@master metrics]# kubectl apply -f apiservice.yaml
#-------------------------------- 查询验证 ----------------------------------------------
[root@master metrics]# kubectl -n kube-system get pod
NAME READY STATUS RESTARTS AGE
metrics-server-78dfb54777-4dcjl 1/1 Running 0 116s
[root@master metrics]# kubectl -n kube-system get apiservices
NAME SERVICE AVAILABLE AGE
v1beta1.metrics.k8s.io kube-system/metrics-server True 2m20s
[root@master metrics]# kubectl top node
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
master 95m 4% 840Mi 48%
node-0001 24m 1% 266Mi 15%
node-0002 24m 1% 270Mi 15%
node-0003 26m 1% 280Mi 16%