前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kubernetes监控架构核心组件Metrics-server

kubernetes监控架构核心组件Metrics-server

作者头像
公众号: 云原生生态圈
发布2021-11-15 16:19:02
1.5K0
发布2021-11-15 16:19:02
举报
文章被收录于专栏:云原生生态圈

如何查看各节点的资源使用情况? 如何监控kubernetes集群资源?自kubernetes 1.8开始,资源使用指标(如容器 CPU 和内存使用率)通过 Metrics API 在 Kubernetes 中获取。在我使用1.16的时候kubernetes集群资源监控heaspter已经被废弃了,现在采用 metrics-server 来代替,metrics-server 是集群范围资源使用数据的聚合器,实现了Resource Metrics API,通过从 kubelet 公开的 Summary API 中采集指标信息。了解k8s监控架构图:

01

heaspter弃用时间线

这是Heapster弃用的(建议的)时间表。对时间轴所做的任何更改都将在此处反映。请注意,这是官方Heapster信息库的时间表。鼓励各个发行版在弃用Heapster时效仿,但可以继续自己支持。

k8s1.11

开始弃用

没有添加新功能或接收器。可能会进行错误修复。

k8s1.12

设置删除

删除了通过Kubernetes安装脚本安装Heapster的可选选项。

k8s1.13

移除

没有新的bug修复。移至kubernetes退休的组织。

02

Kubernetes监控核心组件之Metrics-server

metrics-server是kubernetes监控体系中的核心组件之一,它负责从kubelet收集资源指标,然后对这些指标监控数据进行聚合(依赖kube-aggregator),并在Kubernetes Apiserver中通过Metrics API( /apis/metrics.k8s.io/)公开暴露它们,但是metrics-server只存储最新的指标数据(CPU/Memory)。但是并不会将指标转发给第三方目标。如果使用Metrics-server需要对集群做一些特殊的配置,但是这些配置不是集群安装时候默认配置好的,所以你的集群需要满足这些要求:

  • 你的kube-apiserver要能访问到metrics-server
  • 需要kube-apiserver启用聚合层
  • 组件要有kubectl的认证配置并且绑定到Metrics-server
  • Pod / Node指标需要由Summary API通过Kubelet公开

03

Kubernetes中如何启用聚合层

在kube-apiserver中启用聚合层,需要修改Kube-apiserver的一些配置选项,可以参考官方启用聚合层文档:

代码语言:javascript
复制
--requestheader-client-ca-file=<path to aggregator CA cert>
--requestheader-allowed-names=front-proxy-client
--requestheader-extra-headers-prefix=X-Remote-Extra-
--requestheader-group-headers=X-Remote-Group
--requestheader-username-headers=X-Remote-User
--proxy-client-cert-file=<path to aggregator proxy cert>
--proxy-client-key-file=<path to aggregator proxy key>

Kubernetes集群中有些组件依赖资源指标API(metric API)的功能,比如 kubectl top、HPA和VPA。如果没有资源指标API接口,这些组件无法运行。

04

在Kubernetes集群中部署Metrics-server

首先准备需要的文件

代码语言:javascript
复制
# mkdir ./metrics-server  
# cd $_
# for file in aggregated-metrics-reader.yaml auth-delegator.yaml auth-reader.yaml metrics-apiservice.yaml metrics-server-deployment.yaml metrics-server-service.yaml resource-reader.yaml; do  wget https://raw.githubusercontent.com/kubernetes-sigs/metrics-server/master/deploy/kubernetes/$file;done

修改 metrics-server-deployment.yaml清单文件

代码语言:javascript
复制
containers:
      - name: metrics-server
        image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
        command:
          - /metrics-server
          - --v=4 # 打印详细日志为了debug,你也可以调成2
          - --kubelet-insecure-tls
          - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
        imagePullPolicy: Always

应用修改后的metrics-server配置清单

代码语言:javascript
复制
# kubectl apply -f .

查看metrics-server是否安装成功

代码语言:javascript
复制
# kubectl get pods -n kube-system
# kubectl top nodes
NAME                  CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%  
dev-k8s-01.kubemaster.top   306m         7%     4406Mi          57%      
dev-k8s-02.kubemaster.top   158m         1%     6034Mi          38%      
dev-k8s-03.kubemaster.top   160m         2%     5377Mi          34%      
dev-k8s-04.kubemaster.top   102m         2%     1579Mi          20%      
dev-k8s-05.kubemaster.top   63m          1%     1804Mi          22%
# kubectl top pods -n kube-system

05

错误排查和参考

这样我们就完成了metrics-server的安装。当你安装了metrics-server并且查看容器已经运行的时候,你使用 kubectl top nodes出现

代码语言:javascript
复制
error: metrics not available yet

或者出现以下情况的时候,你需要在等待一会,或者将 --v调成4查看日志信息。

代码语言:javascript
复制
kubectl top pods -n kube-system
W0325 23:14:22.797456   38581 top_pod.go:266] Metrics not available for pod kube-system/coredns-5644d7b6d9-96xm6, age: 3145h55m0.797446s

常见的issue,参考:

  • https://github.com/kubernetes-sigs/metrics-server/issues/237
  • https://github.com/kubernetes-sigs/metrics-server/issues/278
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生生态圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档