Kubernetes(k8s)部署Promehteus(kube-prometheusku。。。

Kubernetes(k8s)部署Promehteus(kube-prometheusku。。。

2023年6月30日发(作者:)

Kubernetes(k8s)部署Promehteus(kube-prometheusku。。。⽂章⽬录⼀、概述在1.8版本以后heapster由metrics-server替代;从k8s的v1.11版本开始已经全⾯转向以Prometheus为核⼼的新监控体系架构;kube-prometheus 中包含了 prometheus 监控所⽤到的所有组件,当然也包含 prometheus-operator。Helm中⼼仓库的PrometheusOperator Chart,在2020年9⽉已经不维护了,新的Chart在Prometheus Community的Repo中,叫 ,使⽤时需要先添加该Repo。heapster-》metrics-server-》prometheus-operator -》kube-prometheus-》kube-prometheus-stack1)metrics-servers-server简介metrics-server 通过kubelet(cAdvisor)获取监控数据,主要作⽤是为kube-scheduler,HPA等k8s核⼼组件,以及kubectl top命令和Dashboard等UI组件提供数据来源。【注意】如果要部署prometheus,就不⽤部署了metrics-server了,否则冲突,推荐只部署prometheus,所以这⾥也只讲prometheus的部署。2)Prommetheus简介etheus简介是⼀个开源监控系统,它前⾝是SoundCloud的警告⼯具包。从2012年开始,许多公司和组织开始使⽤Prometheus。Prometheus的主要特征有:多维度数据模型灵活的查询语⾔不依赖分布式存储,单个服务器节点是⾃主的以HTTP⽅式,通过pull模型拉去时间序列数据也通过中间⽹关⽀持push模型通过服务发现或者静态配置,来发现⽬标服务对象⽀持多种多样的图表和界⾯展⽰,grafana也⽀持它组件Prometheus⽣态包括了很多组件,它们中的⼀些是可选的:主服务Prometheus Server负责抓取和存储时间序列数据客户库负责检测应⽤程序代码⽀持短⽣命周期的PUSH⽹关基于Rails/SQL仪表盘构建器的GUI多种导出⼯具,可以⽀持Prometheus存储数据转化为HAProxy、StatsD、Graphite等⼯具所需要的数据存储格式警告管理器命令⾏查询⼯具其他各种⽀撑⼯具3)Prommetheus Operaetheus OperatorPrometheus Operator的本职就是⼀组⽤户⾃定义的CRD资源以及Controller的实现,Prometheus Operator负责监听这些⾃定义资源的变化,并且根据这些资源的定义⾃动化的完成如Prometheus Server⾃⾝以及配置的⾃动化管理⼯作。以下是PrometheusOperator的架构图:4)metrics-servers-server&Promehteus对⽐&特性使⽤metric-server收集数据给k8s集群内使⽤,如kubectl,hpa,scheduler等使⽤prometheus-operator部署prometheus,存储监控数据使⽤kube-state-metrics收集k8s集群内资源对象数据使⽤node_exporter收集集群中各节点的数据使⽤prometheus收集apiserver,scheduler,controller-manager,kubelet组件数据使⽤alertmanager实现监控报警使⽤grafana实现数据可视化5)Prommetheus Operaetheus Operator VS kube-prometheusmetheus最开始是Heapster+cAdvisor⽅式监控,这是Prometheus Operator出现之前的k8s监控⽅案。后来出现了PrometheusOperator,但是⽬前Prometheus Operator已经不包含完整功能,完整的解决⽅案已经变为kube-prometheus。是CoreOS的⼀个开源项⽬,⽤来增强Prometheus在Kubernetes中的管理运维能⼒。利⽤Kubernetes的⾃定义资源定义(Custom Resource Definition)的特性,实现声明式管理运维Prometheus监控告警系统。为基于 Prometheus 和 Prometheus Operator 的完整集群监控堆栈提供⽰例配置。这包括部署多个 Prometheus 和Alertmanager 实例、指标导出器(例如⽤于收集节点指标的 node_exporter)、抓取将 Prometheus 链接到各种指标端点的⽬标配置,以及⽤于通知集群中潜在问题的⽰例警报规则。两个项⽬的关系:前者只包含了Prometheus Operator,后者既包含了Operator,⼜包含了Prometheus相关组件的部署及常⽤的Prometheus⾃定义监控,具体包含下⾯的组件1. :创建CRD⾃定义的资源对象2. :创建⾼可⽤的Prometheus3. :创建⾼可⽤的告警组件4. :创建主机的监控组件5. :创建⾃定义监控的指标⼯具(例如可以通过nginx的request来进⾏应⽤的⾃动伸缩)6. :监控k8s相关资源对象的状态指标7. :进⾏图像展⽰⼆、安装kube-prometheus1)安装git$ yum install -y git2)下载kube-prometheus#

下载$ git clone /prometheus-operator/$ cd kube-prometheus/manifests# yaml⽂件⽐较多,下⾯进⾏归档$ mkdir -p serviceMonitor prometheus adapter node-exporter blackbox kube-state-metrics grafana alertmanager operator other/{nfs-storage,ingress}$ mv alertmanager-* alertmanager/ && mv blackbox-exporter-* blackbox/ && mv grafana-* grafana/ && mv kube-state-metrics-* kube-state-metrics/ && mv node-exporter-* node-exporter/ && mv prometheus-adapter-* adapter/ && mv prometheus-* prometheus/ && mv kubernetes-serviceMonitor* serviceMonitor/$

2)修改镜像源国外镜像源某些镜像⽆法拉取,我们这⾥修改prometheus-operator,prometheus,alertmanager,kube-state-metrics,node-exporter,prometheus-adapter的镜像源为国内镜像源。我这⾥使⽤的是中科⼤的镜像源。#

查找$ grep -rn '' *#

批量替换$ sed -i 's///g' `grep "" -rl *`#

再查找$ grep -rn '' *$ grep -rn 'image: ' *3)修改类型为NodePort为了可以从外部访问prometheus,alertmanager,grafana,我们这⾥修改promethes,alertmanager,grafana的service类型为NodePort类型。1、修改prometheus的service#

设置对外访问端⼝:30080$ cat 2、修改grafana的service#

设置对外访问端⼝:30081$ cat 3、修改alertmanager的service#

设置对外访问端⼝:30082$ cat 4、安装CRD和prometheus-operator【温馨提⽰】CustomResourceDefinition:⾃定义资源$ kubectl apply -f setup/下载prometheus-operator镜像需要花费⼏分钟,这⾥等待⼏分钟,直到prometheus-operator变成running状态$ kubectl get pod -n monitoring5、安装prometheus, alertmanager, grafana, kube-state-metrics, node-exporter等资源$ kubectl apply -f .稍等⼀段时间再查看,查看命名空间monitoring下⾯的pod状态,直到monitoring命名空间下所有pod都变为running状态,就⼤功告成了。$ kubectl get pod -n monitoring如果上⾯下载镜像失败,可以使⽤以下地址下载,当然也可以去下载。6、⼯作流程Prometheus Server定期从配置好的Exporters/Jobs中拉metrics,或者来着pushgateway发过来的metrics,或者其它的metrics,收集完后运⾏定义好的,记录时间序列或者向Alertmanager推送警报。7、组件说明node_exporter:⽤来监控运算节点上的宿主机的资源信息,需要部署到所有运算节点kube-state-metric:prometheus采集k8s资源数据的exporter,能够采集绝⼤多数k8s内置资源的相关数据,例如pod、deploy、service等等。同时它也提供⾃⼰的数据,主要是资源采集个数和采集发⽣的异常次数统计blackbox_exporter:监控业务容器存活性prometheus-adapter:由于本⾝prometheus属于第三⽅的 解决⽅案,原⽣的k8s系统并不能对Prometheus的⾃定义指标进⾏解析,就需要借助于k8s-prometheus-adapter将这些指标数据查询接⼝转换为标准的Kubernetes⾃定义指标。8、验证$ kubectl get svc -n monitoring9、Grafana添加数据源1、修改prometheus地址10、导⼊DashBoards三、使⽤Helm3安装kube-prometheus-stack#

添加repo$ helm repo add prometheus-community /helm-charts$ helm repo update$ helm search repo prometheus-community/prometheus1)下载kube-prometheus-stack包#

拉包$ helm pull prometheus-community/kube-prometheus-stack#

解包$ tar -xf 查看所需要的镜像,最好提前下载镜像,要不然很⼤可能会因为下载镜像失败⽽安装失败。$ grep -A3 'image:' kube-prometheus-stack/这⾥提供镜像下载地址,当前也可以去⽹站上下载,或者其它地⽅下载,如果下载不到对应的版本号,可以下载最新的,然后tag⼀个就⾏了。2)导⼊镜像(所有节点都执⾏)$ docker image load -i $ docker image load -i $ docker image load -i $ docker image load -i 3)安装kube-prometheus-stack#

创建命名空间$ kubectl create ns kube-prometheus-stack$ helm install mykube-prometheus-stack kube-prometheus-stack -n kube-prometheus-stack --set otFsMount=false --set d=true --set ='{}' --set ='{/}' --set pe=Prefix --set d=true --set ='{}' --set ='{/}' --set pe=Prefix --set d=true --set ='{}' --set ='{/}' --set pe=Prefix这⾥我没跑起来,机器跑的东西太多,已经不能⽀撑跑kube-prometheus-stack了,有兴趣的⼩伙伴可以试试~发现K8s v1.21+,PSP已经被废弃,不建议使⽤,完全移除在v1.25版本。再不学习它就学不到了。4)清理$ helm uninstall mykube-prometheus-stack -n kube-prometheus-stack更多实战监控知识,请耐⼼等待~

发布者:admin,转转请注明出处:http://www.yc00.com/web/1688057068a72396.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信