企业运维实战-k8s学习笔记17.k8s集群+Prometheus监控部署基于prometheus实现k8s集群的hpa动态伸缩虚拟机部署prometheus监控

Posted Rabbitgo_hyl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了企业运维实战-k8s学习笔记17.k8s集群+Prometheus监控部署基于prometheus实现k8s集群的hpa动态伸缩虚拟机部署prometheus监控相关的知识,希望对你有一定的参考价值。


一、Prometheus简介

Prometheus 是由 SoundCloud 开源监控告警解决方案,与Kubernetes同属CNCF,也是仅次于k8s的第二大开源项目。Prometheus 提供了通用的数据模型和便捷的数据采集、存储和查询接口,同时基于Go实现也大大降低了服务端的运维成本,目前已支持Kubernetes、Etcd、Consul等多种服务发现机制。
 Prometheus工作图:
 

其大概的工作流程是:
Prometheus Server直接从HTTP接口或者Push Gateway拉取指标(Metric)数据。
Prometheus Server在本地存储所有采集的指标(Metric)数据,并在这些数据上运行规则,从现有数据中聚合和记录新的时间序列,或者生成告警。
Alertmanager根据配置文件,对接收到的告警进行处理,发出报警。
在Grafana或其他API客户端中,可视化收集的数据。

相比较于zabbix,zabbix监控服务,Prometheus监控应用

二、Prometheus+k8s部署

1.k8s集群部署Prometheus

拉取chart到本地

解压后进入工作目录

修改主value.yaml文件和各个子服务value.yaml的镜像路径到私有harbor仓库,打开ingress服务并添加hosts.

创建namespace,并指定namespace安装

成功后查看节点启动情况

测试,网页访问,访问前需要添加解析!!

准备镜像

2.设定Prometheus监控应用nginx

首先使用helm图形化界面安装nginx

修改YAML文件

点击DEPLOY,等待pod成功拉起

可以看到一个pod中有两个容器,其中一个是服务本身,另一个:9113端口是对prometheus监控开放的agent。

此时的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服务

看到发现的服务后,点击Graph 添加Graph

kubectl -n prometheus-operator get pod

3.基于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

修改镜像位置

vim values.yaml


已经ingress解析地址

安装

helm install prometheus-adapter . -n prometheus-operator

等待节点成功Running后可查看监控信息

kubectl get pod -n prometheus-operator

kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1

查看nginx服务详细信息

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


使用hpa测试监控

vim hpa-nginx.yaml
cat hpa-nginx.yaml

kubectl apply -f hpa-nginx.yaml
kubectl get hpa


使用hey访问nginx,给予压力

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

kubectl get hpa hpa-example -w

三、虚拟机部署prometheus监控

准备安装包
解压安装包

tar zxf go1.8.3.linux-amd64.tar.gz -C /usr/local/
tar zxf prometheus-2.3.2.linux-amd64.tar.gz -C /usr/local/


添加go到环境变量中

vim .bash_profile
source .bash_profile

查看go版本,验证环境变量添加是否成功

go version

进入prometheus解压目录,创建软连接

cd /usr/local/prometheus-2.3.2.linux-amd64/
ln -s /usr/local/prometheus-2.3.2.linux-amd64/ /usr/local/Prometheus

修改配置文件

vim prometheus.yml

脚本运行,显示ready

./prometheus &


网页访问172.25.9.3:9090,可以查看监控prometheus web管理界面

以上是关于企业运维实战-k8s学习笔记17.k8s集群+Prometheus监控部署基于prometheus实现k8s集群的hpa动态伸缩虚拟机部署prometheus监控的主要内容,如果未能解决你的问题,请参考以下文章

企业运维实战--k8s学习笔记6.Ingress加密认证以及地址重写

企业运维实战--k8s学习笔记 通过Ingress-nginx实现k8s七层负载均衡Ingress加密认证以及地址重写

linux12运维企业实战笔录 -- 02 docker runc漏洞修复

linux12运维企业实战笔录 -- 02 docker runc漏洞修复

一文学会k8s多master集群+keepalived高可用实战

Linux企业运维——K8s高可用集群架构搭建详解