Kubernetes 集群和应用监控方案的设计与实践

kubernetes集群监控 Kube-Prometheus-Stack 该项目开箱即用的功能,对k8s的监控指标是比较全面的,对于k8s的主要组件的运行状态如Node、Kubelet、Pod、Deployment、StatefulSet、CoreDNS、PV等资源进行了指标采集和监控,项目采用的是prometheus,并且有许多CRD资源,可以很方便通过编写yaml配置文件,来进行监控能力的扩充和告警阈值的设置。 阅读详情

Kubernetes 监控

当你的应用部署到 Kubenetes 后,你很难看到容器内部发生了什么,一旦容器死掉,里面的数据可能就永远无法恢复,甚至无法查看日志以定位问题所在,何况一个应用可能存在很多个实例,用户的一个请求不指定被哪个容器处理了,这使得在 Kubernetes 中对应用进行故障排除较为复杂。在应用之外,由于 Kubernetes 作为基础设施,掌管这整个集群的生死,Kubernetes 的任何故障,必定影响到应用服务的运行,因此监控 Kubernetes 运行状况也至关重要。

当你的应用上了云原生,那你就不得不关注各个服务器的运行状态,基础设施和中间件的运行状态,Kubernetes 中每个组件和资源对象的运行状态,每个应用的运行状态。当然,这个运行状态是一个模糊的概念,取决于我们的关注点,每个被监控的对象要表达的 "运行状态" 是不一样的。为了可以监控我们关注的对象,对象需要做出一些配合,提供合适的运行状态的表达信息,以供我们收集和分析,这可以称为可观测性。

在云原生中,一般对可观测性分为三大作用域:

你可以在 Kubernetes 文档中了解如何监控、调试,以及了解如何对日志进行处理。

在本文中,所提到的监控,只包括 Metrics 。

Metrics、Tracing、Logging 不是完全独立的,在上图中,Metrics 也会可能包含 Logging 和 Tracing 的信息。

要采集的监控数据,来源于被监控对象,而在 Kubernetes 集群中,我们可以将要监控的对象分为三大部分:

在基础环境中,一个完整的监控应包括采集数据、存储数据、分析存储数据、展示数据、告警等多个部分,而每个部分都有相关的工具或技术解决云原生中环境的多样需求和复杂性问题。

既然要做监控,那么就需要监控工具。监控工具可以获取所有重要的指标和日志(Metrics也可以包含一些日志),并将它们存储在一个安全、集中的位置,以便可以随时访问它们来制定方案解决问题。由于在云原生中,应用在 Kubernetes 集群中部署,因此,监控 Kubernetes 可以让你深入了解集群的运行状况和性能指标、资源计数以及集群内部情况的顶级概览。发生错误时,监控工具会提醒你(告警功能),以便你快速推出修复程序。

Prometheus 是一个 CNCF 项目,可以原生监控 Kubernetes、节点和 Prometheus 本身,目前 Kubernetes 官方文档主要推荐使用 Prometheus 本身,它为 Kubernetes 容器编排平台提供开箱即用的监控能力。因此在本文中,对监控方案的设计是围绕 Prometheus 展开的。

下面是 Prometheus 的一些组件介绍:

Prometheus 在 Kubernetes 中的监控方案结构如下:

【图源:https://devopscube.com/setup-prometheus-monitoring-on-kubernetes/】

要监控的对象种类很多,我们把相同类型的对象称为一个实体,而每个实体运行时的对象产生的数据有各种各样的,为了归纳收集这些数据, Prometheus 将实体中的各种属性值分为 Counter (计数器)、Gauge (仪表盘)、Histogram(累积直方图)、Summary(摘要)四种类型,实体中的每个属性,称为指标,例如 容器已累计使用 CPU 量,使用指标名称 container_cpu_usage_seconds_total 记录。

每个指标一般格式为:

每个对象都在无时无刻产生数据,为了区分当前指标值属于哪个对象,可以给指标除了指

对象生成类似这种结构的文本后,可以暴露 metrics 端点,让 Prometheus 自动采集,或通过 Pushgateway 推送到 Prometheus 中。

接下来,我们将在 Kubernetes 中搭建一个完整的 Prometheus 监控体系。

实 践

▌节点监控

node exporter 是用 Golang 编写的,用于在 Linux 系统上,收集内核公开的所有硬件和操作系统级别的指标,包括 CPU 、信息、网卡流量、系统负载、socket 、机器配置等。

读者可参考中列举出的 https://github.com/prometheus/node_exporter 中列举出的所有默认开启或默认关闭的指标。

既然要监控集群中的每个节点,那么就要做到每个节点都运行这一个 node exporter 实例,并且在集群新增节点的时候自动调度一个 node exporter 到这个节点中运行,因此需要采用 node exporter 的部署需要 DaemontSet 模式。

查看集群中的所有节点:

root@master:~# kubectl get nodes
NAME     STATUS                     ROLES                  AGE     VERSION
master   Ready,SchedulingDisabled   control-plane,master   98d     v1.22.2
salve2   Ready                      <none>                 3h50m   v1.23.3
slave1   Ready                      <none>                 98d     v1.22.2

Bibin Wilson 大佬已经封装好了用于 Kubernetes 的 node exporter 的 YAML 文件,我们直接下载即可:

git clone https://github.com/bibinwilson/kubernetes-node-exporter

打开仓库中的 daemonset.yaml 文件,大概了解其中的信息。

在 YAML 文件中,可以看到 node exporter 会被部署到命名空间 monitoring 中运行,它有两个 label:

   labels:
     app.kubernetes.io/component: exporter
     app.kubernetes.io/name: node-exporter

为了 node exporter 能够被调度到 master 节点中运行,我们需要为 Pod 添加容忍度属性:

  template:
    metadata:
      labels:
        app.kubernetes.io/component: exporter
        app.kubernetes.io/name: node-exporter
    spec:
    # 复制下面这部分到对应的位置
      tolerations:
      - key: "node-role.kubernetes.io/master"
        operator: "Exists"
        effect: "NoSchedule"
      - key: "node.kubernetes.io/unschedulable"
        operator: "Exists"
        effect: "NoSchedule"

为了部署 node exporter ,我们先创建命名空间:

kubectl create namespace monitoring

执行命令部署 node exporter:

kubectl create -f daemonset.yaml

查看 node exporter 实例

root@master:~# kubectl get daemonset -n monitoring
NAME            DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   
k8s的监控 /可以直接远程运行对应的yaml文件,不过,我们要看一看这个yaml文件内都有些什么内容,然后还需要将svc资源类型更改为NodePort的方式,所以这里我们可以先将这个yam文件下载到本地。5、将这个目录中的yaml文件,全部运行。Prometheus:收集apiserver,scheduler,controller-manager,kubelet组件的数据,通过http协议传输。PS: 如果是使用的旧版本的dashboard,使用谷歌浏览器登录,可能是不成功的,需要换成其他的浏览器,比如:火狐。 阅读详情

相关推荐

K8s概述:几种集群方案的对比

几种集群方案简介 下面以docker部署为主,主流的容器化集群部署方案主要有以下几种: Docker Compose:帮助在同一个节点上部署多个容器。 Docker Swarm:多台机器上部署容器。开箱即用,快速部署容器。偏重容器部署 K8s:社区活跃度高,组件丰富。微服务化,偏重应用的部署。 Marathon+Mesos:大数据组件部署。双层调度,侧重底层资源管理。任务调度需自己实现 compose支持在同一节点上部署,swarm支持在多个节点上部署容器。这两者都是docker原生支持的...

AMSRY的博客 6560

集群篇-k8s介绍

@[TOC]集群篇-k8s介绍 一、集群业务介绍 集群篇: 服务器的搭建、集群的管理、运维 1.集群业务介绍 集群:k8s及自动化部署,服务器的预警监控功能 2. 二、笔记 K8S部署&DevOps ,百度云地址 提取码 1111 1. 2. ...

yunli0的博客 1万+

K8s 集群监控:从指标采集到可视化展示的完整方案

构建一套完整的 K8s 集群监控方案,从指标采集到可视化展示的每个环节都至关重要。通过合理选择指标采集工具(如 Prometheus 及其相关 Exporter)、数据存储方案(本地存储或远程存储)以及可视化工具(Grafana),能够全面、实时地了解 K8s 集群的运行状况,及时发现并解决潜在问题,保障集群的稳定、高效运行。在实际应用中,需要根据集群规模、业务需求等因素,灵活配置和优化监控方案,以满足不同场景下的监控需求。

wdfdgygg77的博客 1386

基于Grafana与Prometheus实现K8s集群中Java应用的JVM深度监控

本文详细介绍了在Kubernetes集群中,如何利用Prometheus和Grafana构建Java应用的JVM深度监控体系。通过集成Spring Boot Actuator暴露指标,配置Prometheus抓取带标签的Pod,并导入定制化Grafana面板,实现对堆内存、GC、线程等关键JVM指标的实时可视化与告警,从而将应用运行状态从“黑盒”变为“白盒”,提升运维可观测性与问题定位效率。

loss4bartender的博客 837

K8S集群设计、部署、维护、优化

K8S集群设计、部署、维护、优化。

我是赛博AI Lewis 1006

Kubernetes集群监控方案

原文地址:https://blog.51cto.com/ylw6006/2084403 本文介绍在k8s集群中使用node-exporter、prometheus、grafana对集群进行监控。 其实现原理有点类似ELK、EFK组合。node-exporter组件负责收集节点上的metrics监控数据,并将数据推送给prometheus, prometheus负责存储这些数据,grafana将这些数据通过网页以图形的形式展现给用户。 在开始之前有必要了解下Prometheus是什么? Prometheus

qq_50119948的博客 763

Kubernetes 环境可用的多种监控方案梳理

主流监控方案分为开源、商业及新兴技术三大类。开源方案中,Prometheus适用于云原生,EFK适合日志分析,Zabbix适合混合云;商业方案如Datadog提供全栈观测但成本高。新兴技术包括边缘计算监控和AI增强分析。选型需考虑成本、扩展性及云原生适配性,推荐初创团队用Prometheus+ Grafana,混合云用Rancher+Prometheus。分层架构和生命周期管理可优化性能,安全加固可确保合规。合理方案能在保证高可用性的同时控制资源开销。

从技术实践立足,从项目管理方法论延伸思考 1933

集群透视 - K8s 核心监控组件与日志管理方案

Kubernetes集群监控与日志管理是SRE工作的关键环节。监控体系分为四个层面:节点、Pod/容器、控制平面和API对象状态,依赖于核心组件metrics-server(资源指标聚合)、cAdvisor(容器指标采集)和kube-state-metrics(集群状态转换)。Prometheus+Grafana组合通过抓取多维度指标并提供可视化仪表盘,成为监控的事实标准。日志管理方面,采用节点级日志代理(如Fluentd)收集容器日志,配合Elasticsearch或Loki等后端实现集中存储与分析。完善

weixin_42587823的博客 871

简单、有效、全面的Kubernetes监控方案

简介:近年来,Kubernetes作为众多公司云原生改造的首选容器化编排平台,越来越多的开发和运维工作都围绕Kubernetes展开,保证Kubernetes的稳定性和可用性是最基础的需求,而这其中最核心的就是如何有效地监控Kubernetes集群,保证整个集群的一个良好的可观察性。本期将为大家介绍Kubernetes的监控方案。 前言 近年来,Kubernetes作为众多公司云原生改造的首选容器化编排平台,越来越多的开发和运维工作都围绕Kubernetes展开,保证Kubernetes的稳定性和可用性

阿里云云栖号 1351

从Linux到K8s:Docker容器化与Kubernetes集群实战指南

容器化技术通过操作系统级虚拟化实现应用与运行环境的隔离,其核心原理是基于Linux内核的命名空间和控制组机制。这种技术为现代软件部署带来了革命性价值,显著提升了资源利用率、部署效率和跨环境一致性。在微服务架构、持续集成和云原生应用等场景中,容器化已成为基础支撑技术。Docker作为最流行的容器运行时,简化了镜像构建和容器管理流程;而Kubernetes则进一步解决了容器编排、服务发现和自动扩缩容等分布式系统难题。本文聚焦Docker镜像管理和Kubernetes集群搭建等热词内容,通过完整实战演示帮助读者掌

weixin_33691700的博客 534

Zabbix监控Kubernetes集群的完整配置流程

在应用Pod中添加annotation:在Zabbix中创建HTTP Agent监控项:类型: Text预处理: Prometheus pattern键值: prometheus.metric[metric_name]通过本文详细的配置指南,我们建立了完整的Kubernetes监控体系,实现了从基础设施到应用工作负载的全栈可视化管理。全面性:覆盖集群所有关键组件和指标实时性:秒级监控数据采集和告警可扩展性:支持自定义指标和业务监控稳定性:经过生产环境验证的配置方案。

MenzilBiz的博客 1506

《kubernetes》Prometheus监控

本文介绍了在Kubernetes集群中部署Prometheus+Grafana监控系统的完整方案。主要内容包括:1)Prometheus监控系统架构及组件解析,包括server、node_exporter等;2)详细部署步骤:创建Prometheus Deployment/Service/ConfigMap/RBAC,部署Node_exporter DaemonSet,安装Grafana可视化组件;3)配置验证,通过NodePort访问Prometheus(9090端口)和Grafana(3000端口);

2301_80348933的博客 1217

有道Kubernetes容器API监控系统设计和实践

1.背景 Kubernetes 已经成为事实上的编排平台的领导者、下一代分布式架构的代表,其在自动化部署、监控、扩展性、以及管理容器化的应用中已经体现出独特的优势。 在k8s容器相关的监控上, 我们主要做了几块工作,分别是基于prometheus的node、pod、k8s资源对象监控,容器服务API监控以及基于grafana的业务流量等指标监控。 在物理机时代,我们做了分级的接口功能监控——域名级别接口监控和机器级别监控,以便在某个机器出现问题时,我们就能快速发现问题。 上图中,左边是物理机时代

Java圈全能架构师的博客 522

k8s实践(十一):heapster influxdb grafana实现kubernetes集群监控

环境说明: 主机名 操作系统版本 ip docker version kubelet version 配置 备注 master Centos 7.6.1810 172.27.9.131 Docker 18.09.6 V1.14.2 2C2G master主机 node01 Centos 7.6.1810 172.27.9.135 Docker 18.09.6 V1.14.2 2C2G ...

ZL576576576的博客 1103

【K8S系列】深入解析K8S监控

【深入解析k8s】专栏主要是深入解析每个知识点,帮助大家完全掌握k8s,以下是已更新的章节【深入解析K8S专栏介绍】Kubernetes是一个分布式系统,能够管理和编排容器化应用程序。其中,监控是一个非常重要的方面,可以帮助用户了解集群的健康状态、性能和可用性。在本文中,将详细介绍Kubernetes监控的监控类型监控详解监控软件安装监问题思考在Kubernetes中,监控是一个非常重要的方面,可以帮助用户了解集群的健康状态、性能和可用性。

颜淡慕潇 3万+

1、深入探索Linux架构设计与实践

本文深入探讨了Linux架构设计与实践的关键技术与方案,涵盖了从分布式存储解决方案GlusterFS的设计与部署,到基于Kubernetes的高可用性Web应用构建,再到使用ELK Stack进行日志监控和Saltstack进行系统管理的完整实践。同时,文章还提供了多种优化策略和综合案例分析,并展望了Linux架构的未来发展趋势,为构建高效、可靠、安全的IT系统提供了全面指导。

dapp9builder的博客 71

时序定江山,功耗写风骨——解读时序库lib文件的奥义【芯片设计 lib文件】

lib库,全称liberty library format file:它是Liberty时序文件的简称,使用 Liberty 语法来编写。它可以通过library compiler/dc转换成.db文件(database),供synopsis家的DC和PT使用,也可以通过spyglass的library compiler来生成sglib文件,供spyglass使用。他们是等价的,但db文件是二进制格式,人类不可读。

LogicYarn的博客 2605

InTouch历史报警与操作记录高效查询控件V4.0实战指南(一键下载即用)

本文详细介绍了InTouch历史报警与操作记录高效查询控件V4.0的实战应用。该控件针对原生AlmDbViewCtrl控件的查询效率低下、功能单一等问题,提供了智能查询、可视化统计、视图定制和一键导出Excel等强大功能,旨在帮助工程师快速处理海量历史数据,大幅提升工控运维效率。

g9h0i1的博客 960

JSBSim开发手册:飞机仿真模型开发指南

JSBSim是一款开源的飞行动力学模型仿真引擎,支持多种飞行器的仿真,包括固定翼飞机、直升机、无人机等。JSBSim的设计目标是提供一个灵活、高效、精确的飞行动力学仿真环境。飞行动力学仿真:实现飞行器的动力学仿真,包括空气动力学、发动机、质量和惯性等模型。控制系统仿真:实现飞行器的控制系统仿真,包括自动驾驶仪、飞控系统等。环境仿真:模拟飞行环境,包括大气模型、风力模型等。本文详细介绍了如何使用C++进行JSBSim开发,包括系统设计、模型实现、代码优化和性能调优等方面的内容。

qq_38334677的博客 4528

UE5与Cesium for Unreal结合:打造高效离线地图解决方案

本文详细介绍了如何利用UE5与Cesium for Unreal结合打造高效离线地图解决方案,特别适用于数字孪生、军事仿真等网络不稳定场景。通过优化配置、数据处理和性能调优,实现TB级地形数据的流畅渲染,并结合实战案例展示了在油田巡检等复杂环境中的应用效果。

weixin_29007135的博客 493

别再死记硬背公式了!用Multisim仿真软件,5分钟搞懂三极管放大电路的工作原理

本文介绍如何利用Multisim仿真软件快速掌握三极管放大电路的工作原理,避免死记硬背公式。通过动态实验和参数调整,直观理解三极管的工作状态和放大效果,提升学习效率和实践能力。

weixin_30566063的博客 569

【技能】伪真openclaw主动式智能体—告别‘巨婴’AI工具人:体验主动智能体的魅力

摘要: 传统AI常因被动执行、缺乏闭环而令人抓狂。Proactivity主动执行能力将AI从"指令跟随者"升级为"主动合伙人",具备预判需求、自动推进、断聊恢复、问题自解等能力。其核心原理在于建立AI专属工作体系(持久化内存、动态任务层、临时缓存层、归档复盘层),通过7步闭环(感知触发→状态恢复→边界校验→方案探索→动作决策→执行落地→状态留存)确保安全高效。

海兰 211

深度剖析:Spring AI 与 LangChain4j,谁才是 Java 程序员的 AI 开发利器?

首先介绍 AI 时代 Java 开发框架选择背景,接着对比两者功能特性(Spring AI 的生态集成与标准化设计、LangChain4j 的多模型适配与提示工程)、应用场景(企业级系统改造与创新产品开发)、开发体验(学习成本与调试工具)、生态扩展(Spring 商业支持与 LangChain4j 开源社区)、性能安全(企业级优化与自主安全实现)及成本趋势(短期投入、长期回报与技术演进),最后给出选型建议与混合架构方案。

博客 5446

YOLOv9改进策略【损失函数篇】| Slide Loss,解决简单样本和困难样本之间的不平衡问题

本文记录的是改进YOLOv9的损失函数,将其替换成Slide Loss,并详细说明了优化原因,注意事项等。Slide Loss函数可以有效地解决样本不平衡问题,为困难样本赋予更高的权重,使模型在训练过程中更加关注困难样本。若是在自己的数据集中发现容易样本的数量非常大,而困难样本相对稀疏,可尝试使用Slide Loss来提高模型在处理复杂样本时的性能。

Limiiiing的博客 2612

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: Spring AOP实现原理详解之Cglib代理实现
下一篇: 每个程序员都需要知道的IntelliJ IDEA插件
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值