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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 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,参考:

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
Kubernetes 开发者 Docker
构建高效微服务架构:Docker与Kubernetes的协同应用
【5月更文挑战第30天】 在当今软件开发领域,微服务架构已成为实现系统模块化、提升可维护性及扩展性的关键策略。本文深入探讨了如何通过Docker容器化技术和Kubernetes集群管理,共同构建一个既高效又可靠的后端微服务环境。我们将剖析Docker和Kubernetes的核心功能,以及它们如何相辅相成,支撑起现代化的云原生应用程序部署和管理。文章还将提供具体实践案例,帮助开发者理解将理论应用于实际开发过程中的步骤和考虑因素。
|
15天前
|
监控 持续交付 数据安全/隐私保护
Python进行微服务架构的监控
【6月更文挑战第16天】
36 5
Python进行微服务架构的监控
|
10天前
|
Prometheus 监控 Kubernetes
深入理解Prometheus: Kubernetes环境中的监控实践
Kubernetes简介 在深入Prometheus与Kubernetes的集成之前,首先简要回顾一下Kubernetes的核心概念。Kubernetes是一个开源的容器编排平台,用于自动化容器的部署、扩展和管理。它提供了高度的可扩展性和灵活性,使得它成为微服务和云原生应用的理想选择。 核心组件 • 控制平面(Control Plane):集群管理相关的组件,如API服务器、调度器等。 • 工作节点(Nodes):运行应用容器的机器。 • Pods:Kubernetes的基本运行单位,可以容纳一个或多个容器。
|
9天前
|
SQL 存储 关系型数据库
深入OceanBase内部机制:系统架构与组件精讲
深入OceanBase内部机制:系统架构与组件精讲
深入OceanBase内部机制:系统架构与组件精讲
|
10天前
|
Prometheus 监控 Kubernetes
一篇文章讲明白Kubernetes(k8s)部署Promehteus监控
一篇文章讲明白Kubernetes(k8s)部署Promehteus监控
18 0
|
10天前
|
Prometheus 监控 Kubernetes
一篇文章讲明白Kubernetes(k8s)部署Promehteus监控
一篇文章讲明白Kubernetes(k8s)部署Promehteus监控
21 0
|
2月前
|
Kubernetes 网络虚拟化 网络架构
k8s 网络组件详细 介绍
k8s 网络组件详细 介绍
|
2月前
|
Kubernetes 负载均衡 应用服务中间件
k8s 二进制安装 优化架构之 部署负载均衡,加入master02
k8s 二进制安装 优化架构之 部署负载均衡,加入master02
|
2月前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与维护最佳实践
【5月更文挑战第30天】 在现代云计算环境中,容器编排工具如Kubernetes已成为部署和管理微服务的关键。随着其日益广泛的应用,对集群进行有效的监控和维护显得尤为重要。本文将深入探讨Kubernetes集群监控的策略,并分享维护的最佳实践,以确保系统的稳定性和性能优化。我们将从监控工具的选择、关键指标的跟踪到故障排除流程等方面进行详细阐述,并提供实用的操作建议。
|
24天前
|
Kubernetes 应用服务中间件 API
Kubernetes关键组件解析
【6月更文挑战第12天】Kubernetes是一个用于管理容器集群的平台,由Master节点负责集群控制,而Node节点执行管理命令。