## 简介
从 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](https://github.com/kubernetes-incubator/metrics-server)
## 安装metrics-server
这里可以clone官方的repo[https://github.com/kubernetes-incubator/metrics-server.git](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
```
## 资源监控
- 获取node资源
```
kubectl top node
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
k8s-11 167m 4% 1680Mi 45%
k8s-12 221m 5% 1563Mi 42%
k8s-13 172m 4% 1500Mi 40%
k8s-14 109m 2% 955Mi 25%
k8s-15 218m 5% 2133Mi 57%
```
- 获取pod资源
```
kubectl top pod
NAME CPU(cores) MEMORY(bytes)
eureka-0-0 12m 322Mi
eureka-1-0 13m 307Mi
eureka-2-0 12m 322Mi
flask-c44695649-h2bq6 0m 23Mi
jenkins-65db5c5f74-h8czs 0m 604Mi
mongo-844dd9c866-d6g6k 3m 154Mi
nginx-deployment-5cbf758889-dk5w8 0m 3Mi
nginx-deployment-5cbf758889-s8jwd 0m 2Mi
nginx-deployment-5cbf758889-wxlfw 0m 4Mi
redis-66bff5cbbb-w77dn 1m 11Mi
tomcat-87cc47fb7-6cbqp 0m 121Mi
tomcat-87cc47fb7-dmld6 0m 106Mi
tomcat-87cc47fb7-wdkdm 0m 110Mi
```
- kubernetes基础
- 安装kubernetes
- kubeadm平滑升级群集
- Taint和Toleration
- 使用HostAliases向Pod /etc/hosts 文件添加条目
- ConfigMap
- 插件
- 支持外部dns
- 安装helm
- HPA
- 存储
- 本地存储
- 网络存储
- Secret
- ConfigMap
- QA
- k8s使用时需要注意的坑点
- 容器中的JVM资源该如何被安全的限制
- 项目实践
- eureka集群
- Traefik ingress服务发现与负载均衡
- etcd数据备份与恢复
- deployment滚动升级与回滚
- 监控
- prometheus operator初体验
- prometheus-operator监控
- metrics-server监控kubernetes资源
- weave scope可视化监控
