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

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
1天前
|
存储 运维 监控
Kubernetes 集群的持续监控与性能优化策略
【5月更文挑战第11天】在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。随着其在不同规模企业的广泛采用,如何确保 Kubernetes 集群的高效稳定运行变得至关重要。本文将探讨一套系统的 Kubernetes 集群监控方法,并结合实践经验分享针对性能瓶颈的优化策略。通过实时监控、日志分析与定期审计的结合,旨在帮助运维人员快速定位问题并提出解决方案,从而提升系统的整体表现。
|
6天前
|
Kubernetes Cloud Native 持续交付
构建高效云原生应用:Kubernetes与微服务架构的融合
【5月更文挑战第6天】 在数字化转型的浪潮中,企业正迅速采纳云原生技术以实现敏捷性、可扩展性和弹性。本文深入探讨了如何利用Kubernetes这一领先的容器编排平台,结合微服务架构,构建和维护高效、可伸缩的云原生应用。通过分析现代软件设计原则和最佳实践,我们提出了一个综合指南,旨在帮助开发者和系统架构师优化云资源配置,提高部署流程的自动化水平,并确保系统的高可用性。
28 1
|
8天前
|
运维 监控 Kubernetes
Kubernetes 集群的监控与维护策略
【5月更文挑战第4天】 在当今微服务架构盛行的时代,容器化技术已成为软件开发和部署的标准实践。Kubernetes 作为一个开源的容器编排平台,因其强大的功能和灵活性而广受欢迎。然而,随着 Kubernetes 集群规模的扩大,集群的监控和维护变得日益复杂。本文将探讨 Kubernetes 集群监控的重要性,分析常见的监控工具,并提出一套有效的集群维护策略,以帮助运维人员确保集群的健康运行和高可用性。
40 10
|
8天前
|
Kubernetes 监控 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【5月更文挑战第4天】在现代软件开发中,微服务架构已成为实现可扩展、灵活且独立部署服务的流行解决方案。本文将探讨如何利用Docker容器化技术和Kubernetes容器编排平台来构建一个高效的微服务系统。我们将分析Docker和Kubernetes的核心优势,并指导读者如何通过这些工具优化微服务部署、管理和扩展过程。文章还将涉及监控和日志管理策略,以确保系统的健壮性和可靠性。
|
9天前
|
存储 运维 监控
Kubernetes 集群的持续监控与优化策略
【5月更文挑战第3天】在微服务架构和容器化部署日益普及的背景下,Kubernetes 已成为众多企业的首选容器编排平台。然而,随着集群规模的增长和业务复杂度的提升,有效的集群监控和性能优化成为确保系统稳定性和提升资源利用率的关键。本文将深入探讨针对 Kubernetes 集群的监控工具选择、监控指标的重要性解读以及基于数据驱动的性能优化实践,为运维人员提供一套系统的持续监控与优化策略。
|
11天前
|
运维 Kubernetes 监控
Kubernetes 集群的监控与维护策略
【4月更文挑战第30天】 在现代云计算环境中,容器化技术已成为应用程序部署和管理的重要手段。其中,Kubernetes 作为一个开源的容器编排平台,以其强大的功能和灵活性受到广泛欢迎。然而,随之而来的是对 Kubernetes 集群监控和维护的复杂性增加。本文将探讨针对 Kubernetes 集群的监控策略和维护技巧,旨在帮助运维人员确保集群的稳定性和高效性。通过分析常见的性能瓶颈、故障诊断方法以及自动化维护工具的应用,我们将提供一套实用的解决方案,以优化 Kubernetes 环境的性能和可靠性。
|
12天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理策略
【4月更文挑战第30天】 在微服务架构日益普及的当下,容器化技术与编排工具如Kubernetes成为了运维领域的重要话题。有效的监控和日志管理对于保障系统的高可用性和故障快速定位至关重要。本文将探讨在Kubernetes环境中实施监控和日志管理的最佳实践,包括选用合适的工具、部署策略以及如何整合这些工具来提供端到端的可见性。我们将重点讨论Prometheus监控解决方案和EFK(Elasticsearch, Fluentd, Kibana)日志管理堆栈,分析其在Kubernetes集群中的应用,并给出优化建议。
|
12天前
|
Kubernetes 监控 Docker
|
14天前
|
Kubernetes 负载均衡 Docker
【专栏】构建高效微服务架构:Docker和Kubernetes在构建微服务架构中的应用
【4月更文挑战第27天】本文介绍了Docker和Kubernetes在构建微服务架构中的应用。Docker是开源容器引擎,用于打包和分发应用,实现隔离和封装,提升可扩展性和可维护性。Kubernetes是容器编排平台,自动化部署、扩展和管理容器,提供负载均衡和故障转移。二者结合,能高效支持微服务架构。文中通过实例展示了如何将用户、商品和订单服务用Docker打包,再用Kubernetes部署和管理,确保微服务稳定运行。
|
15天前
|
运维 Kubernetes 监控
Kubernetes 集群的持续性能优化实践
【4月更文挑战第26天】 在动态且不断增长的云计算环境中,维护高性能的 Kubernetes 集群是一个挑战。本文将探讨一系列实用的策略和工具,旨在帮助运维专家监控、分析和优化 Kubernetes 集群的性能。我们将讨论资源分配的最佳实践,包括 CPU 和内存管理,以及集群规模调整的策略。此外,文中还将介绍延迟和吞吐量的重要性,并提供日志和监控工具的使用技巧,以实现持续改进的目标。