第七篇:k8s集群使用helm3安装Prometheus Operator

安装Prometheus Operator

目前网上主要有两种安装方式,分别为:1. 使用kubectl基于manifest进行安装 2. 基于helm3进行安装。第一种方式比较繁琐,需要手动配置yaml文件,特别是需要配置pvc相关内容时,涉及到的yaml文件太多,故本文选用第二种基于helm安装的方式。
下面开始重点介绍安装流程,其实安装过程可以概括为以下几点:

  • 配置服务类型,主要是altermanager/prometheus/grafana这三个服务,如果想在浏览器访问,就需要进行服务类型的配置,默认情况使用的是ClusterIP,这样无法在浏览器中访问,这里我们使用LoadBalancer和ingress的方式配置服务,这样我们就可以使用域名和IP:Port进行访问。关于ingress与LoadBalaner的部署可以参考 第二篇:k8s之ingress-nginx-controller与metallb部署
  • 持久化存储的使用,默认安装没有配置持久化存储,默认情况是安装到部署的节点本地,这里会有数据丢失的风险,生产环境下需要配置自己的持久化存储,我这里使用的是ceph rbd作为storageclass,如果没有安装ceph csi, 可以参考我之前的文章 第三篇:k8s之容器存储接口(CSI)ceph-csi-rbd部署

配置altermanager/prometheus/grafana三个服务

服务类型配置

将这个服务的类型由ClusterIP改成LoadBalancer

分别在这三个服务对应的session下找到service项进行如下配置

prometheus:
  ...
  service:
    ...
    type: LoadBalancer

将grafana的服务开启并配置ingress,公司内部通过域名访问

修改grafana配置下的ingress选项,开启功能,并配置hosts

grafana:
  ...
  ingress:
    enable: true
    ...
    hosts: [monitor.prod.wuyacapital.com]

所有Pod绑定到master节点 (可选项,没有这方面的需求可以跳过)

为方便管理应用服务,将应用服务与每日作业计算任务进行区分,所有Pod均绑定到master类型的节点上,这里通过使用affinity进行配置对应的Pod.

所涉及的Pod主要包括:grafana, kube-state-metrics, prometheusOperator, prometheus, alertmanager。其中 grafana, kube-state-metrics, prometheusOperator由于没有Spec配置,所以直接放在其声明下即可,例如

grafana: # prometheusOperator/kube-state-metrics 类似
  ...
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/hostname
            operator: In
            values:
            - master01
            - master02
            - master03
  ...

对于 prometheus, alertmanager由于有Spec配置,所以放在各自的session下即可,例如:

prometheus: # alertmanager 对应 alertmanagerSpec, 配置类似,添加下面affinity的内容即可
  ...
  prometheusSpec:
    ...
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
              - master01
              - master02
              - master03
      ...

storage配置

Prometheus在使用过程中会涉及到指标数据的存储问题,下面是Prometheus的架构图

架构

这里我们可以看到我们需要存储指标数据以方便监控系统Grafana进行读取并展示。

我们使用的持久化存储为ceph rbd存储,对应的storageclass为csi-rbd-sc, 这是我之前创建的存储类,现在可以在这直接调用,涉及到存储的部分主要有以下2处:

(1) alertmanager—>alertmanagerSpec—>storage

(2) prometheus—>prometheusSpec—>storageSpec

内容如下:

volumeClaimTemplate:
  spec:
    storageClassName: csi-rbd-sc
    accessModes: ["ReadWriteOnce"]
    resources:
      requests:
      storage: 100Gi #根据实际情况设置

配置完成后,查看完整的配置文件

启动部署脚本

helm upgrade --install prometheus --namespace monitoring --create-namespace  prometheus-community/kube-prometheus-stack -f prometheus.yaml --debug

查看所有Pod的资源信息

master01 ➜  helm git:(master) ✗ kubectl get pod -n monitoring         
NAME                                                     READY   STATUS    RESTARTS        AGE
alertmanager-prometheus-kube-prometheus-alertmanager-0   2/2     Running   1 (3h47m ago)   3h49m
prometheus-grafana-bc859db95-s2pzh                       3/3     Running   0               172m
prometheus-kube-prometheus-operator-8995df666-d7wl5      1/1     Running   0               3h49m
prometheus-kube-state-metrics-6855494647-njsc5           1/1     Running   0               166m
prometheus-prometheus-kube-prometheus-prometheus-0       2/2     Running   0               3h49m
prometheus-prometheus-node-exporter-56m49                1/1     Running   0               3h49m
prometheus-prometheus-node-exporter-5b5cx                1/1     Running   0               3h49m
prometheus-prometheus-node-exporter-khzzn                1/1     Running   0               3h49m
prometheus-prometheus-node-exporter-nfj5m                1/1     Running   0               3h49m
prometheus-prometheus-node-exporter-pcjgz                1/1     Running   0               3h49m
prometheus-prometheus-node-exporter-r6r82                1/1     Running   0               3h49m
prometheus-prometheus-node-exporter-t8dsh                1/1     Running   0               3h49m

说明部署成功。

可以查看service信息,并打开浏览器查看prometheus服务http://192.168.1.192:9090, 查看所有的target是否监控成功

master01 ➜  helm git:(master) ✗ kubectl get svc -n monitoring
NAME                                      TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
alertmanager-operated                     ClusterIP      None             <none>        9093/TCP,9094/TCP,9094/UDP   3h50m
prometheus-grafana                        ClusterIP      10.101.246.163   <none>        80/TCP                       3h50m
prometheus-kube-prometheus-alertmanager   LoadBalancer   10.102.35.159    192.168.1.194   9093:30033/TCP               3h50m
prometheus-kube-prometheus-operator       LoadBalancer   10.101.1.10      192.168.1.193   443:30001/TCP                3h50m
prometheus-kube-prometheus-prometheus     LoadBalancer   10.106.88.156    192.168.1.192   9090:31242/TCP               3h50m
prometheus-kube-state-metrics             ClusterIP      10.109.156.237   <none>        8080/TCP                     3h50m
prometheus-operated                       ClusterIP      None             <none>        9090/TCP                     3h50m
prometheus-prometheus-node-exporter       ClusterIP      10.105.10.206    <none>        9100/TCP                     3h50m

这里可以看到所有服务均可监控。

targets无法监控的问题

注意:这里经常会遇到这样的问题,kube-controller-manager与kube-scheduler的target是Down的状态,原因是因为这两个服务无法访问,为什么无法访问?原因是因为在k8s集群创建时,这两个服务的的bind-address绑定的是127.0.0.1,所以无法通过其他服务器访问。

解决方案:分别在这三台服务器上打开 /etc/kubernetes/manifests/kube-controller-manager.yaml/etc/kubernetes/manifests/kube-scheduler.yaml,然后找到bind-address这个字段,将后面的127.0.0.1替换成0.0.0.0即可。这里无需重启对应的服务,k8s会自动读取最新的配置。改完之后过一会,就可以看到这2哥监控正常了。

参考文档:解决controller与scheduler无法访问的问题

卸载流程

helm uninstall prometheus -n monitoring

kubectl delete crd alertmanagerconfigs.monitoring.coreos.com
kubectl delete crd alertmanagers.monitoring.coreos.com
kubectl delete crd podmonitors.monitoring.coreos.com
kubectl delete crd probes.monitoring.coreos.com
kubectl delete crd prometheuses.monitoring.coreos.com
kubectl delete crd prometheusrules.monitoring.coreos.com
kubectl delete crd servicemonitors.monitoring.coreos.com
kubectl delete crd thanosrulers.monitoring.coreos.com

查看pvc是否需要手动删除

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

程序员做项目必用的工具【更新中...】

每个程序员多多少少都会有自己简化项目的小工具&#xff0c;我采访了我们公司所有的工程师总结了程序员必备工具篇。 一.unisms 官网&#xff1a;https://unisms.apistd.com/ 不会有人这年头写注册登录还是自己写验证码模块吧&#xff1f; 你该得拥有一个短信验证码平台了&…

【GUI】基于开关李雅普诺夫函数的非线性系统稳定(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

pytest 入门

1,安装pytest 打开终端或命令提示符窗口,在终端中运行以下命令来安装pytest: pip install pytestpip install -i https://pypi.tuna.tsinghua.edu.cn/simple pytest 确保您的系统上已经安装了Python。您可以在终端中运行以下命令来检查Python的安装情况: pytest --version…

汽车分析,随时间变化的燃油效率

简述 今天我们来分析一个汽车数据。 数据集由以下列组成&#xff1a; 名称&#xff1a;每辆汽车的唯一标识符。MPG&#xff1a;燃油效率&#xff0c;以英里/加仑为单位。气缸数&#xff1a;发动机中的气缸数。排量&#xff1a;发动机排量&#xff0c;表示其大小或容量。马力&…

伦敦金在非农双向挂单

对伦敦金投资有一定经验的投资者都知道&#xff0c;在非农时期&#xff0c;伦敦金市场会出现很大的波动&#xff0c;那么我们如何才能抓住这些波动呢&#xff1f;答案是很难的。但是&#xff0c;有些投资者在多年实践中发明了一种双向挂单的方法&#xff0c;这里和大家一切分享…

使用easyui的tree组件实现给角色快捷分配权限功能

这篇文章主要介绍怎么实现角色权限的快捷分配功能&#xff0c;不需要像大多数项目的授权一样&#xff0c;使用类似穿梭框的组件来授权。 具体实现&#xff1a;通过菜单树的勾选和取消勾选来给角色分配权限&#xff0c;在这之前&#xff0c;需要得到角色的菜单树&#xff0c;角色…

vue实现flv格式视频播放

公司项目需要实现摄像头实时视频播放&#xff0c;flv格式的视频。先百度使用flv.js插件实现&#xff0c;但是两个摄像头一个能放一个不能放&#xff0c;没有找到原因。&#xff08;开始两个都能放&#xff0c;后端更改地址后不有一个不能放&#xff09;但是在另一个系统上是可以…

盛元广通实验室教学仪器设备综合信息管理系统LIMS

实验室作为学生以及教师进行科研教学环境&#xff0c;对于实验室设备的使用情况、维护、借还、台账管理、盘点、报废等需要得到有效的管理&#xff0c;以促进科研教学工作的高质量开展&#xff0c;介于传统手动管理方式越发不能满足现代科研的飞速发展需要&#xff0c;实验室的…

使用Django自带的后台管理系统进行数据库管理的实例

Django自带的后台管理系统主要用来对数据库进行操作和管理。它是Django框架的一个强大功能&#xff0c;可以让你快速创建一个管理界面&#xff0c;用于管理你的应用程序的数据模型。 使用Django后台管理系统&#xff0c;你可以轻松地进行以下操作&#xff1a; 数据库管理&…

MySQL高级篇第4章(逻辑架构)

文章目录 1、逻辑架构剖析1.1 服务器处理客户端请求1.2 Connectors1.3 第一层&#xff1a;连接层1.4 第二层&#xff1a;服务层1.5 第三层&#xff1a;引擎层1.6 存储层1.7 小结 2、SQL执行流程2.1 MySQL 中的 SQL执行流程2.2 MySQL8中SQL执行原理2.3 MySQL5.7中SQL执行原理2.4…

分享一个jquery重复绑定事件的问题

这篇文章主要分享一下前端在使用jQuery给元素绑定click事件时遇到的一点小问题。 今天在通过JS代码动态绑定元素的点击事件时遇到一点问题&#xff0c;如上图所示&#xff0c;需要实现动态控制低级内丹格子的解锁&#xff0c;每种宠物造型都有一个内丹数量。如图&#xff0c;忘…

Python Web 开发及 Django 总结

title: Python Web 开发及 Django 总结 date: 2023-07-24 17:26:26 tags: PythonWeb categories:Python cover: https://cover.png feature: false Python 基础部分见&#xff1a;Python 基础总结 1. 创建项目 1.1 命令行 1、下载安装 Django 在终端输入 pip install djan…

【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Pythonmatlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【iOS】Frame与Bounds的区别详解

iOS的坐标系 iOS特有的坐标是&#xff0c;是在iOS坐标系的左上角为坐标原点&#xff0c;往右为X正方向&#xff0c;向下为Y正方向。 bounds和frame都是属于CGRect类型的结构体&#xff0c;系统的定义如下&#xff0c;包含一个CGPoint&#xff08;起点&#xff09;和一个CGSiz…

【云原生系列】云计算概念与架构设计介绍

1 什么是云计算 云计算是一种基于互联网的计算模式&#xff0c;在这个模式下&#xff0c;各种计算资源&#xff08;例如计算机、存储设备、网络设备、应用程序等&#xff09;可以通过互联网实现共享和交付。云计算架构设计的主要目标是实现高效、可扩展、可靠、安全和经济的计算…

Spring优雅的在事务提交/回滚前后插入业务逻辑

业务背景 业务那边想要统计下我们这边每天注册商户成功和失败的数量&#xff0c;你看看怎么给他弄下这个功能 功能实现 TransactionSynchronizationManager.registerSynchronization&#xff0c;发现这是spring事务提供的注册回调接口的方法。 在事务注解方法中&#xff0c…

【双评价笔记】农业指向之水资源评价

农业指向水资源单项评价是基于区域内及邻近地区气象站点长时间序列降水观测资料,通过空间插值得到多年平均降水量分布图层,降水量按照200,400,800,1200这个间断点分为好(很湿润),较好(湿润),一般(半湿润),较差(半干旱),差(干旱)5 个等级。 本次实验过程采用的评价分…

婚庆服务小程序app开发方案详解

开发一款婚庆行业服务小程序有哪些功能呢&#xff1f; 1、选择分类 选择婚庆、婚车、婚宴、司仪、彩妆、婚庆用品、跟拍、摄影等&#xff0c;筛选出对应的商家 2、选择商家 选择分类后&#xff0c;可以选择商家&#xff0c;查看各个商家的详细介绍情况。 3、选择服务套餐 各…

mysql主从同步怎么跳过错误

今天介绍两种mysql主从同步跳过错误的方法&#xff1a; 一、两种方法介绍 1、跳过指定数量的事务&#xff1a; mysql>slave stop; mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER 1 #跳过一个事务 mysql>slave start2、修改mysql的配置文件&#xff0c;通过slav…

android jetpack DataStore(java)代替SharedPreferences

目录 Preferences DataStore 怎么用&#xff1f;导入依赖创建 Preferences DataStore读取内容写入内容 Proto DataStore怎么用&#xff1f;导入依赖创建proto创建Serializer使用DataStore DataStore 提供两种不同的实现&#xff1a;Preferences DataStore 和 Proto DataStore。…