一、Metrics Server简介

在以前,都是使用 heapster 进行CUP、内存资源的监控。不过官方目前已经停止维护,并引导大家使用Metrics。

Heapster 的 GitHub 中提到:
image.png

Metrics Server 是Kubernetes集群资源使用情况的聚合器,Kubernetes中有些组件依赖资源指标API(metric API)的功能 ,如kubectl top 、hpa。如果没有资源指标API接口,这些组件无法运行。自kubernetes 1.8开始,资源使用指标通过 Metrics API 在 Kubernetes 中获取,从kubernetes1.11开始Heapster被废弃不再使用,metrics-server 替代了heapster。

二、安装Metrics Server

使用Helm安装

添加仓库并更新:

  1. helm repo add bitnami https://charts.bitnami.com/bitnami
  2. helm repo update

先创建一个namespace,以免默认添加到default:

  1. kubectl create ns metrics

部署Metrics Server

  1. helm install metrics bitnami/metrics-server -n metrics

部署完,会在控制台中打印:

  1. NAME: metrics
  2. LAST DEPLOYED: Sat Oct 31 20:15:42 2020
  3. NAMESPACE: metrics
  4. STATUS: deployed
  5. REVISION: 1
  6. TEST SUITE: None
  7. NOTES:
  8. ** Please be patient while the chart is being deployed **
  9. The metric server has been deployed.
  10. ########################################################################################
  11. ### ERROR: The metrics.k8s.io/v1beta1 API service is not enabled in the cluster ###
  12. ########################################################################################
  13. You have disabled the API service creation for this release. As the Kubernetes version in the cluster
  14. does not have metrics.k8s.io/v1beta1, the metrics API will not work with this release unless:
  15. Option A:
  16. You complete your metrics-server release by running:
  17. helm upgrade metrics bitnami/metrics-server \
  18. --set apiService.create=true
  19. Option B:
  20. You configure the metrics API service outside of this Helm chart

可以看到很明显的提示,需要进行以下设置:

helm upgrade metrics bitnami/metrics-server --set apiService.create=true -n metrics

更新完后,打印出以下内容就说明成功了:

Release "metrics" has been upgraded. Happy Helming!
NAME: metrics
LAST DEPLOYED: Sat Oct 31 20:18:30 2020
NAMESPACE: metrics
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:
** Please be patient while the chart is being deployed **

The metric server has been deployed.

In a few minutes you should be able to list metrics using the following
command:

  kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes"

查看所有的API列表,发现多了个 metrics.k8s.io/v1beta1

$ kubectl api-versions
...
metrics.k8s.io/v1beta1

使用YAML安装(仅供了解)

另一种部署方式,通过YAML部署:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.7/components.yaml

三、查看Metrics Server

打开Kubernetes Dashboard,可以看到指定空间CPU和内存信息消耗:
image.png
Pods视图也能看到每个Pod的资源消耗:
image.png