当前位置: 首页 > news >正文

k8s学习--使用helm快速安装prometheus全家桶并使用ingress发布出去的详细过程

文章目录

    • 前言
      • 使用helm安装的优势
      • prometheus全家桶包括哪些组件
    • 环境
      • 一、负载均衡器metallb部署
        • 1. 修改kube-proxy代理模式
        • 2. metallb部署
        • 3. IP地址池准备
        • 4.开启二层通告
      • 二、 服务代理ingress nginx部署
      • 三、使用helm安装prometheus全家桶
      • 四、配置prometheus及grafana访问(通过ingress发布)

前言

使用helm安装的优势

使用Helm快速安装Prometheus有几个显著的优势:

快速部署和配置: Helm是一个流行的Kubernetes包管理工具,它允许你通过简单的命令快速部署和配置应用程序。对于Prometheus这样的复杂监控系统,使用Helm可以大大简化安装过程,减少手动配置的需要。

标准化和可重复性: Helm Charts(Helm的包描述文件)定义了如何安装和配置Prometheus及其相关组件。这确保了部署的标准化,使得在不同环境中重复部署变得更加可靠和简单。

版本控制和更新管理: 使用Helm安装Prometheus,你可以方便地管理版本和更新。Helm允许你指定要安装的特定版本或者升级到新版本,同时能够回滚到先前的版本,以便处理升级中可能出现的问题。

依赖管理: Prometheus通常会与其他组件(如Alertmanager、Grafana等)一起使用。Helm Charts可以定义和管理这些组件的依赖关系,确保所有的相关组件能够正确地安装和配置。

社区支持和生态系统: Helm是一个活跃的开源项目,拥有庞大的社区支持和丰富的第三方Charts库。这意味着你可以从社区中获取到各种用于安装和配置Prometheus的最佳实践,同时也能够共享和贡献你自己的经验。

prometheus全家桶包括哪些组件

Prometheus Operator:
Prometheus Operator 是一个运营 Prometheus 和相关工具的 Kubernetes Operator。它简化了在 Kubernetes 上部署和管理 Prometheus 实例的过程。

Prometheus Server:
Prometheus Server 负责收集和存储时间序列数据,支持通过 PromQL 查询语言进行数据分析和查询。

Alertmanager:
Alertmanager 用于处理和路由警报。它能够接收来自 Prometheus Server 的警报,并根据配置的路由规则发送通知。

Grafana:
Grafana 不是 Prometheus 的一部分,但通常包含在 kube-prometheus-stack 中作为可选组件。Grafana 提供了强大的数据可视化和仪表板功能,允许用户创建、查看和管理监控面板。

kube-state-metrics:
kube-state-metrics 是一个用于从 Kubernetes API 服务器提取 Kubernetes 资源状态信息的组件。它为 Prometheus 提供了丰富的 Kubernetes 监控指标。

node-exporter:
node-exporter 是一个用于收集主机系统级别的性能数据的代理。它通过 HTTP 暴露指标,Prometheus 可以从中获取主机级别的指标数据。

kube-rbac-proxy:
kube-rbac-proxy 是一个用于代理和增强 Kubernetes API 请求的反向代理。它有助于在 Prometheus 和其他 Kubernetes 组件之间建立安全的访问。

Prometheus Adapter:
Prometheus Adapter 允许 Kubernetes 的自动伸缩 API (HPA) 使用 Prometheus 的度量数据来进行自动伸缩决策。

环境

虚拟机

Ip主机名cpu内存硬盘
192.168.10.11master012cpu双核4G100G
192.168.10.12worker012cpu双核4G100G
192.168.10.13worker022cpu双核4G100G

版本 centos7.9
已部署k8s-1.27

一、负载均衡器metallb部署

1. 修改kube-proxy代理模式
kubectl edit configmap kube-proxy -n kube-syste

更改两处
strictARP 后的flase改为true
node 后添加ipvs
没看见往下翻

在这里插入图片描述

重启

kubectl rollout restart daemonset kube-proxy -n kube-system	
2. metallb部署
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.5/config/manifests/metallb-native.yaml

服务器连接不了时,可在vpn连接后,浏览器中访问https://raw.githubusercontent.com/metallb/metallb/v0.14.5/config/manifests/metallb-native.yaml
看到内容后复制创建文件

也可以使用离线下载后的文件部署

kubectl apply -f metallb-native.yaml

查看

kubectl -n metallb-system get pod

等待一会,可通过查看描述信息跟踪pod的运行状态,长时间无法完成下载时,各节点重启docker

kubectl -n metallb-system describe pod controller-6b9fd67ff4-rzvg2
3. IP地址池准备
vim ippool.yaml

addresses下是范围

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:name: ippoolnamespace: metallb-system
spec:addresses:- 192.168.10.240-192.168.10.250

yaml应用

kubectl apply -f ippool.yaml

若出现故障提示,等上面pod全部运行起来再部署
还不行,各节点重启docker

查看地址池信息

kubectl -n metallb-system describe ipaddresspools.metallb.io ippool

在这里插入图片描述

4.开启二层通告
vim L2.yaml
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:name: examplenamespace: metallb-system

应用yaml

kubectl apply -f L2.yaml 

二、 服务代理ingress nginx部署

(1)获取ingress nginx部署文件
创建目录

mkdir tsdir
cd tsdir

windows浏览器打开文件:

https://github.com/kubernetes/ingress-nginx/blob/main/deploy/static/provider/baremetal/deploy.yaml

复制文件内容到linux中deploy.yaml文件

vim deploy.yaml

(2)修改部署文件deploy.yaml

vim deploy.yaml

修改此行 type: NodePort
为 type: LoadBalancer

修改前
在这里插入图片描述
修改后
在这里插入图片描述

(3)部署ingress nginx

kubectl apply -f deploy.yaml

稍等几分钟后查看 需要vpn,没有的话查看信息时会显示连接不到镜像仓库

kubectl -n ingress-nginx get pod

可以看到已经成功运行了
在这里插入图片描述
注; 经过测试,1.24版本的k8s集群部署会出现错误
解决方法
链接: REK安装K8S后,Ingress-nginx一直状态为ContainerCreating

三、使用helm安装prometheus全家桶

先下载kube-prometheus-stack的values到kube-prometheus-stack.yaml-default文件中

helm show values prometheus-community/kube-prometheus-stack > kube-prometheus-stack.yaml-default
cp kube-prometheus-stack.yaml-default kube-prometheus-stack.yamlvim kube-prometheus-stack.yaml

把true修改为false
在这里插入图片描述
在这里插入图片描述

	serviceMonitorSelectorNilUsesHelmValues: falseruleSelectorNilUsesHelmValues: false

注:
kube-prometheus-stack 识别 k8s 集群内所有的 ServiceMonitor 和 PrometheusRule
默认情况下,kube-prometheus-stack 只识别自己创建的 ServiceMonitor,如果 k8s 集群内有多个非 kube-prometheus-stack 创建的 ServiceMonitor,不会被识别到。PrometheusRule 同理。
要识别所有的 ServiceMonitor 和PrometheusRule ,需要在 将相应的值改成false

安装

helm install kps prometheus-community/kube-prometheus-stack -f kube-prometheus-stack.yaml -n monitoring --create-namespace --version 61.2.0 --debug

注:–debug 输出debug调试信息

查看pod状态

kubectl get pod -n monitoring 

在这里插入图片描述

四、配置prometheus及grafana访问(通过ingress发布)

创建一个目录

mkdir prometheus
cd prometheus

编写ingress对象清单文件

vim prometheus.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-prometheus                    #自定义ingress名称namespace: monitoring
spec:ingressClassName: nginxrules:- host: prometheus.test.com                   # 自定义域名http:paths:- pathType: Prefixpath: "/"backend:service:name: kps-kube-prometheus-stack-prometheus     # 对应上面创建的service名称port:number: 9090

执行yaml清单文件

kubectl apply -f prometheus.yaml

查看服务

kubectl -n ingress-nginx get svc

在这里插入图片描述

在windows中etc/hosts文件添加

192.168.10.240 prometheus.test.com

在这里插入图片描述
访问
在这里插入图片描述

grafana

vim  grafana.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-grafana                    #自定义ingress名称namespace: monitoring
spec:ingressClassName: nginxrules:- host: grafana.test.com                   # 自定义域名http:paths:- pathType: Prefixpath: "/"backend:service:name: kps-grafana     # 对应上面创建的service名称port:number: 80

执行yaml文件

kubectl apply -f grafana.yaml

查看

kubectl get secret-n monitoring

在这里插入图片描述

kubectl get  secret kps-grafana -n monitoring -o yaml

在这里插入图片描述
获取账号和密码

账号

echo -n "YWRtaW4=" | base64 --decode

在这里插入图片描述

admin

密码

echo -n "cHJvbS1vcGVyYXRvcg==" | base64 --decode

在这里插入图片描述

prom-operator

在windows中etc/hosts文件添加

192.168.10.240 grafana.test.com

在这里插入图片描述
访问

grafana.test.com

在这里插入图片描述

根据找到的账号和密码登录
在这里插入图片描述
在这里插入图片描述
完成

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux 文件系统关联与字符设备操作
  • java类型转换
  • 19个运维工程师面试集锦
  • PDF转图片工具
  • 解决Spring Boot项目中的循环依赖问题
  • 点云处理算法
  • 安泰高压放大器在材料极化中的应用有哪些
  • 汽车-腾讯2023笔试(codefun2000)
  • 量子仿真speedUp的经验
  • 【第五节】python异常处理
  • [ 物联网 ]拟合模型解决传感器数据获取中数据与实际值的误差的补偿方法
  • 命途多舛的Concepts:从提出到剔除再到延期最后到纳入,Concepts为什么在C++中大起大落?
  • API接口的作用和应用程序讲解
  • 「3D开发工具」HOOPS如何赋能CAD/AEC/BIM数据转换与可视化?
  • React学习之props(父传子,子传父),Context组件之间的传参。
  • css系列之关于字体的事
  • Hexo+码云+git快速搭建免费的静态Blog
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JavaScript的使用你知道几种?(上)
  • JavaScript设计模式之工厂模式
  • Koa2 之文件上传下载
  • Promise面试题,控制异步流程
  • tensorflow学习笔记3——MNIST应用篇
  • Zepto.js源码学习之二
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 关于使用markdown的方法(引自CSDN教程)
  • -- 数据结构 顺序表 --Java
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 一个完整Java Web项目背后的密码
  • 一些css基础学习笔记
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​Redis 实现计数器和限速器的
  • #if和#ifdef区别
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (PySpark)RDD实验实战——取最大数出现的次数
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (二)Linux——Linux常用指令
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (四)汇编语言——简单程序
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .Net Core和.Net Standard直观理解
  • .net framework 4.8 开发windows系统服务
  • .NET MVC第三章、三种传值方式
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET技术成长路线架构图