Kubernetes-集群结合普罗米修斯、监控nginx、hpa动态伸缩

Prometheus简介

Prometheus 是由 SoundCloud 开源监控告警解决方案,与Kubernetes同属CNCF,也是仅次于k8s的第二大开源项目。Prometheus 提供了通用的数据模型和便捷的数据采集、存储和查询接口,同时基于Go实现也大大降低了服务端的运维成本,目前已支持Kubernetes、Etcd、Consul等多种服务发现机制。
Prometheus:监控服务的运行状态,基于Prometheus丰富的Client库,用户可以轻松的在应用程序中添加对Prometheus的支持,从而让用户可以获取服务和应用内部真正的运行状态。

请添加图片描述

  1. prometheus server: 定期从静态配置的 targets 或者服务发现(主要是DNS、consul、k8s、mesos等)的 targets 拉取数据。

  2. exporters:负责向prometheus server做数据汇报的程序统。而不同的数据汇报由不同的exporters实现,比如监控主机有node-exporters,mysql有MySQL server exporter

  3. pushgateway:主要使用场景为:

Prometheus 采用 pull 模式,可能由于不在一个子网或者防火墙原因,导致 Prometheus 无法直接拉取各个 target 数据。在监控业务数据的时候,需要将不同数据汇总, 由 Prometheus 统一收集。

  1. Alertmanager:实现prometheus的告警功能。

  2. web Ui:主要通过grafana来实现webui展示。

一.k8s集群部署Prometheus

先拉取需要的仓库
新建项目kubeapps用来上传镜像
请添加图片描述

helm pull apphub/prometheus-operator

请添加图片描述

拉取下来的是压缩包,解开并进入目录

tar zxf prometheus-operator-8.7.0.tgz
cd prometheus-operator/
ls

请添加图片描述

先修改value.yaml
vim value.yaml

打开ingress服务
并将所有的镜像名字都定义为kubeapps/
添加hosts.
注意:文件中的所有镜像都需要自己拉取下来并上传到私有仓库中,而且版本要一一对应一致!!

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述
请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

cd charts/
cd grafana/
vim values.yaml

请添加图片描述

将所有镜像都改为kubeapps/
并将ingress打开,如下图
下图中的镜像都需要自己拉取,注意版本!!
请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

继续编辑文件

cd ..
cd kube-state-metrics/
vi values.yaml

请添加图片描述
只需要改一个镜像,记得拉取!

请添加图片描述

创建namespace,并指定namespace安装

kubectl create namesapce prometheus-operator
helm install prometheus-operator . -n prometheus-operator

请添加图片描述

查看节点的状态和ingress状态

kubectl -n prometheus-operator get pod
kubectl -n prometheus-operator get ingress

请添加图片描述

请添加图片描述
然后就可以在网页访问测试了
记得做本地解析

vim /etc/hosts
172.25.0.10 prometheus.westos.org granfana.westos.org

请添加图片描述

请添加图片描述

输入账户密码登陆!
请添加图片描述

二. Prometheus监控应用nginx

上一篇文章介绍了搭建helm的图形化界面:
先访问helm的图形化界面kubeapps.westos.org

先搜索nginx
请添加图片描述

然后按照下图进行操作:
请添加图片描述

请添加图片描述

修改yaml文件的内容:
请添加图片描述

请添加图片描述

我们刚才修改的内容在changes都可以看到很详细!!
请添加图片描述
测试是否添加成功

kubectl get pod
kubectl get all
kubectl get svc

请添加图片描述

查看svc分配的IP地址
请添加图片描述
访问IP,可以看到nginx发布页面!!
请添加图片描述
但是!!
此时的nginx还无法被prometheus发现,原因是未添加对应的标签release=prometheus-operator

查看并添加标签给nginx

kubectl -n prometheus-operator get servicemonitors.monitoring.coreos.com --show-labels

kubectl -n prometheus-operator label servicemonitors.monitoring.coreos.com nginx release=prometheus-operator

kubectl -n prometheus-operator get servicemonitors.monitoring.coreos.com nginx --show-labels

请添加图片描述

请添加图片描述

此时在prometheus.westos.org下的status中的Service Discovery可以看到被发现的nginx服务
第一行就是nginx!!!
请添加图片描述

看到发现的服务后,点击Graph 添加Graph
可以看到图形
请添加图片描述

kubectl -n prometheus-operator get pod

请添加图片描述

三. prometheus实现k8s集群的hpa动态伸缩

添加prometheus-adapter插件

helm search repo prometheus-adapter
helm pull apphub/prometheus-adapter
tar zxf prometheus-adapter-2.1.1.tgz
cd prometheus-adapter/
ls

请添加图片描述

编辑values.yaml文件,修改镜像的信息

vim values.yaml

请添加图片描述

请添加图片描述

我们可以进入一个镜像,查看它是否有解析

kubectl run -it --rm --image=busyboxplus
nslookup prometheus-operator.prometheus-operator,svc

请添加图片描述

指定namespace安装

helm install prometheus-adapter . -n prometheus-operator

请添加图片描述
查看监控信息

kubectl get pod -n prometheus-operator

请添加图片描述

查看nginx服务详细信息

kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1/namespaces/default/pods/nginx-7dc5d5976-llz88/nginx_http_requests

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述
执行hpa文件

kubectl apply -f hpa-nginx.yaml

请添加图片描述
使用hey访问nginx,给予压力
将hey的二进制程序放到/usr/local/bin/

cp hey_linux_ad64 /usr/local/bin/

请添加图片描述

请添加图片描述

hey -n 10000 -c 5 -q 5 http://172.25.0.12/index.html

请添加图片描述

持续查看hpa状况,可以看到集群根据压力大小进行动态添加副本,实现动态伸缩。

kubectl get hpa hpa-example -w

我们给的压力是5*5=25。每个节点能有10个pods所以,需要3个replicas之后就可以稳定,如下图所示!!
请添加图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
普罗米修斯(Prometheus)是一种用于监控和警报的开源系统,它在Kubernetes集群中被广泛采用。\[1\]与其他监控工具相比,Prometheus具有高效和便捷的配置,能够方便地识别Kubernetes中的相关指标,并实现指标的采集和监控告警。\[2\] 在监控Kubernetes集群的过程中,通常会使用以下组件和工具: - Metric Server:用于收集数据并提供给Kubernetes集群内部使用,例如kubectl、HPA(Horizontal Pod Autoscaler)、Scheduler等。 - Prometheus Operator:用于部署和管理Prometheus,存储监控数据。 - Kube-state-metrics:用于收集Kubernetes集群内资源对象的数据。 - Node Exporter:用于收集集群中各节点的数据。 - Prometheus:用于收集Apiserver、Scheduler、Controller-manager、Kubelet等组件的数据。 - Alertmanager:用于实现监控报警功能。 - Grafana:用于实现监控数据的可视化。\[3\] 通过使用这些组件和工具,可以实现对Kubernetes集群的全面监控和警报,并通过Grafana进行数据可视化,方便用户进行监控数据的查看和分析。 #### 引用[.reference_title] - *1* [k8s部署-52-k8s之Prometheus(普罗米修斯监控,简单梳理下K8S监控流程](https://blog.csdn.net/ouyangzhenxin/article/details/124597533)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Kubernetes容器集群管理环境 - Prometheus监控篇](https://blog.csdn.net/weixin_30371469/article/details/98925601)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dudududu--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值