您好,欢迎来到网暖!

当前位置:网暖 » 站长资讯 » 建站基础 » 网络技术 » 文章详细 订阅RssFeed

kubernetes 部署Prometheus

来源:网络整理 浏览:296次 时间:2020-09-25
kubernetes 部署Prometheus

标签(空格分隔): kubernetes系列


  • 一: 组件说明

  • 二: Prometheus的部署

  • 三: HPA 资源限制

一: 组件说明1.1 相关地址信息
Prometheusgithub 地址:https://github.com/coreos/kube-prometheus
1.2 组件说明
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:是可视化数据统计和监控平台。

二: Prometheus的部署
mkdir Prometheuscd Prometheusgit clone https://github.com/coreos/kube-prometheus.git

image_1e4nuspf71d9hppu10jsn0t19is9.png-159.3kB


cd /root/kube-prometheus/manifests修改 grafana-service.yaml 文件,使用 nodeport 方式访问 grafana:vim grafana-service.yaml---apiVersion: v1kind: Servicemetadata:  labels:    app: grafana  name: grafana  namespace: monitoringspec:  type: NodePort  ports:  - name: http    port: 3000    targetPort: http    nodePort: 30100  selector:    app: grafana---修改 prometheus-service.yaml,改为 nodepodevim prometheus-service.yaml-----apiVersion: 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  sessionAffinity: ClientIP----修改 alertmanager-service.yaml,改为 nodeport vim alertmanager-service.yaml---apiVersion: 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  sessionAffinity: ClientIP---

导入镜像处理(节点全部导入)上传 load-images.sh prometheus.tar.gz 到 /root tar -zxvf prometheus.tar.gzchmod +x load-images.sh ./load-images.sh 

image_1e4o009rlpsm11713q116rv1u38m.png-320kB

image_1e4o01i761iaini51nbm1j8g1r13.png-306.2kB


kubectl apply -f kube-prometheus/manifests/连续执行两次: 第一次会报错kubectl apply -f kube-prometheus/manifests/

image_1e4o58a4m159qect7nh11um1qjm9.png-118.5kB


kubectl get pod -n monitoring kubectl get svc -n monitoring kubectl top node 

image_1e4o5c2tr188d1iodg2ihopt3f13.png-122.7kB

image_1e4o5deu012d31jrd55i3vr11cb1g.png-126.9kB

image_1e4o5ffrd1iapf4tc6r1s661r7h1t.png-59.5kB


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

image_1e4o5rrli1pl91nlngk5c3cq5lm.png-179.9kB

image_1e4o5sof23271fnd8d4107vc6i13.png-345.5kB

prometheus 的 WEB 界面上提供了基本的查询 K8S 集群中每个 POD 的 CPU 使用情况,查询条件如下:sum by (pod_name)( rate(container_cpu_usage_seconds_total{image!="", pod_name!=""}[1m] ) )

image_1e4o604cncogvngvsp4on1pra1g.png-345.2kB

image_1e4o62pvn137g16j8df41aji1fht2d.png-369.8kB

image_1e4o63f9l1v501dsphdbajb13p42q.png-476.1kB


查看 grafana 服务暴露的端口号:kubectl get service -n monitoring | grep grafanagrafana NodePort 10.107.56.143 <none> 3000:30100/TCP 20h

image_1e4o674ce5mn1bvrhh217o62uv37.png-261.7kB


默认的用户名与 密码 都是admin然后从新修改密码即可

image_1e4o69dvtrpvr8lgf6jln6n3k.png-330kB

image_1e4o6as5bbc9dt81plmevh1po641.png-1024.5kB

image_1e4o6c1v4gl7ut91cb19h1167q4e.png-866.8kB

image_1e4o6d0ieg801vp6nl210hrtug5b.png-1035.1kB

image_1e4o6e3dadm7560ucibjh1uvv5o.png-346.3kB

image_1e4o6h0a513gs7591bdn1dk31d4165.png-296.2kB三:HPA 的资源限制
上传hpa-example.tar 然后导入 (所有节点)docker load -i hpa-example.tar

image_1e4o74foq823mlu1uk31ldd1ade72.png-173.8kB

image_1e4o74uca84a1j7v7nj1tmf1tf27f.png-169.2kB

image_1e4o75mp21ks7gcpfvfapc19ju8c.png-164.6kB

3.1 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

image_1e4o7aho3117vn9s1omc16tr149c99.png-64.5kB

kubectl get deploy kubectl edit deploy php-apache----修改:imagePullPolicy: Always  改为imagePullPolicy: IfNotPresent----kubectl get pod 

image_1e4o7qkfp1ir76ug2qmqkrcto9m.png-96.4kB

创建 HPA 控制器kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10kubectl top pod 

image_1e4o7rfso139h11nijmj1v1n1hdva3.png-25.1kB

image_1e4o7tvbj1o61pm1daaoa712spag.png-86.8kB

image_1e4o80aod137o1p7k11gd1b801gaebd.png-42.1kB

增加负载,查看负载节点数目kubectl run -i --tty load-generator --image=busybox /bin/shwhile true; do wget -q -O- http://php-apache.default.svc.cluster.local; done

image_1e4o87a2jtl31jn21kdu14nsifsbq.png-125.2kB

pod 开始扩展kubectl get hpakubectl get pod

image_1e4o892pn1q1p19d819408o1vdgc7.png-126.4kB

image_1e4o8bbblfr9c0m1fn61u0d17k8ck.png-122.4kB

image_1e4o8jj2fekmfcu1fg1gef59od1.png-422.3kB

image_1e4o8klmod0a89clpp6cujf2de.png-361.8kB

kubernetes 回收的速度比较慢(非常慢)这是因为并发的问题,一单有 大流量过来,如果回收的速度比较快,很容易将某一个pod给压死

3.2 k8s 的资源限制
资源限制 - PodKubernetes 对资源的限制实际上是通过 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 为最高请求的资源值。可以简单理解为初始值和最大值

资源限制 - 名称空间1、计算资源配额apiVersion: v1kind: ResourceQuotametadata:  name: compute-resources  namespace: spark-clusterspec:  hard:    pods: "20"    requests.cpu: "20"    requests.memory: 100Gi    limits.cpu: "40"    limits.memory: 200Gi

2. 配置对象数量配额限制apiVersion: v1kind: ResourceQuotametadata:  name: object-counts  namespace: spark-clusterspec:  hard:    configmaps: "10"    persistentvolumeclaims: "4"    replicationcontrollers: "20"    secrets: "10"    services: "10"    services.loadbalancers: "2"

3. 配置 CPU 和 内存 LimitRangeapiVersion: v1kind: LimitRangemetadata:  name: mem-limit-rangespec:  limits:  - default:      memory: 50Gi      cpu: 5   defaultRequest:     memory: 1Gi     cpu: 1     type: Container----default 即 limit 的值defaultRequest 即 request 的值

推荐站点

  • 腾讯腾讯

    腾讯网(www.QQ.com)是中国浏览量最大的中文门户网站,是腾讯公司推出的集新闻信息、互动社区、娱乐产品和基础服务为一体的大型综合门户网站。腾讯网服务于全球华人用户,致力成为最具传播力和互动性,权威、主流、时尚的互联网媒体平台。通过强大的实时新闻和全面深入的信息资讯服务,为中国数以亿计的互联网用户提供富有创意的网上新生活。

    www.qq.com
  • 搜狐搜狐

    搜狐网是全球最大的中文门户网站,为用户提供24小时不间断的最新资讯,及搜索、邮件等网络服务。内容包括全球热点事件、突发新闻、时事评论、热播影视剧、体育赛事、行业动态、生活服务信息,以及论坛、博客、微博、我的搜狐等互动空间。

    www.sohu.com
  • 网易网易

    网易是中国领先的互联网技术公司,为用户提供免费邮箱、游戏、搜索引擎服务,开设新闻、娱乐、体育等30多个内容频道,及博客、视频、论坛等互动交流,网聚人的力量。

    www.163.com
  • 新浪新浪

    新浪网为全球用户24小时提供全面及时的中文资讯,内容覆盖国内外突发新闻事件、体坛赛事、娱乐时尚、产业资讯、实用信息等,设有新闻、体育、娱乐、财经、科技、房产、汽车等30多个内容频道,同时开设博客、视频、论坛等自由互动交流空间。

    www.sina.com.cn
  • 百度一下百度一下

    百度一下,你就知道

    www.baidu.com