Kubernetes自定义监控指标——Prometheus Adapter实战演练

news2024/12/23 12:37:48

1、概述

kubernetes的监控指标分为两种:

  • Core metrics(核心指标):从 Kubelet、cAdvisor 等获取度量数据,再由metrics-server提供给 kube-scheduler、HPA、 控制器等使用。

  • Custom Metrics(自定义指标):由Prometheus Adapter提供API custom.metrics.k8s.io,由此可支持任意Prometheus采集到的指标。

请添加图片描述

核心指标只包含node和pod的cpu、内存,一般来说,核心指标作HPA已经足够,但如果想根据自定义指标:如请求qps/5xx错误数来实现HPA,就需要使用自定义指标了目前Kubernetes中自定义指标一般由Prometheus来提供,再利用prometheus-adpater(自定义apiserver)聚合到原生kubernetes apiserver,实现和核心指标(metric-server)同样的效果。聚合自定义apiserver请参考Kubernetes核心指标监控——Metrics Server 这篇博文,本文不再赘余。

2、部署prometheus-adpater

Prometheus可以采集其它各种指标,但是prometheus采集到的metrics并不能直接给kubernetes用,因为两者数据格式不兼容,因此还需要另外一个组件(kube-state-metrics),将prometheus的metrics数据格式转换成k8s API接口能识别的格式,转换以后,因为是自定义API,所以还需要用Kubernetes aggregator在主API服务器中注册,以便直接通过/apis/来访问。

文件清单:

  • node-exporter:prometheus的exporter,收集Node级别的监控数据
  • prometheus:监控服务端,从node-exporter拉数据并存储为时序数据。
  • kube-state-metrics:将prometheus中可以用PromQL查询到的指标数据转换成k8s对应的数据。
  • prometheus-adpater:聚合进apiserver,即一种custom-metrics-apiserver实现
  • 开启Kubernetes aggregator功能(开启方法可以参考官方社区的文档)

快速方便部署prometheus 可以参考这个 Prometheus Operator 极简配置方式在k8s一条龙安装Prometheus 监控

k8s-prometheus-adapter的部署文件:

请添加图片描述

其中创建了一个叫做cm-adapter-serving-certs的secret,包含两个值: serving.crt和serving.key,这是由apiserver信任的证书。kube-prometheus项目中的gencerts.sh和deploy.sh脚本可以创建这个secret。包括secret的所有资源,都在custom-metrics命名空间下,因此需要kubectl create namespace custom-metrics

以上组件均部署成功后,可以通过url获取指标

请添加图片描述3、基于自定义指标的HPA

使用prometheus后,pod有一些自定义指标,如http_request请求数

img

创建一个HPA,当请求数超过每秒10次时进行自动扩容

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: podinfo
spec:
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: podinfo
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Pods
    pods:
      metricName: http_requests
      targetAverageValue: 10

查看HPA:

$ kubectl get hpa
NAME      REFERENCE            TARGETS     MINPODS   MAXPODS   REPLICAS   AGE
podinfo   Deployment/podinfo   899m / 10   2         10        2          1m

对Pod试压:

#install hey
$ go get -u github.com/rakyll/hey<br>
#do 10K requests rate limited at 25 QPS
$ hey -n 10000 -q 5 -c 5 http://PODINFO_SVC_IP:9898/healthz

HPA发挥作用:

Events:
  Type    Reason             Age   From                       Message
  ----    ------             ----  ----                       -------
  Normal  SuccessfulRescale  5m    horizontal-pod-autoscaler  New size: 3; reason: pods metric http_requests above target
  Normal  SuccessfulRescale  21s   horizontal-pod-autoscaler  New size: 2; reason: All metrics below target

4、关于prometheus-adapter

其实prometheus-adapter既包含自定义指标,又包含核心指标,即如果安装了prometheus,且指标都采集完整,k8s-prometheus-adapter可以替代metrics server。

在1.6以上的集群中,prometheus-adapter可以适配autoscaling/v2的HPA。

因为一般是部署在集群内,所以prometheus-adapter默认情况下,使用in-cluster的认证方式,以下是主要参数:

  • lister-kubeconfig: 默认使用in-cluster方式
  • metrics-relist-interval: 更新metric缓存值的间隔,最好大于等于Prometheus 的scrape interval,不然数据会为空
  • prometheus-url: 对应连接的prometheus地址
  • config: 一个yaml文件,配置如何从prometheus获取数据,并与k8s的资源做对应,以及如何在api接口中展示。

5、总结

img

kubernetes自定义监控指标prometheus-adapter一般通过Prometheus来提供监控指标数据(其他自定义监控指标采集工具还包括Microsoft Azure Adapter、Google Stackdriver等),一般来说,核心指标作HPA已经足够,但如果想根据自定义指标:如请求qps/5xx错误数来实现HPA,这时候就需要在集群中部署prometheus-adapter了,通过将prometheus-adpater(自定义apiserver)聚合到原生kubernetes apiserver,实现和核心指标(metric-server)同样的效果。

参考:https://yasongxu.gitbook.io/container-monitor/yi-.-kai-yuan-fang-an/di-1-zhang-cai-ji/custom-metrics

参考:https://www.shouxicto.com/article/897.html

参考:Prometheus Operator 极简配置方式在k8s一条龙安装Prometheus 监控

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/95780.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小伙伴们-GO-带你揭开Linux的神秘面纱

文章目录1、Linux的神秘面纱2、Linux操作系统优秀特质3、Linux操作系统应用领域4、解刨-linux系统结构5、带你一探Linux系统-满血复活的启动过程6、Linux 骨架-文件系统与目录结构6.1、Linux 文件系统概览6.2 、linux/unix 文件系统-奠基石6.2.1、 硬盘存储小知识6.2.2、 inode…

重写Nacos服务发现:多个服务器如何跨命名空间,访问公共服务?

一、问题背景 在开发某个公共应用时&#xff0c;笔者发现该公共应用的数据是所有测试环境&#xff08;假设存在 dev/dev2/dev3&#xff09;通用的。 这就意味着只需部署一个应用&#xff0c;就能满足所有测试环境的需求&#xff1b;也意味着所有测试环境都需要调用该公共应用…

LLVM浅析

LLVM的探索 编译器的作用就是将源码编译成可以运行的程序。 终端按顺下敲入 vim hello.py python hello.py vim hello.c clang hello.c ./a.out vim main.m #imclude<stdio.h> int main(int argc, char *argv[]){printf("hello word!"); };LLVM概述 从写代码…

【Python天气预报系统】又要降温,这个冬天你准备好棉衣秋裤了吗?看了不后悔系列之Python打造智能天气预报系统,爆赞。

前言 鼎鼎大名的南方城市长沙很早就入冬了&#xff0c;街上各种大衣&#xff0c;毛衣&#xff0c;棉衣齐齐出动。 这段时间全国各地大风呜呜地吹&#xff0c;很多地方断崖式降温。瑟瑟发抖.jpg 虽然前几天短暂的温度回升&#xff0c;但肯定是为了今天的超级降温&#xff0c;…

毕业设计 - 基于java web的城市公交查询系统的设计与实现【源码+论文】

文章目录前言一、项目设计1. 模块设计2. 实现效果二、部分源码项目工程前言 今天学长向大家分享一个 java web 毕业设计项目: 基于java web的城市公交查询系统的设计与实现 一、项目设计 1. 模块设计 系统功能的划分方式可以分成很多种类&#xff0c;但是我按照界面流程将它…

“人生搜索引擎” # Rewind

你想找什么东西&#xff0c;只需要在搜索引擎上输入关键词&#xff0c;它就会把“相关记忆”给你提取出来。这也就是 Rewind 这款搜索引擎想解决的问题。Rewind 给自身的定义是&#xff1a;The Search Engine For Your Life也就是你人生的搜索引擎&#xff0c;它声称能快速搜索…

宠物狗大学生网页设计模板 静态HTML动物保护学生网页作业成品 DIV CSS动物主题静态网页

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

微信小程序 | 小程序WXSS-WXML-WXS

&#x1f5a5;️ 微信小程序 专栏&#xff1a;小程序WXSS-WXML-WXS &#x1f9d1;‍&#x1f4bc; 个人简介&#xff1a;一个不甘平庸的平凡人&#x1f36c; ✨ 个人主页&#xff1a;CoderHing的个人主页 &#x1f340; 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️ &#x1…

高并发下秒杀商品,这9个细节你必须掌握好

目录&#xff1a;导读 前言 一、瞬时高并发 二、页面静态化 三、秒杀按钮 四、读多写少 五、缓存问题 1、缓存击穿 2、缓存穿透 六、库存问题 1、预扣库存 2、数据库扣减库存 3、redis扣减库存 4、 lua脚本扣减库存 七、分布式锁 八、mq异步处理 1、消息丢失问…

[附源码]Node.js计算机毕业设计高校线上教学系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我们…

聚观早报 | 明年起手机预装APP均可卸载;爱奇艺VIP会员再次涨价

今日要闻&#xff1a;明年起手机预装APP均可卸载&#xff1b;爱奇艺VIP会员再次涨价&#xff1b;转转首个华南地区自营店开业&#xff1b;马斯克出售股票套现36亿美元&#xff1b;微软将逐步推出欧盟云数据边界明年起手机预装APP均可卸载 12 月 16 日消息&#xff0c;日前&…

2022中国产业数字化发展成熟度区域指数分析——充分利用特长,形成区域比较优势,夯实中国式现代化建设基础

易观分析&#xff1a;近年来&#xff0c;全球经济发展下行&#xff0c;但数字经济表现出了足够的韧性。在国内&#xff0c;产业数字化的经济规模占全国数字经济比重的81.7%&#xff0c;占中国GDP的32.5%&#xff0c;已经成为中国数字经济发展的核心动能。 在此背景下&#xff0…

Pr 入门系列之十四:导出

视频工作流程中的最后一步就是导出。Pr 中&#xff0c;可以方便地导出序列或剪辑&#xff0c;发送给他人&#xff0c;分享到社交媒体渠道&#xff0c;或者创建 DCP&#xff08;数字电影包&#xff09;文件用于影院分发。◆ ◆ ◆导出的一般流程1、首先&#xff0c;在时间轴面…

机器学习100天(三):003 数据预处理之处理缺失值

机器学习 100 天,今天讲的是:数据预处理-处理缺失值。 在上一节,我们导入了数据集,得到特征 X 和标签 y。 我们打开 X,发现 index5 样本的‘年龄’和 index3 样本的‘薪资’数值是 NaN。 NaN(Not a Number)是计算机科学中数值数据类型的一类值,表示空值 可能是由于在…

1.两数之和

传送门&#xff1a;https://leetcode.cn/problems/two-sum/ 目录 题目描述 题解 题目描述 给定一个整数数组nums和一个整数目标值target&#xff0c;请你在该数组中找出和为目标值target的那两个整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个…

Android.bp学习

一. Android.bp概念 Android.bp 文件首先是 Android 系统的一种编译配置文件&#xff0c;是用来代替原来的 Android.mk文件的。在Android7.0 以前&#xff0c;Android 都是使用 make 来组织各模块的编译&#xff0c;对应的编译配置文件就是 Android.mk。 在 Android7.0 开始&…

【生信算法】利用HMM纠正测序错误(Viterbi算法的python实现)

利用HMM纠正测序错误&#xff08;Viterbi算法的python实现&#xff09; 问题背景 对两个纯系个体M和Z的二倍体后代进行约~0.05x的低覆盖度测序&#xff0c;以期获得后代个体的基因型&#xff0c;即后代中哪些片段分别来源于M和Z。已知&#xff1a; 后代中基因型为MM、MZ&…

C++ 内存管理

由于C++需要程序员自己完成堆区的内存回收,因此有可能存在内存泄漏的风险。而Java、Python不需要程序员去考虑内存泄漏的问题,虚拟机都做了内存管理。只要可以跨平台的编程语言都需要做内存对齐,C++、Java、Python都是一样的。内存的定义 程序运行时所需的内存空间分为 固定…

什么是知识,什么是知识图谱,有什么作用,有哪些应用领域?

知识图谱可以帮助机器理解世界&#xff0c;提高人工智能模型的性能。它还可以用于数据挖掘、信息检索、问答系统和语义搜索等领域&#xff0c;提高系统的准确性和可理解性。知识图谱的建模方式和技术也可以用于生物信息学和社交网络分析等领域。 知识图谱背景 在给出知识图谱…

【踩坑笔记】STM32 HAL库+泥人W5500模块

1.HAL库与标准库转换 泥人提供的模块收发程序 HAL库下的收发&#xff08;这里只提供部分接口&#xff0c;其它同样改发&#xff09;&#xff1a; 下边这条是标准库自带的函数&#xff0c;这里只用来和HAL库转换 改完之后&#xff0c;想验证自己的驱动改好没有&#xff0c;…