Metrics Server简介
Metrics Server 是 Kubernetes 集群核心监控数据的聚合器,Metrics Server 从 Kubelet 收集资源指标,并通过 Merics API 在 Kubernetes APIServer 中提供给缩放资源对象 HPA 使用。也可以通过 Metrics API 提供的 Kubectl top 查看 Pod 资源占用情况,从而实现对资源的自动缩放。
官方文档:https://kubernetes-sigs.github.io/metrics-server/
项目地址:https://github.com/kubernetes-sigs/metrics-server
问题处理:https://github.com/kubernetes-sigs/metrics-server/issues/131#issuecomment-418405881
helm 部署 Metrics Server
参考:https://artifacthub.io/packages/helm/metrics-server/metrics-server
helm repo add metrics-server https://kubernetes-sigs.github.io/metrics-server/
helm upgrade --install metrics-server \
--namespace=kube-system \
--set image.repository=registry.cn-shenzhen.aliyuncs.com/cnmirror/metrics-server \
--set 'args={"--kubelet-insecure-tls=true","--kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname"}' \
metrics-server/metrics-server
参数说明:
- 默认GCR镜像无法拉取,需要替换为国内地址
- kubelet-insecure-tls 访问kubelet忽略tls证书效验
- kubelet-preferred-address-types=InternalIP 使用 ip连接kubelet
查看创建的pods
root@ubuntu:~# kubectl get pods
NAME READY STATUS RESTARTS AGE
metrics-server-769cb6ccd4-s5tp5 1/1 Running 0 99s
查看 pods 指标
root@ubuntu:~# kubectl top pods
NAME CPU(cores) MEMORY(bytes)
busybox 0m 0Mi
centos 0m 0Mi
deployment-nfs-65bf4f7c4c-hwxxn 7m 3Mi
metrics-server-6f979fb646-6mnhd 4m 16Mi
nfs-server-78dd9fcbf4-vd5l2 3m 55Mi
virt-launcher-testvm-4wts5 3m 133Mi
virt-launcher-win2012vm-l6nr8 20m 2129Mi
virt-launcher-win2022-8ntrn 7m 58Mi
virt-launcher-win2022-vm1-tjvf7 5m 68Mi
查看 nodes 指标
root@ubuntu:~# kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
master 197m 12% 5926Mi 84%
node1 145m 9% 4813Mi 68%
node2 194m 12% 5660Mi 80%
查看apiserver
root@ubuntu:~# kubectl get apiservice | grep metrics-server
v1beta1.metrics.k8s.io default/metrics-server True 140m
yaml部署 Metrics Server
1、下载yaml文件
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
2、修改metrics server启动参数
sed -e "s|\(\s\+\)- args:|\1- args:\n\1 - --kubelet-insecure-tls=true|" components.yaml
3、替换gcr镜像
sed -i "s#k8s.gcr.io/metrics-server/metrics-server#registry.cn-shenzhen.aliyuncs.com/cnmirror/metrics-server#g" components.yaml
修改后yaml文件改动如下
root@ubuntu:~# cat components.yaml
......
spec:
containers:
- args:
- --kubelet-insecure-tls
- --cert-dir=/tmp
- --secure-port=4443
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --kubelet-use-node-status-port
- --metric-resolution=15s
image: k8s.gcr.io/metrics-server/metrics-server:v0.6.1
5、部署metrics-server
kubectl apply -f components.yaml
参考:
https://cloud.tencent.com/developer/article/1635996
http://www.mydlq.club/article/77/