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