kube-promethesu新增k8s组件监控(etcd\kube-controller-manage\kube-scheduler)

 我们的k8s集群是二进制部署

一、prometheus添加自定义监控与告警(etcd)

1、步骤及注意事项(前提,部署参考部署篇)

1.1 一般etcd集群会开启HTTPS认证,因此访问etcd需要对应的证书

1.2 使用证书创建etcd的secret

1.3 将etcd的secret挂在到prometheus

1.4创建etcd的servicemonitor对象(匹配kube-system空间下具有k8s-app=etcd标签的service)

1.5 创建service关联被监控对象

2、操作部署

2.1 创建etcd的secret

ETC的自建证书路径:/opt/etcd/ssl,cd /opt/etcd/ssl

kubectl create secret generic etcd-certs --from-file=server.pem --from-file=server-key.pem --from-file=ca.pem -n monitoring

可以用下面的命令验证下是否有内容产出,由内存说明是没有问题的

 curl --cert /opt/etcd/ssl/server.pem --key /opt/etcd/ssl/server-key.pem  https://192.168.7.108:2379/matrics -k |more

2.2 添加secret到名为k8s的prometheus对象上(kubectl edit prometheus k8s -n monitoring或者修改yaml文件并更新资源)

apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:labels:prometheus: k8sname: k8snamespace: monitoring
spec:alerting:alertmanagers:- name: alertmanager-mainnamespace: monitoringport: webbaseImage: quay.io/prometheus/prometheusnodeSelector:kubernetes.io/os: linuxpodMonitorNamespaceSelector: {}podMonitorSelector: {}replicas: 2secrets:- etcd-certsresources:requests:memory: 400MiruleSelector:matchLabels:prometheus: k8srole: alert-rulessecurityContext:fsGroup: 2000runAsNonRoot: truerunAsUser: 1000serviceAccountName: prometheus-k8sserviceMonitorNamespaceSelector: {}serviceMonitorSelector: {}version: v2.11.0

或者可以直接找到配置文件更新vim prometheus-prometheus.yaml

kubectl replace -f prometheus-prometheus.yaml

3、创建servicemonitoring对象

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:labels:k8s-app: etcd1 #这个serviceMonitor的标签name: etcdnamespace: monitoring
spec:endpoints:- interval: 30sport: etcd     #port名字就是service里面的spec.ports.namescheme: https  #访问的方式tlsConfig:caFile: /etc/prometheus/secrets/etcd-certs/ca.pem #证书位置/etc/prometheus/secrets,这个路径是默认的挂载路径certFile: /etc/prometheus/secrets/etcd-certs/server.pemkeyFile: /etc/prometheus/secrets/etcd-certs/server-key.pemselector:matchLabels:k8s-app: etcd1namespaceSelector:matchNames:- monitoring  #匹配的命名空间

4、创建service并自定义endpoint

---
apiVersion: v1
kind: Endpoints
metadata:labels:k8s-app: etcd1name: etcdnamespace: monitoring
subsets:
- addresses:- ip: 192.168.7.108- ip: 192.168.7.109- ip: 192.168.7.106ports:- name: etcd  #nameport: 2379  #portprotocol: TCP
---
apiVersion: v1
kind: Service
metadata:labels:k8s-app: etcd1name: etcdnamespace: monitoring
spec:ports:- name: etcdport: 2379protocol: TCPtargetPort: 2379sessionAffinity: Nonetype: ClusterIP

kubectl replace -f prometheus-prometheus.yaml

kubectl apply -f servicemonitor.yaml

kubectl apply -f service.yam

到这里就可以在prometheus中查看到etcd的监控信息了

添加告警

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:labels:prometheus: k8srole: alert-rulesname: etcd-rulesnamespace: monitoring
spec:groups:- name: etcd-exporter.rulesrules:- alert: EtcdClusterUnavailableannotations:summary: etcd cluster smalldescription: If one more etcd peer goes down the cluster will be unavailableexpr: |count(up{job="etcd"} == 0) > (count(up{job="etcd"}) / 2-1)for: 3mlabels:severity: critical

二、prometheus添加自定义监控与告警(kube-controller-manager)

Kube-prometheus默认是配置了kube-controller-manager的servicemonitor的,但是因为我们是二进制部署的,所以无法找到对应的kube-contorller-manager的service和endpoints,所以这里我们需要自己去手动创建service和endpoints

kubectl get servicemonitor -n monitoring

通过查看servicemonitor去查看需要匹配的service的labels

 vim kubernetes-serviceMonitorKubeControllerManager.yaml

以看到他是通过标签app.kubernetes.io/name=kube-controller-manager来匹配controller-manager的当我们查看的时候,并没有符合这个标签的svc所以prometheus找不到controller-manager地址。

好了,下面我们就开始创建service和endpoints了

创建service

首先创建一个endpoint,指向宿主机ip+10252,然后在创建一个同名的service,和上面查出来的标签

---
apiVersion: v1
kind: Endpoints
metadata:annotations:app.kubernetes.io/name: kube-controller-managername: kube-controller-manager-monitoringnamespace: kube-system
subsets:
- addresses:- ip: 192.168.7.100ports:- name: https-metricsport: 10252protocol: TCP
---
apiVersion: v1
kind: Service
metadata:labels:app.kubernetes.io/name: kube-controller-managername: kube-controller-manager-monitoringnamespace: kube-system
spec:ports:- name: https-metricsport: 10252protocol: TCPtargetPort: 10252sessionAffinity: Nonetype: ClusterIP

#注:kube-prometheus使用的是https、而暴露使用的是http,将https改成http

kubectl edit servicemonitor -n monitoring kube-controller-manager

     60     scheme: http

配置完成后就可以再prometheus界面查看到监控信息了,这样就是成功了

三、prometheus添加自定义监控与告警(kube-scheduler)

Kube-scheduler的配置和kube-controller-manager的配置类似

kubectl edit servicemonitor -n monitoring kube-scheduler

#scheme: https 改为scheme: http

好了,下面我们就开始创建service和endpoints了

apiVersion: v1
kind: Service
metadata:labels:app.kubernetes.io/name: kube-schedulername: schedulernamespace: kube-system
spec:ports:- name: https-metricsport: 10251protocol: TCPtargetPort: 10251sessionAffinity: Nonetype: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:labels:app.kubernetes.io/name: kube-schedulername: schedulernamespace: kube-system
subsets:
- addresses:- ip: 192.168.7.100ports:- name: https-metricsport: 10251protocol: TCP

Kubectl apply -f svc-kube-scheduler.yaml

配置完成后就可以再prometheus界面查看到监控信息了,这样就是成功了

至此 controller-manager、scheduler 已经起来

备注:看到不少的资料都是说需要修改kube-controller-manager和kube-scheduler的监听地址,从127.0.0.1修改成0.0.0.0

但是因为我的配置中kube-controller-manager的配置文件一开是就是0.0.0.0所以没有修改,kube-scheduler的配置文件监听地址是127.0.0.1也没有进行修改但是依然成功了,所以这里还有待验证。

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

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

相关文章

Verilog实战学习到RiscV - 3 : ICEStick 评估板点灯

收到 ICESTICK 评估板后还没好好玩。先来点个灯,正好把之前介绍过的工具链串起来用一下。 代码 Verilog代码只有一个顶层模块top.v,定义如下: module top(output wire D1,output wire D2,output wire D3,output wire D4,output wire D5);a…

王安石传-梁启超

国史氏曰:甚矣,知人论世之不易易也。以余所见宋太傅荆国王文公安石,其德量汪然若千顷之陂,其气节岳然若万仞之壁,其学术集九流之粹,其文章起八代之衰,其所设施之事功,适应于时代之要…

云手机定位切换,带来的不只是便利

当我们利用云手机的定位切换时,首先感受到的确实是极大的便利。 我们就像是拥有了瞬间移动的超能力,可以自由地在不同城市、甚至不同国家的虚拟场景中穿梭。无论是为了更精准地获取当地的信息,比如实时的交通状况、特色店铺等,还…

solana 通过助记码 恢复 path 私钥 导入相关插件钱包

solana 插件钱包 支持助记码 ,私钥等方式导入,但区别于metamask 每次只能导入一个path 账户,头疼! 上代码 import { Keypair } from "solana/web3.js"; import { HDKey } from "micro-ed25519-hdkey"; impor…

【CT】LeetCode手撕—3. 无重复字符的最长子串

目录 题目1- 思路1-1 模式1:涉及去重判断1-2 模式2:遍历字符串区间 2- 题解⭐无重复字符的最长子串——题解思路 3- ACM实现 原题链接:3. 无重复字符的最长子串 题目 无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有…

裸芯片绑定键合电阻器

EAK厚膜阻芯与有源裸片键合在一起封装 一般说明 精密引线键合电阻具有极高的稳定性和可靠性。电阻器经过激光微调,达到严格的公差。可定制值和该值的唯一标记,非常适合但不限于混合电路应用。 潜在作用: 医用植入式 军事/国防 混合设计 …

搭建chattts应用,做文字转语音

下载代码 git clone https://github.com/2noise/ChatTTS.git下载endpoint并上传: https://huggingface.co/2Noise/ChatTTS/tree/main 将上面下载的文件上传到服务器上 修改webui.py 更改为本地模型地址 import os import random import argparseimport torch i…

dpdk-19.11 arm64 环境适配 Mellanox CX4 网卡

环境信息 cpu: arm64 架构 dpdk 版本:19.11 glibc 版本:2.17 网卡型号: Mellanox CX4 网卡,详细 pci 信息如下: 02:00.0 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx] 02:00.1 Ether…

一份最基础的gitlab-ci文件,其中就maven的build和test

说明的gitlab-ci.yml文件,包含注释解释每个部分的功能: # 定义流水线的各个阶段,包含两个阶段:build 和 test stages:- build- test# 设置Maven的环境变量,指定本地仓库位置 variables:MAVEN_OPTS: "-Dmaven.rep…

java-String 比较

在 Java 中,String 类的对象用于表示字符串。字符串比较是编程中常见的需求,比如判断两个字符串是否相等,或者比较两个字符串的大小等。Java 提供了多种方法来比较 String 对象。 ### 字符串比较的方式 #### 1. 使用 运算符 运算符用于比较…

投资少见效快产量高-UMLChina建模知识竞赛第5赛季第13轮

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先答对前3题,即可获得本轮优胜。 如果有第4题,第4题为附加题&am…

2024上海城博会:以绿色·节能·创新为主题,推动长三角一体化发展

2024上海城博会,作为“世界城市日”的重要主题活动之一,再次将全球的目光聚焦于这座东方明珠,展现了其在城市建设与管理领域的卓越成就。本次城博会由联合国人居署、上海市住房和城乡建设管理委员会联合主办,上海市绿色建筑协会承…

codereview时通常需要关注哪些

在团队成员之间互相进行代码审查(codereview)时,通常可以从以下几个方面来确保代码的质量和可维护性: 代码结构和格式: 检查代码是否遵循了项目约定的编码规范和风格指南。确保代码具有良好的可读性,比如合…

Qt 判断文件夹是否存在,不存在则创建

int CHttpFileRequest::CreatDownloadFile(QString path,QString fileName) {QDir mDir;if(!mDir.exists(path)){mDir.mkpath(path);}return 0; }

C语言字符函数与字符串函数详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 [TOC](文章目录) 前言一、针对单个字符的C语言库中的函数(一)、字符分类函数(二)、字符转换函数 二、针对字符串的C语…

opengauss创建和管理分区表

创建和管理分区表 背景信息 openGauss数据库支持的分区表为范围分区表、列表分区表、哈希分区表。 范围分区表:将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的。这种分区方式是最为常用的,并且分区键经常采用日…

Springboot 开发-- 集成 Activiti 7 流程引擎

引言 Activiti 7是一款遵循BPMN 2.0标准的开源工作流引擎,旨在为企业提供灵活、可扩展的流程管理功能。它支持图形化的流程设计、丰富的API接口、强大的执行引擎和完善的监控报表,帮助企业实现业务流程的自动化、规范化和智能化。本文将为您详细介绍 Ac…

Spring (39)微服务架构

微服务架构是一种将单个应用程序作为一套小服务开发的方法,每个服务运行在其自身的进程中,并且通常围绕业务能力构建,使用轻量级的通信机制(常见的如HTTP RESTful API)。这些服务是自包含的,因为它们分别持…

kubesphere报错

1.安装过程报错unable to sign certificate: must specify a CommonName [rootnode1 ~]# ./kk init registry -f config-sample.yaml -a kubesphere.tar.gz _ __ _ _ __ | | / / | | | | / / | |/ / _ _| |__ ___| |/…

pytest-playwright 插件的使用

引言 在自动化测试领域,Playwright 是一个强大的工具,它支持 Chromium、Firefox 和 WebKit 三大浏览器引擎。Playwright 提供了与 Pytest 集成的插件,使得编写端到端测试变得更加简单和高效。本文将介绍如何使用 Pytest Playwright 插件来编…