Kubernetes-集群结合普罗米修斯、监控nginx、hpa动态伸缩
目录:Prometheus简介一.k8s集群部署Prometheus二. Prometheus监控应用nginx三. prometheus实现k8s集群的hpa动态伸缩Prometheus简介Prometheus 是由 SoundCloud 开源监控告警解决方案,与Kubernetes同属CNCF,也是仅次于k8s的第二大开源项目。Prometheus 提供了通用的数据模型和便捷的数据采集、存储和
Prometheus简介
Prometheus 是由 SoundCloud 开源监控告警解决方案,与Kubernetes同属CNCF,也是仅次于k8s的第二大开源项目。Prometheus 提供了通用的数据模型和便捷的数据采集、存储和查询接口,同时基于Go实现也大大降低了服务端的运维成本,目前已支持Kubernetes、Etcd、Consul等多种服务发现机制。
Prometheus:监控服务的运行状态,基于Prometheus丰富的Client库,用户可以轻松的在应用程序中添加对Prometheus的支持,从而让用户可以获取服务和应用内部真正的运行状态。
-
prometheus server: 定期从静态配置的 targets 或者服务发现(主要是DNS、consul、k8s、mesos等)的 targets 拉取数据。
-
exporters:负责向prometheus server做数据汇报的程序统。而不同的数据汇报由不同的exporters实现,比如监控主机有node-exporters,mysql有MySQL server exporter
-
pushgateway:主要使用场景为:
Prometheus 采用 pull 模式,可能由于不在一个子网或者防火墙原因,导致 Prometheus 无法直接拉取各个 target 数据。在监控业务数据的时候,需要将不同数据汇总, 由 Prometheus 统一收集。
-
Alertmanager:实现prometheus的告警功能。
-
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)