K8s 启用 metrics-server

Metrics Server是一个可伸缩的、高效的容器资源指标源,用于 Kubernetes 内置的自动缩放管道。

Metrics Server 从 Kubelet 收集资源指标,并通过 Metrics API 在 Kubernetes apiserver 中公开,以便 pod 的水平(Horizontal)或垂直(Vertical)扩展。Metrics API 还可以在kubectl top中使用,从而更轻松调试自动扩展管道(autoscaling pipelines)。

Metrics Server 提供:

  • 在大多数集群上单一部署(deployment)

  • 支持 5000 个节点的伸缩

  • 资源效率:Metrics Server 每个节点使用 0.5m CPU 核心和 4MB 内存

[TOC]

版本适配

Metrics Server

Metrics API group/version

Kubernetes version

0.3.x

Metrics.k8s.io/v1beta1

1.8+

部署 Metrics Server

部署 metrics server 现在只需要一行命令:

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

上述 yaml 脚本将会安装 metrics-server 的 0.3.7 版本,但是 image 会从k8s.gcr.io下载,所以需要手动修改 image pull 地址。

编辑 deploy metrics-server

将 image 从 k8s.gcr.io/metrics-server/metrics-server:v0.3.7修改成registry.cn-shanghai.aliyuncs.com/hsin/metrics-server:v0.3.7此 repo 只有 0.3.7 版本,其他版本请使用其他 repo

kubectl edit deploy/metrics-server -n kube-system
...
spec:
  containers:
  - args:
    - --cert-dir=/tmp
    - --secure-port=4443
    - --kubelet-insecure-tls
    - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
    # 修改此处 image
    image: registry.cn-shanghai.aliyuncs.com/hsin/metrics-server:v0.3.7
    imagePullPolicy: IfNotPresent
    name: metrics-server
...

保存退出后,k8s 会自动从新的 repo 拉取镜像并运行。

查看

部署成功后,查看是否所有 metrics-server 的 pod 处于 running 状态。

kubectl get pod -n kube-system

查看kubectl top node是否有数据。如果执行后,显示error: metrics not available yet,则需要再次调整 metrics-server yaml。

kubectl edit deploy/metrics-server -n kube-system

args 中添加:

...
- args:
    - --cert-dir=/tmp
    - --secure-port=4443
    # 添加下面两行
    - --kubelet-insecure-tls
    - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
...

参考:error: metrics not available yet

保存退出后,待新 pod 处于 running 状态后,等待片刻,再次执行kubectl top node,查看是否有节点的资源信息:

image-20200802212203811

Last updated

Was this helpful?