相关地址信息

Prometheus github 地址:https://github.com/coreos/kube-prometheus

一、组件说明

1.MetricServer:

是kubernetes集群资源使用情况的聚合器,收集数据给kubernetes集群内使用,如kubectl,hpa,scheduler等。

2.PrometheusOperator:

是一个系统监测和警报工具箱,用来存储监控数据。

3.NodeExporter:

用于各node的关键度量指标状态数据。

4.KubeStateMetrics:

收集kubernetes集群内资源对象数据,制定告警规则。

5.Prometheus:

采用pull方式收集apiserver,scheduler,controller-manager,kubelet组件数据,通过http协议传输。

6.Grafana:

是可视化数据统计和监控平台。

二、构建记录

1. 下载

git clone https://github.com/coreos/kube-prometheus.git
cd /root/kube-prometheus/manifests

2. 修改 grafana-service.yaml 文件,使用 nodepode 方式访问 grafana:

vim grafana-service.yaml
apiVersion: v1
kind: Service
metadata:name: grafananamespace: monitoring
spec:type: NodePort #添加内容ports:- name: httpport: 3000targetPort: httpnodePort: 30100 #添加内容selector:app: grafana

3. 修改 prometheus-service.yaml,改为 nodepode

vim prometheus-service.yaml
apiVersion: v1
kind: Service
metadata:labels:prometheus: k8sname: prometheus-k8snamespace: monitoring
spec:type: NodePortports:- name: webport: 9090targetPort: webnodePort: 30200selector:app: prometheusprometheus: k8s

4. 修改 alertmanager-service.yaml,改为 nodepode

vim alertmanager-service.yaml
apiVersion: v1
kind: Service
metadata:labels:alertmanager: mainname: alertmanager-mainnamespace: monitoring
spec:type: NodePortports:- name: webport: 9093targetPort: webnodePort: 30300selector:alertmanager: mainapp: alertmanager

多运行几次,因为需要互相链接

三、Horizontal Pod Autoscaling

Horizontal Pod Autoscaling 可以根据 CPU 利用率自动伸缩一个 Replication Controller、Deployment 或者Replica Set 中的 Pod 数量

kubectl run php-apache --image=gcr.io/google_containers/hpa-example --requests=cpu=200m --expose --port=80

创建 HPA 控制器 - 相关算法的详情请参阅这篇文档

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

关闭压测

增加负载,查看负载节点数目

$ kubectl run -i --tty load-generator --image=busybox /bin/sh
$ while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done

四、资源限制 - Pod

Kubernetes 对资源的限制实际上是通过 cgroup 来控制的,cgroup 是容器的一组用来控制内核如何运行进程的相关属性集合。针对内存、CPU 和各种设备都有对应的 cgroup

默认情况下,Pod 运行没有 CPU 和内存的限额。 这意味着系统中的任何 Pod 将能够像执行该 Pod 所在的节点一样,消耗足够多的 CPU 和内存 。一般会针对某些应用的 pod 资源进行资源限制,这个资源限制是通过resources 的 requests 和 limits 来实现

spec:containers:- image: xxxximagePullPolicy: Alwaysname: authports:- containerPort: 8080protocol: TCPresources:limits:cpu: "4"memory: 2Girequests:cpu: 250mmemory: 250Mi

requests 要分分配的资源,limits 为最高请求的资源值。可以简单理解为初始值和最大值

五、资源限制 - 名称空间

Ⅰ、计算资源配额

apiVersion: v1
kind: ResourceQuota
metadata:name: compute-resourcesnamespace: spark-cluster
spec:hard:pods: "20"requests.cpu: "20"requests.memory: 100Gilimits.cpu: "40"limits.memory: 200Gi

Ⅱ、配置对象数量配额限制

apiVersion: v1
kind: ResourceQuota
metadata:name: object-countsnamespace: spark-cluster
spec:hard:configmaps: "10"persistentvolumeclaims: "4"replicationcontrollers: "20"secrets: "10"services: "10"services.loadbalancers: "2"

Ⅲ、配置 CPU 和 内存 LimitRange

apiVersion: v1
kind: LimitRange
metadata:name: mem-limit-range
spec:limits:- default:memory: 50Gicpu: 5defaultRequest:memory: 1Gicpu: 1type: Container

default 即 limit 的值

defaultRequest 即 request 的值

六、访问 prometheus

1. prometheus 对应的 nodeport 端口为 30200,访问 http://MasterIP:30200

通过访问 http://MasterIP:30200/target 可以看到 prometheus 已经成功连接上了 k8s 的 apiserver

查看 service-discovery

Prometheus 自己的指标

prometheus 的 WEB 界面上提供了基本的查询 K8S 集群中每个 POD 的 CPU 使用情况,查询条件如下:

sum by (pod_name)( rate(container_cpu_usage_seconds_total{image!="", pod_name!=""}[1m] ) )

上述的查询有出现数据,说明 node-exporter 往 prometheus 中写入数据正常,接下来我们就可以部署grafana 组件,实现更友好的 webui 展示数据了

七、访问 grafana

查看 grafana 服务暴露的端口号:

kubectl get service -n monitoring | grep grafanagrafana NodePort 10.107.56.143 <none> 3000:30100/TCP 20h

如上可以看到 grafana 的端口号是 30100,浏览器访问 http://MasterIP:30100 用户名密码默认 admin/admin

修改密码并登陆

添加数据源 grafana 默认已经添加了 Prometheus 数据源,grafana 支持多种时序数据源,每种数据源都有各自的查询编辑器

Prometheus 数据源的相关参数:

目前官方支持了如下几种数据源:

内容来自https://study.163.com/course/courseMain.htm?courseId=1209568805

kubernetes视频教程笔记 (36)-部署 prometheus granfana相关推荐

  1. Kubernetes部署Prometheus operator

    部署Prometheus 我们使用kube-prometheus 在K8S中部署Prometheus ,我们直接使用开源的 mainfest 文件即可.我们创建单独的 namespace 进行监控 a ...

  2. k8s学习笔记- 部署prometheus

    1.Prometheus概述 Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包.从2012年开始,许多公司和组织开始使用Prometheus. 该项目的开发人员和用户社 ...

  3. kubernetes部署Prometheus

    文章目录 准备工作 整一个PV来存放TSDB数据 部署Prometheus 准备工作 开始部署Prometheus 部署Grafana 准备工作 开始部署Grafana 部署Ingress,通过Ing ...

  4. kubernetes学习笔记之七: Ingress-nginx 部署使用

    一.Ingress 简介 在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的.为了使外部的应用能够访问集群内的服务,在Kubernetes 目前 提供 ...

  5. kubernetes学习笔记之七:Ingress-nginx部署使用

    一.Ingress简介 在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的,为了使外部的应用能够访问集群的服务,在Kubernetes目前提供了以下几 ...

  6. 运维实操——kubernetes(十九)k8s中部署Prometheus、监控nginx、HPA自动伸缩

    k8s中部署Prometheus.监控nginx.HPA自动伸缩 1.什么是Prometheus? 2.k8s中部署Prometheus监控 3.prometheus监控nginx 4.基于prome ...

  7. Kubernetes(k8s)之在集群环境部署Prometheus(普罗米修斯监控)和集群的ui管理工具Grafana

    Prometheus Prometheus 演示环境 部署Prometheus和Grafana 测试 Prometheus Prometheus是一个开源系统监控和警报工具包. 现在是一个独立的开源项 ...

  8. k8s实战之部署Prometheus+Grafana可视化监控告警平台

    写在前面 之前部署web网站的时候,架构图中有一环节是监控部分,并且搭建一套有效的监控平台对于运维来说非常之重要,只有这样才能更有效率的保证我们的服务器和服务的稳定运行,常见的开源监控软件有好几种,如 ...

  9. 万字好文!Docker环境部署Prometheus+Grafana监控系统

    点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 It doesn't matter how slow you ar ...

  10. Kubernetes学习笔记

    Kubernetes学习笔记 1.简介 用于自动部署.扩缩和管理容器化应用程序的开源系统,支持自动化部署.大规模可伸缩. 2.架构 2.1.Control Plane 对集群做出全局决策 Contro ...

最新文章

  1. 去百度,还是去创新工厂
  2. python中e-r图_E-R图基本步骤
  3. 多多自走棋改动_多多自走棋腾讯版
  4. vue node --- 前后端联系的知识梳理
  5. excel函数中if android,在Android中阅读Excel
  6. ssm整合,使用maven分模块
  7. 二叉树前序中序后续线索树_二叉树的先序,中序,后序遍历以及线索二叉树的遍历...
  8. django-登陆案例-分析篇1909
  9. 单条知识:什么是平面束方程
  10. Vue 项目中各种痛点问题及方案(建议收藏)
  11. OpenCV色彩空间类型
  12. 机器学习之网格搜索调参sklearn
  13. python 自动点赞_python实现在有漏洞的网站实现自动注册、登录、点赞
  14. pfx证书解析公钥私钥
  15. tomcat同时部署两个项目的问题
  16. Themida/WinLicense.V1.8.2.0 的Anit OllyDBG新方法
  17. word文档如何停止限制编辑
  18. Servlet过滤器,Servlet过滤器创建和配置
  19. 2020年chx的计算机保研之路系列(7)——清华软院+北大软微(均被拒)
  20. 开源项目总结帖(整理自Trinea的github)

热门文章

  1. 管理例程——数据库管理员
  2. 三次握手与accept()函数
  3. 使用java6做webservice 的客户端
  4. ubuntu自带截图工具
  5. 初识python之django创建工程
  6. valgrind- 内存泄漏-how to install and use
  7. RedHat 6.4源码方式安装mysql5.5
  8. Android Studio运行程序出现Session ‘app’: Error Launching activity 解决办法
  9. 计数器控制的while循环(C++/python版)
  10. 删除和修改nbsp;预留nbsp;:BAPI_RESERVATI…