用pod部署prometheus

用pod部署prometheus

node_exporter

节点数据收集器

daemonset ————> 保证每个节点都有一个收集器

prometheus————>监控主程序

grafana————>图形化

altermanager————>告警模块

[root@master01 ~]# kubectl create ns monitor-sa
namespace/monitor-sa created
[root@master01 opt]# mkdir prometheus
[root@master01 opt]# cd prometheus/
[root@master01 prometheus]# vim node_exporter.yaml
​
apiVersion: apps/v1
kind: DaemonSet
metadata:name: node-exporternamespace: monitor-salabels:name: node-exporter
spec:selector:matchLabels:name: node-exportertemplate:metadata:labels:name: node-exporterspec:hostPID: truehostIPC: truehostNetwork: truecontainers:- name: node-exporterimage: prom/node-exporter:v1ports:- containerPort: 9100resources:limits:cpu: "0.5"securityContext:privileged: trueargs:- --path.procfs- /host/proc- --path.sysfs- /host/sys- --collector.filesystem.ignored-mount-points- '"^/(sys|proc|dev|host|etc)($|/)"'volumeMounts:- name: devmountPath: /host/dev- name: procmountPath: /host/proc- name: sysmountPath: /host/sys- name: rootfsmountPath: /rootfsvolumes:- name: prochostPath:path: /proc- name: devhostPath:path: /dev- name: syshostPath:path: /sys- name: rootfshostPath:path: /
[root@master01 prometheus]# kubectl apply -f node_exporter.yaml 
daemonset.apps/node-exporter created
[root@master01 prometheus]# kubectl get pod -n monitor-sa -o wide    
node-exporter-99vhd   1/1     Running   0          15s   192.168.60.120   node01     <none>           <none>
node-exporter-c6md9   1/1     Running   0          15s   192.168.60.130   node02     <none>           <none>
node-exporter-f29fh   1/1     Running   0          15s   192.168.60.110   master01   <none>           <none>
​

#创建两个账号
[root@master01 prometheus]# kubectl create serviceaccount monitor -n monitor-sa
[root@master01 prometheus]# kubectl create clusterrolebinding monitor-clusterrolebinding -n monitor-sa --clusterrole=cluster-admin  --serviceaccount=monitor-sa:monitor
​
[root@master01 prometheus]# kubectl create clusterrolebinding monitor-clusterrolebinding -n monitor-sa --clusterrole=cluster-admin  --serviceaccount=monitor-sa:monitor
[root@master01 prometheus]# rz -E
rz waiting to receive.
[root@master01 prometheus]# ls
node_exporter.yaml  prometheus-alertmanager-cfg.yaml
[root@master01 prometheus]# vim prometheus-alertmanager-cfg.yaml- targets: ['192.168.60.110:10251']- job_name: 'kubernetes-controller-manager'scrape_interval: 5sstatic_configs:- targets: ['192.168.60.110:10252']- job_name: 'kubernetes-kube-proxy'scrape_interval: 5sstatic_configs:- targets: ['192.168.60.110:10249','192.168.60.120:10249','192.168.60.130:10249']- job_name: 'kubernetes-etcd'scheme: httpstls_config:ca_file: /var/run/secrets/kubernetes.io/k8s-certs/etcd/ca.crtcert_file: /var/run/secrets/kubernetes.io/k8s-certs/etcd/server.crtkey_file: /var/run/secrets/kubernetes.io/k8s-certs/etcd/server.keyscrape_interval: 5sstatic_configs:- targets: ['192.168.60.110:2379']
​- alert: HighPodCpuUsage
#告警邮件的标题expr: sum(rate(container_cpu_usage_seconds_total{namespace="default", pod=~".+"}[5m])) by (pod) > 0.9
#收集指标数据for: 5m
#占用90%cpu的持续时间5M。告警labels:severity: warningannotations:
#告警的内容
​
[root@master01 prometheus]# vim alter-mail.yaml
kind: ConfigMap
apiVersion: v1
metadata:name: alertmanagernamespace: monitor-sa
data:alertmanager.yml: |-global:resolve_timeout: 1msmtp_smarthost: 'smtp.qq.com:25'smtp_from: '1647629457@qq.com'smtp_auth_username: '1647629457@qq.com'smtp_auth_password: 'mhmjbfjydbuhecea'smtp_require_tls: falseroute:group_by: [alertname]group_wait: 10sgroup_interval: 10srepeat_interval: 10m receiver: default-receiverreceivers:- name: 'default-receiver'email_configs:- to: '1647629457@qq.com'send_resolved: true
​

[root@master01 prometheus]# vim prometheus-svc.yaml
apiVersion: v1
kind: Service
metadata:name: prometheusnamespace: monitor-salabels:app: prometheus
spec:type: NodePortports:- port: 9090targetPort: 9090protocol: TCPselector:app: prometheuscomponent: server[root@master01 prometheus]# vim prometheus-alter.yaml
apiVersion: v1
kind: Service
metadata:labels:name: prometheuskubernetes.io/cluster-service: 'true'name: alertmanagernamespace: monitor-sa
spec:ports:- name: alertmanagernodePort: 30066port: 9093protocol: TCPtargetPort: 9093selector:app: prometheussessionAffinity: Nonetype: NodePort[root@master01 prometheus]# vim prometheus-deploy.yaml  
apiVersion: apps/v1
kind: Deployment
metadata:name: prometheus-servernamespace: monitor-salabels:app: prometheus
spec:replicas: 1selector:matchLabels:app: prometheuscomponent: servertemplate:metadata:labels:app: prometheuscomponent: serverannotations:prometheus.io/scrape: 'false'spec:serviceAccountName: monitorinitContainers:- name: init-chmodimage: busybox:latestcommand: ['sh','-c','chmod -R 777 /prometheus;chmod -R 777 /etc']volumeMounts:- mountPath: /prometheusname: prometheus-storage-volume- mountPath: /etc/localtimename: timezonecontainers:- name: prometheusimage: prom/prometheus:v2.45.0command:- prometheus- --config.file=/etc/prometheus/prometheus.yml- --storage.tsdb.path=/prometheus- --storage.tsdb.retention=720h- --web.enable-lifecycleports:- containerPort: 9090volumeMounts:- name: prometheus-configmountPath: /etc/prometheus/- mountPath: /prometheus/name: prometheus-storage-volume- name: timezonemountPath: /etc/localtime- name: k8s-certsmountPath: /var/run/secrets/kubernetes.io/k8s-certs/etcd/- name: alertmanagerimage: prom/alertmanager:v0.20.0args:- "--config.file=/etc/alertmanager/alertmanager.yml"- "--log.level=debug"ports:- containerPort: 9093protocol: TCPname: alertmanagervolumeMounts:- name: alertmanager-configmountPath: /etc/alertmanager- name: alertmanager-storagemountPath: /alertmanager- name: localtimemountPath: /etc/localtimevolumes:- name: prometheus-configconfigMap:name: prometheus-configdefaultMode: 0777- name: prometheus-storage-volumehostPath:path: /datatype: DirectoryOrCreate- name: k8s-certssecret:secretName: etcd-certs- name: timezonehostPath:path: /usr/share/zoneinfo/Asia/Shanghai- name: alertmanager-configconfigMap:name: alertmanager- name: alertmanager-storagehostPath:path: /data/alertmanagertype: DirectoryOrCreate- name: localtimehostPath:path: /usr/share/zoneinfo/Asia/Shanghaikubectl apply -f prometheus-deploy.yaml
kubectl apply -f prometheus-svc.yaml
kubectl apply -f prometheus-alter.yaml
​
#生成证书
kubectl -n monitor-sa create secret generic etcd-certs --from-file=/etc/kubernetes/pki/etcd/server.key --from-file=/etc/kubernetes/pki/etcd/server.crt --from-file=/etc/kubernetes/pki/etcd/ca.crt
​
[root@master01 prometheus]# kubectl get pod -n monitor-sa -o wide
NAME                                 READY   STATUS    RESTARTS   AGE     IP               NODE       NOMINATED NODE   READINESS GATES
node-exporter-99vhd                  1/1     Running   0          140m    192.168.60.120   node01     <none>           <none>
node-exporter-c6md9                  1/1     Running   0          140m    192.168.60.130   node02     <none>           <none>
node-exporter-f29fh                  1/1     Running   0          140m    192.168.60.110   master01   <none>           <none>
prometheus-server-55d866cb44-wrrbx   2/2     Running   0          5m29s   10.244.2.34      node02     <none>           <none>
[root@master01 prometheus]# kubectl get svc -n monitor-sa -o wide
NAME           TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE    SELECTOR
alertmanager   NodePort   10.96.153.49    <none>        9093:30066/TCP   6m     app=prometheus
prometheus     NodePort   10.96.215.253   <none>        9090:31758/TCP   6m1s   app=prometheus,component=server

[root@master01 prometheus]# vim pro-gra.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: grafananamespace: kube-system
spec:accessModes:- ReadWriteManystorageClassName: nfs-client-storageclassresources:requests:storage: 2Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:name: monitoring-grafananamespace: kube-system
spec:replicas: 1selector:matchLabels:task: monitoringk8s-app: grafanatemplate:metadata:labels:task: monitoringk8s-app: grafanaspec:containers:- name: grafanaimage: grafana/grafana:7.5.11securityContext:runAsUser: 104runAsGroup: 107ports:- containerPort: 3000protocol: TCPvolumeMounts:- mountPath: /etc/ssl/certsname: ca-certificatesreadOnly: false- mountPath: /varname: grafana-storage- mountPath: /var/lib/grafananame: graf-testenv:- name: INFLUXDB_HOSTvalue: monitoring-influxdb- name: GF_SERVER_HTTP_PORTvalue: "3000"- name: GF_AUTH_BASIC_ENABLEDvalue: "false"- name: GF_AUTH_ANONYMOUS_ENABLEDvalue: "true"- name: GF_AUTH_ANONYMOUS_ORG_ROLEvalue: Admin- name: GF_SERVER_ROOT_URLvalue: /volumes:- name: ca-certificateshostPath:path: /etc/ssl/certs- name: grafana-storageemptyDir: {}- name: graf-testpersistentVolumeClaim:claimName: grafana
---
apiVersion: v1
kind: Service
metadata:labels:name: monitoring-grafananamespace: kube-system
spec:ports:- port: 80targetPort: 3000selector:k8s-app: grafanatype: NodePort[root@master01 prometheus]# kubectl apply -f pro-gra.yml 
[root@master01 prometheus]# kubectl get svc -n kube-system 
NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
kube-dns             ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP,9153/TCP   16d
monitoring-grafana   NodePort    10.96.220.147   <none>        80:31771/TCP             12s

//处理 kube-proxy 监控告警
kubectl edit configmap kube-proxy -n kube-system
......
metricsBindAddress: "0.0.0.0:10249"
#因为 kube-proxy 默认端口10249是监听在 127.0.0.1 上的,需要改成监听到物理节点上
​
#重新启动 kube-proxy
kubectl get pods -n kube-system | grep kube-proxy |awk '{print $1}' | xargs kubectl delete pods -n kube-system

测试:

[root@master01 prometheus]# vim ylce.yml
​
apiVersion: apps/v1
kind: Deployment
metadata:name: hpa-testlabels:hpa: test
spec:replicas: 1selector:matchLabels:hpa: testtemplate:metadata:labels:hpa: testspec:containers:- name: centosimage: centos:7command: ["/bin/bash", "-c", "yum install -y stress --nogpgcheck && sleep 3600"]volumeMounts:- name: yummountPath: /etc/yum.repos.d/volumes:- name: yumhostPath:path: /etc/yum.repos.d/
​

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

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

相关文章

【天怡AI-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

使用SpringCloud构建可伸缩的微服务架构

Spring Cloud是一个用于构建分布式系统的开源框架。它基于Spring Boot构建&#xff0c;并提供了一系列的工具和组件&#xff0c;用于简化开发分布式系统的难度。Spring Cloud可以帮助开发人员快速构建可伸缩的微服务架构。 要使用Spring Cloud构建可伸缩的微服务架构&#xff0…

外国药品位置检测系统源码分享

外国药品位置检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

office2016 增强版 KMS

第一步&#xff1a; 用管理员权限登陆&#xff1a;Windows PowerShell &#xff08;安装最新的 PowerShell&#xff0c;了解新功能和改进&#xff01;https://aka.ms/PSWindows&#xff09; 第二步&#xff1a; C:\Windows\system32> cd C:\Program Files\Microsoft Off…

OpenCv(一)

计算机视觉和机器视觉的区别 计算机视觉&#xff08;Computer Vision&#xff09;和机器视觉&#xff08;Machine Vision&#xff09;是两个密切相关但又有区别的领域。两者在应用、技术和目标上都有所不同。 **计算机视觉&#xff1a;**主要是研究如何使计算机能够理解和处理…

cadence SPB17.4 - allegro - 用板子外形创建整板铺铜

文章目录 cadence SPB17.4 - allegro - 用板子外形创建整板铺铜概述笔记先确定自己板子的 board Geometry/Design_Outline 是否有外形shape为了将软件提示看得更清楚&#xff0c;在每个操作之前&#xff0c;先将命令提示区内容先删了用Z-copy从外形层生成整板的铺铜备注END cad…

[PTA]7-6 整数分解为若干项之和

[PTA]7-6 整数分解为若干项之和 将一个正整数N分解成几个正整数相加&#xff0c;可以有多种分解方法&#xff0c;例如761&#xff0c;752&#xff0c;7511&#xff0c;…。编程求出正整数N的所有整数分解式子。 输入格式&#xff1a; 每个输入包含一个测试用例&#xff0c;即…

Oracle 19c 安装教程学习

Oracle 19c 安装教程学习 &#xff08;最新&#xff09; 很久没有用Oracle 我记得用的时候还是 2021年 &#xff0c;那个时候用的 Oralce 11g 。 今天本人实测安装 。 今天的学习目标就是教大家怎么安装 。直接上图 19c下载地址&#xff1a;https://www.oracle.com/cn/databa…

【高级编程】网络编程 基于 TCPUDP 协议的 Socket 编程

文章目录 IP地址Socket基于 TCP 协议的 Socket 编程基于 UDP 协议的 Socket 编程 IP地址 IP地址&#xff08;Internet Protocol&#xff09;&#xff1a;唯一标识网络上的每一台计算机 IP地址的组成&#xff1a;32位&#xff0c;由4个8位二进制数组成 11000000.10101000.000…

TMStarget学习——Functional Connectivity

今天基于结构像和功能像数据试验操作TMStarget 的第二个功能模块Functional Connectivity。参考季老师的文档PPT来学习的&#xff0c;整个处理过程蛮长的&#xff0c;可能配置原因一路上报错也比较多&#xff0c;下面还是逐步记录吧&#xff0c;后面采用连更的方式直到跑通后再…

微服务注册中⼼2

5.Nacos配置管理 Nacos除了可以做注册中⼼&#xff0c;同样可以做配置管理来使⽤ 5.1 统⼀配置管理 当微服务部署的实例越来越多&#xff0c;达到数⼗、数百时&#xff0c;逐个修改微服务配置就会让⼈抓狂&#xff0c;⽽且很容易出错。我们需要⼀种统⼀配置管理⽅案&#xf…

怎样把PPT上顽固的图标删了

例如&#xff1a; 解决&#xff1a; 首先打开下载好的PPT模板&#xff0c;然后在视图选项卡里面找到幻灯片母版。 进入幻灯片母版后&#xff0c;找到第一页母版页就会看到LOGO了&#xff0c;这时使用鼠标就可以选中删除啦。

【论文阅读】PolarNet: 3D Point Clouds for Language-Guided Robotic Manipulation

Abstract 基于自然语言指令的机器人理解和执行操作任务的能力是机器人的长期目标。语言引导操作的主要方法使用 2d 图像表示&#xff0c;这在组合多视图相机并推断精确的 3d 位置和关系方面存在困难。为了解决这些限制&#xff0c;我们提出了一种基于三维点云的policy&#xf…

供方软件供应链安全保障要求及开源场景对照自评表(下)

国标《信息安全技术 软件供应链安全要求》确立了软件供应链安全目标&#xff0c;规定了软件供应链安全风险管理要求和供需双方的组织管理和供应活动管理安全要求。 开源软件供应链作为软件供应链的一种特殊形式&#xff0c;该国标亦适用于指导开源软件供应链中的供需双方开展组…

专业化的自动化解决方案 VM5XX系列模块在应力应变、仪器仪表和自动化信息化领域的广泛应用

专业化的自动化解决方案 VM5XX系列模块在应力应变、仪器仪表和自动化信息化领域的广泛应用 VM501系列模块是一款专业化的读数模块&#xff0c;采用了单振弦式传感器激励、频率读取和温度转换技术。该模块具有集成度高、体积小、精度高和适应能力强等优点&#xff0c;能够极大地…

力扣面试150 添加与搜索单词 - 数据结构设计 字典树

Problem: 211. 添加与搜索单词 - 数据结构设计 &#x1f469;‍&#x1f3eb; 参考题解 public class WordDictionary {// 定义一个内部类 Node&#xff0c;用于表示 Trie&#xff08;前缀树&#xff09;中的每个节点class Node{// 每个节点有一个大小为 26 的数组&#xff0c…

数据结构--顺序表的创建和增删改查操作

一、编写代码&#xff0c;完成学生管理系统&#xff0c;实现以下操作&#xff1a; 1、输入学生信息 2、任意位置插入学生信息 3、任意位置删除学生信息 4、查找任意位置学生信息 5、修改任意位置学生信息 6、表头插入学生信息 7、表尾插入学生信息 8、表头删除学生信息…

JVM 内存模型:堆、栈、方法区讲解

1. 引言 Java 虚拟机&#xff08;JVM&#xff09;的内存模型是 Java 程序运行时的基础之一。JVM 内存模型主要包括 堆、栈、和 方法区。它们各自有不同的作用和管理方式&#xff0c;并且影响着程序的性能和稳定性。为了更好地理解 JVM 的内存管理机制&#xff0c;我们将结合电…

CISP备考题库(八)

CISP即“注册信息安全专业人员”&#xff0c;是面向信息安全企业、信息安全咨询服务机构、信息安全测评机构、政府机构、社会各组织、团体、大专院校以及企事业单位中负责信息系统建设、运行维护和管理工作的信息安全专业人员所颁发的专业资质证书。 更多CISP介绍&#xff1a;e…

快速掌握Postman接口测试

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、前言 在前后端分离开发时&#xff0c;后端工作人员完成系统接口开发后&#xff0c;需要与前端人员对接&#xff0c;测试调试接口&#xff0c;验证接口的正…