资源监控Metrics-Server

  • Metrics-Server
  • 演示环境
  • Metrics-Server部署


Metrics-Server

Metrics-Server是集群核心监控数据的聚合器,用来替换之前的heapster。
容器相关的 Metrics 主要来自于 kubelet 内置的 cAdvisor 服务,有了Metrics-Server之后,用户就可以通过标准的 Kubernetes API 来访问到这些监控数据
Metrics API 只可以查询当前的度量数据,并不保存历史数据
Metrics API URI 为 /apis/metrics.k8s.io/,在 k8s.io/metrics 维护。
必须部署 Metrics-server 才能使用该 API,Metrics-server 通过调用 Kubelet Summary API 获取数据。

Metrics-server属于Core metrics(核心指标),提供API metrics.k8s.io,仅提供Node和Pod的CPU和内存使用情况。而其他Custom Metrics(自定义指标)由Prometheus等组件来完成。

演示环境

server1:172.25.38.1	harbor仓库端
server2:172.25.38.2	k8s master端
server3:172.25.38.3	k8s node端
server4:172.25.38.4	k8s node端

Metrics-Server部署

先在仓库端获取镜像并上传到仓库

资源下载:https://github.com/kubernetes-incubator/metrics-server

skywalking监控k8s集群配置 k8s监控平台_linux


新建一个目录,获取配置文件,执行如下命令:

wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml

修改配置文件,将镜像地址写为自己的

skywalking监控k8s集群配置 k8s监控平台_运维_02


应用文件

skywalking监控k8s集群配置 k8s监控平台_运维_03


监控的pod创建出来了,但有错

skywalking监控k8s集群配置 k8s监控平台_docker_04


查看日志看是怎么回事kubectl logs metrics-server-6454465dcc-s55q4 -n kube-system,如下图是因为监听443端口被拒绝,没有权限

skywalking监控k8s集群配置 k8s监控平台_运维_05


删掉pod等

skywalking监控k8s集群配置 k8s监控平台_docker_06


修改端口为4443(因为要映射到真机端口,所以要大于1000,1000以下的端口在真机需要root权限才可以,而k8s操作是用的k8s账户)

skywalking监控k8s集群配置 k8s监控平台_运维_07


重新应用又出现了如下错误,是因为没有证书

#Metric Server 支持一个参数 --kubelet-insecure-tls,可以跳过这一检查,然而官方也明说了,这种方式不推荐生产使用。

skywalking监控k8s集群配置 k8s监控平台_运维_08


启用TLS Bootstrap 证书签发:在每一个节点(包括master)都做这个操作

skywalking监控k8s集群配置 k8s监控平台_skywalking监控k8s集群配置_09


编辑文件vim /var/lib/kubelet/config.yaml,在最后加入如图内容后重启

skywalking监控k8s集群配置 k8s监控平台_kubernetes_10


证书签名请求文件未通过的都通过了

skywalking监控k8s集群配置 k8s监控平台_kubernetes_11


这时再看pod,监控已经可以正常运行了

skywalking监控k8s集群配置 k8s监控平台_运维_12


监控服务正常被调度,运行正常

skywalking监控k8s集群配置 k8s监控平台_skywalking监控k8s集群配置_13


使用kubectl top node命令监控节点状态

skywalking监控k8s集群配置 k8s监控平台_kubernetes_14


切换一个namespaces监控

skywalking监控k8s集群配置 k8s监控平台_运维_15


下图命令可以查看节点详细信息

skywalking监控k8s集群配置 k8s监控平台_docker_16