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

Rabbitgo_hyl Rabbitgo_hyl     2022-12-18     771

关键词:


一、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学习笔记6.ingress加密认证以及地址重写(代码片段)

企业运维实战--k8s学习笔记6.Ingress加密、认证以及地址重写一、Ingress加密二、Ingress认证三、Ingress地址重写一、Ingress加密生成加密密钥opensslreq-x509-sha256-nodes-days365-newkeyrsa:2048-keyouttls.key-outtls.crt-subj"/CN=nginxsvc/O=ngin 查看详情

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

1.Ingress服务简介一种全局的、为了代理不同后端Service而设置的负载均衡服务,就是Kubernetes里的Ingress服务。Ingress由两部分组成:Ingresscontroller和Ingress服务。IngressController会根据你定义的Ingress对象,提供对应的代理能... 查看详情

企业运维实战--最全docker学习笔记5.docker安全容器资源控制安全加固(代码片段)

企业运维实战--最全Docker学习笔记5.Docker安全、容器资源控制、安全加固一、Docker安全二、Docker容器资源控制1.内存限制2.cpu限制3.BlockIO限制三、Docker安全加固一、Docker安全Docker容器的安全性,很大程度上依赖于Linux系统自身&#x... 查看详情

linux企业运维——k8s高可用集群架构搭建详解(代码片段)

K8s高可用集群文章目录K8s高可用集群一、K8s高可用集群架构原理二、实验环境三、K8s高可用集群架构搭建3.1、负载均衡Loadbalancer部署—haproxy3.2、Docker部署3.3、K8s集群部署3.4、K8s集群添加worker节点四、集群高可用性能测试一、K8s... 查看详情

linux企业运维——k8s高可用集群架构搭建详解(代码片段)

K8s高可用集群文章目录K8s高可用集群一、K8s高可用集群架构原理二、实验环境三、K8s高可用集群架构搭建1、负载均衡Loadbalancer部署—haproxy2、Docker部署3、K8s集群部署4、K8s集群添加worker节点四、集群高可用性能测试一、K8s高可用... 查看详情

企业运维实战--最全docker学习笔记1.docker简介安装部署镜像构建dockerfile详解镜像构建镜像优化本地私有仓库搭建(代码片段)

企业运维实战--Docker学习笔记1.Docker简介、安装部署、镜像构建、Dockerfile详解、镜像构建、镜像优化、本地私有仓库搭建前言--Docker简介一、Docker安装部署二、镜像的构建三、Dockerfile详解四、镜像构建--nginx五、镜像优化六、本地... 查看详情

linux12运维企业实战笔录--02dockerrunc漏洞修复(代码片段)

文章目录一、背景二、目标三、风险操作类型和风险等级四、操作步骤五、测试用例六、回退方案七、yml语言一、背景192.168.11.20存在runc容器逃逸漏洞CVE-2022-365【POC检测原理】。该K8S节点为dcos-jt-01集群的K8S节点,需要对每台节点... 查看详情

linux12运维企业实战笔录--02dockerrunc漏洞修复(代码片段)

文章目录一、背景二、目标三、风险操作类型和风险等级四、操作步骤五、测试用例六、回退方案七、yml语言一、背景192.168.11.20存在runc容器逃逸漏洞CVE-2022-365【POC检测原理】。该K8S节点为dcos-jt-01集群的K8S节点,需要对每台节点... 查看详情

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

...至关重要,一旦宕机,整个K8S平台将无法使用,所以保障企业高可用是运维必备的工作之一。1.安装keepalived2.修改配置3.重启keepalived 查看详情

linux企业运维——kubernetesk8s集群安装部署(代码片段)

Linux企业运维——Kubernetes(一)k8s集群安装部署文章目录Linux企业运维——Kubernetes(一)k8s集群安装部署1、Kubernetes简介1.1、什么是Kubernetes1.2、Kubernetes设计架构2、k8s安装部署2.1、环境准备2.2、安装部署1、Kubernetes... 查看详情

linux企业运维——k8s高可用集群架构搭建详解(代码片段)

K8s高可用集群文章目录K8s高可用集群一、K8s高可用集群架构原理二、实验环境三、K8s高可用集群架构搭建3.1、负载均衡Loadbalancer部署—haproxy3.2、Docker部署3.3、K8s集群部署3.4、K8s集群添加worker节点四、集群高可用性能测试一、K8s... 查看详情

云计算学习该怎么入门?

...要学习网络基础,包括计算机网络、云计算网络,配备有企业级项目实战:IP地址配置与DNS解析。云计算第二阶段:学习Linux基础,包括Linux操作系统以及Linux高级管理。企业级项目实战为:云数据中心主机CPU资源利用率实时统计... 查看详情

k8s部署企业应用系统学习

一、K8S部署多master的集群前一个月用K8S部署了一个多master的集群,其中的困难,比想象中多太多。大概花了一个月的时间,从0开始,到集群搭建完成。   后面应该会写一个帖子,这里就不做介绍了。二、学习的一些... 查看详情

k8s学习笔记part2:获取k8s集群中运行的所有容器镜像

本文将介绍如何使用kubectl列举K8S集群中运行的Pod内的容器镜像。注意:本文针对K8S的版本号为v1.9,其他版本可能会有少许不同。0x00准备工作需要有一个K8S集群,并且配置好了kubectl命令行工具来与集群通信。如果未准备好集群... 查看详情

linux云计算课程具体学啥?

...要学习网络基础,包括计算机网络、云计算网络,配备有企业级项目实战:IP地址配置与DNS解析。第二阶段将学习【Linux基础】,包括Linux操作系统(文件权限、作业控制与进程管理)以及Linux高级管理。企业级项目实战为:云数据... 查看详情

云计算需要学习哪些课程?

...透测试及性能调优项目实战7.公有云运维技术项目实战8.企业私有云架构及运维实战9.Python自动化运维开发基础10.Python自动化运 查看详情

rancher运维-从零开始学习|rke部署k8s|容器管理(代码片段)

...一、概述①基础设施编排②容器编排与调度③应用商店④企业级权限管理二、RKE①REK1和RKE2的区别三、RKE1部署K8S1.1基础环境部署①SSH用户必须是节点上docker用户组的成员②禁用交换功能(Swap)③修改主机名[可选]④配置互相⑤启用I... 查看详情

rancher运维-从零开始学习|rke部署k8s|容器管理(代码片段)

...一、概述①基础设施编排②容器编排与调度③应用商店④企业级权限管理二、RKE①REK1和RKE2的区别三、RKE1部署K8S1.1基础环境部署①SSH用户必须是节点上docker用户组的成员②禁用交换功能(Swap)③修改主机名[可选]④配置互相⑤启用I... 查看详情