博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kubernetes视频教程笔记 (36)-部署 prometheus granfana
阅读量:2037 次
发布时间:2019-04-28

本文共 3948 字,大约阅读时间需要 13 分钟。

相关地址信息

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.gitcd /root/kube-prometheus/manifests

 

 

 

 

 

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

vim grafana-service.yamlapiVersion: v1kind: Servicemetadata: name: grafana namespace: monitoringspec: type: NodePort #添加内容 ports: - name: http   port: 3000   targetPort: http   nodePort: 30100 #添加内容 selector:   app: grafana

 

 

 

 

 

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

vim prometheus-service.yamlapiVersion: v1kind: Servicemetadata: labels:  prometheus: k8s name: prometheus-k8s namespace: monitoringspec: type: NodePort ports: - name: web   port: 9090   targetPort: web   nodePort: 30200 selector:   app: prometheus   prometheus: k8s

 

 

 

 

 

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

vim alertmanager-service.yamlapiVersion: v1kind: Servicemetadata: labels:  alertmanager: main name: alertmanager-main namespace: monitoringspec: type: NodePort ports: - name: web   port: 9093   targetPort: web   nodePort: 30300 selector:   alertmanager: main   app: 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: xxxx   imagePullPolicy: Always   name: auth   ports:   - containerPort: 8080     protocol: TCP   resources:    limits:     cpu: "4"     memory: 2Gi    requests:     cpu: 250m     memory: 250Mi

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

 

五、资源限制 - 名称空间

Ⅰ、计算资源配额

apiVersion: v1kind: ResourceQuotametadata: name: compute-resources namespace: spark-clusterspec: hard:  pods: "20"  requests.cpu: "20"  requests.memory: 100Gi  limits.cpu: "40"  limits.memory: 200Gi

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

apiVersion: v1kind: ResourceQuotametadata: name: object-counts namespace: spark-clusterspec: hard:  configmaps: "10"  persistentvolumeclaims: "4"  replicationcontrollers: "20"  secrets: "10"  services: "10"  services.loadbalancers: "2"

 

Ⅲ、配置 CPU 和 内存 LimitRange

apiVersion: v1kind: LimitRangemetadata: name: mem-limit-rangespec: limits: - default:    memory: 50Gi    cpu: 5   defaultRequest:    memory: 1Gi    cpu: 1   type: 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 
3000:30100/TCP 20h

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

 

 

修改密码并登陆

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

 

Prometheus 数据源的相关参数:

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

 

 

 

 

 

 

 

 

 

内容来自

转载地址:http://hmkof.baihongyu.com/

你可能感兴趣的文章
threading.local
查看>>
flask上下文
查看>>
Linux的SOCKET编程详解
查看>>
setsid()函数的作用
查看>>
每天进步一点点——Linux中的线程局部存储(二)
查看>>
【C++】explicit关键字
查看>>
八大排序算法
查看>>
C++ 11
查看>>
Spring @Configuration 和 @Component 区别
查看>>
JVM内存模型
查看>>
syslog日志记录
查看>>
Linux下的动态库.so
查看>>
jQuery解决input中placeholder值在ie中无法支持的问题
查看>>
一文深度揭秘Redis的磁盘持久化机制
查看>>
java是编译型还是解释型语言
查看>>
Spring的BeanUtils的copyProperties方法需要注意的点
查看>>
NotePad 常用快捷键总结
查看>>
Notepad++如何让打开的文件排在左边菜单栏
查看>>
File类的常用方法【二】
查看>>
为什么说栈的速度快,堆的速度慢?栈和堆的区别是什么?
查看>>