> For the complete documentation index, see [llms.txt](https://darren.gitbook.io/project/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://darren.gitbook.io/project/gai-nian-yu-yuan-li/ji-qun-zi-yuan-dui-xiang/horizontal-pod-autoscaling/metrics-server.md).

# Metrics-Server

### 简介 <a href="#jian-jie" id="jian-jie"></a>

从 Kubernetes 1.8 开始，资源使用指标（如容器 CPU 和内存使用率）通过 Metrics API 在 Kubernetes 中获取, metrics-server 替代了heapster。Metrics Server 实现了Resource Metrics API，Metrics Server 是集群范围资源使用数据的聚合器。

Metrics Server 从每个节点上的 Kubelet 公开的 Summary API 中采集指标信息。

**参考文档:** <https://github.com/kubernetes-incubator/metrics-server>

### 安装metrics-server <a href="#an-zhuang-metricsserver" id="an-zhuang-metricsserver"></a>

这里可以clone官方的repo<https://github.com/kubernetes-incubator/metrics-server.git>

* metrics-server默认会从kubelet的基于http通信的10255端口获取指标数据，但出于安全考虑，kubernetes 1.11版本的kubeadm在初始化群集时会关闭kubelet的10255端口，导致无法获取数据。
* 官方仓库中的清单文件`metrics-server-deployment.yaml`中未明确主程序metrics-server传递参数指定指标数据的获取接口，它通常应该是`kubernetes.summary_api`

修改镜像以及参数`metrics-server-deployment.yaml`

```
image: registry.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.3
args:
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP
```

* `--kubelet-insecure-tls` CA 证书并没有把各个节点的 IP 签上去，所以这里 metrics-server 通过 IP 去请求时，提示签的证书没有对应的 IP（错误：x509: cannot validate certificate for xx.xx.xx.xx because it doesn’t contain any IP SANs),使用该参数跳过验证
* `kubelet-preferred-address-types` 使用ip方式，解决`xxx: no such host`

我这里都已经修改好了可以直接使用即可

```
kubectl apply -f deploy/metrics-server/deploy/1.8+/
```

查看pod是否为`Running`状态

```
kubectl get pod -n kube-system
```

### 资源监控 <a href="#zi-yuan-jian-kong" id="zi-yuan-jian-kong"></a>

文章：carry：<https://carey.akhack.com/2019/05/28/kubernetes%E7%9B%91%E6%8E%A7metrics%E5%AE%89%E8%A3%85/>
