关键词:
企业运维实战-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学习笔记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系统自身... 查看详情
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... 查看详情