Kubernetes专辑之监控架构核心组件Metrics-server

简介: kubernetes系列

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

heaspter弃用时间线

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

Kubernetes Release Action Policy/Support
Kubernetes 1.11 开始弃用 没有添加新功能或接收器。可能会进行错误修复。
Kubernetes 1.12 设置删除 删除了通过Kubernetes安装脚本安装Heapster的可选选项。
Kubernetes 1.13 Removal 没有新的bug修复。移至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公开

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

--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接口,这些组件无法运行。

部署Metrics-server

首先准备需要的文件

# 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清单文件

      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配置清单

# kubectl apply -f .

查看metrics-server是否安装成功

# 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

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

error: metrics not available yet

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

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,参考:

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
2月前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
164 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
2月前
|
Kubernetes Cloud Native 持续交付
容器化、Kubernetes与微服务架构的融合
容器化、Kubernetes与微服务架构的融合
48 1
|
2月前
|
存储 负载均衡 监控
如何利用Go语言的高效性、并发支持、简洁性和跨平台性等优势,通过合理设计架构、实现负载均衡、构建容错机制、建立监控体系、优化数据存储及实施服务治理等步骤,打造稳定可靠的服务架构。
在数字化时代,构建高可靠性服务架构至关重要。本文探讨了如何利用Go语言的高效性、并发支持、简洁性和跨平台性等优势,通过合理设计架构、实现负载均衡、构建容错机制、建立监控体系、优化数据存储及实施服务治理等步骤,打造稳定可靠的服务架构。
45 1
|
2月前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
2月前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
2月前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
2月前
|
存储 监控 Docker
探索微服务架构下的容器化部署
本文旨在深入探讨微服务架构下容器化部署的关键技术与实践,通过分析Docker容器技术如何促进微服务的灵活部署和高效管理,揭示其在现代软件开发中的重要性。文章将重点讨论容器化技术的优势、面临的挑战以及最佳实践策略,为读者提供一套完整的理论与实践相结合的指导方案。
|
2月前
|
监控 负载均衡 Java
微服务架构下的服务治理与监控
微服务架构下的服务治理与监控
109 0
|
2月前
|
存储 监控 负载均衡
构建高效微服务架构:服务治理与监控的实践
构建高效微服务架构:服务治理与监控的实践

热门文章

最新文章