zoukankan      html  css  js  c++  java
  • Prometheus Operator和kube-prometheus

    处理直接在k8s中部署Prometheus,还可以先部署Prometheus Operator,通过它来部署Prometheus:
     
    在部署Operator控制器前,需要创建5个CRD:
    • Prometheus
    作为Prometheus Server的抽象
    • ServiceMonitor
    作为各种exporter(专门提供metrics数据接口的工具)的抽象
    Prometheus通过ServiceMonitor提供的metrics数据接口pull数据的。
    一个ServiceMonitor可以通过labelSelector的方式去匹配一类Service,Prometheus也可以通过labelSelector去匹配多个ServiceMonitor;
    • alertmanager
    作为AlertManager的抽象
    • PrometheusRule
    被Prometheus实例使用的报警规则文件
    • PodMonitor
    定义了监控哪些Pod
     
    后来又新增了3个:
    • Probe
    定义了静态监控目标
    • ThanosRuler
    • AlertmanagerConfig
    定义了该Namespace下的Alertmanager配置
     
    Operator作为控制器,会去创建这些资源对象,然后一直监控并维持它们的状态
    直接操作这些资源对象,就可以在集群中监控数据
     
    prometheus提供了kube-prometheus项目,默认将Operator默认部署在名为monitoring的namespace,还提供了以下组件的yaml文件:
    • grafana
    • node-exporter
    • alart-manager
    • prometheus
    根据prometheus-prometheus.yaml等文件的描述,以statefulset方式启动的Prometheus Server,从node-exporter、cadvisor拉取数据并存储为时序数据。
    自带的UI监听在9090端口,建议改成NodePort方式对外暴露
    • kube-state-metrics
    监听k8s apiserver中各个对象(deployment、Pod、Node等)的事件,对外提供metrics
    • k8s-prometheus-adpater
    它是一个API服务器,提供了一个APIServer服务,名为custom-metrics-apiserver,这个自定义APIServer通过Kubernetes aggregator聚合到apiserver
    将prometheus中可以用PromQL查询到的指标数据转换成k8s对应的数据格式,在API组custom.metrics.k8s.io中提供出来
     
     
    其它
    cadvisor:集成于kubelet中的cAdvisor模块负责采集运行于当前节点上所有Pod资源(cpu、memory、network、filesystem等)使用情况,按Node、Pod、Container三种级别计算汇总后,通过/stats/summary 和/metrics/cadvisor两个接口分别向metrics-server提供核心监控指标、向Prometheus提供业务监控指标
     
    通过ServiceMonitor监控etcd:
    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      labels:
        k8s-app: etcd
      name: etcd
      namespace: monitoring
    spec:
      endpoints:
      - interval: 30s
        port: https-metrics
        scheme: https
        tlsConfig:
          insecureSkipVerify: true
      jobLabel: k8s-app
      namespaceSelector:
        matchNames:
        - kube-system
      selector:
        matchLabels:
          k8s-app: etcd
    此处insecureSkipVerify: true表示跳过证书认证
     
    如果不允许跳过,需要预先把证书配到prometheus里
    (1)使用给etcd签名的CA公钥、进行healthcheck的客户端公钥私钥创建secret:
    kubectl -n monitoring create secret generic etcd-certs --from-file=xxx --from-file=xxx --from-file=xxx
    (2)描述prometheus状态的自定义资源对象prometheus里,添加此secret:
        secret:
        - etcd-certs
    prometheus会将这三个文件放在/etc/prometheus/secrets/etcd-certs下
    (3)tlsConfig改成:
        tlsConfig:
          caFile: /etc/prometheus/secrets/etcd-certs/xxx
          certFile: /etc/prometheus/secrets/etcd-certs/xxx
          keyFile: /etc/prometheus/secrets/etcd-certs/xxx
     
    如果etcd不是k8s内部服务方式部署的,需要自己创建service:
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        k8s-app: etcd
      name: etcd
      namespace: kube-system
    spec:
      type: ClusterIP
      clusterIP: None
      ports:
      - name: https-metrics
        port: 2379
        protocol: TCP
        targetPort: 2379
    自己配置endpoints:
    apiVersion: v1
    kind: Endpoints
    metadata:
      labels:
        k8s-app: etcd
      name: etcd
      namespace: kube-system
    subsets:
    - addresses:
      - ip: 132.252.136.99
      - ip: 132.252.136.100
      - ip: 132.252.136.101
      - ip: 132.252.136.102
      - ip: 132.252.136.103
      ports:
      - name: https-metrics
        port: 2379
        protocol: TCP
    kube-proxy配置同理
     
    kube-prometheus已经提供了kube-controller-manager、kube-scheduler的ServiceMonitor,但如果是二进制部署的,同样需要创建service,并且修改k8s自带的endpoints
     
    kube-apiserver、kubelet等的ServiceMonitor同样已提供,但即使是二进制部署,也不需要再自行创建它们的service和endpoints
     
    此外,还默认集成了coredns的ServiceMonitor
  • 相关阅读:
    BZOJ3899 仙人掌树的同构(圆方树+哈希)
    BZOJ3590 SNOI2013Quare(状压dp)
    BZOJ2178 圆的面积并(simpson积分)
    BZOJ3724 PA2014Final Krolestwo(欧拉回路+构造)
    BZOJ3589 动态树(树链剖分+容斥原理)
    BZOJ3453 XLkxc(拉格朗日插值)
    BZOJ4650 NOI2016优秀的拆分(后缀数组)
    Luogu5058 ZJOI2004嗅探器(割点)
    shutil模块---文件,文件夹复制、删除、压缩等处理
    面向过程---通过查找字符串,找到相应的文件路径
  • 原文地址:https://www.cnblogs.com/yangyuliufeng/p/14906481.html
Copyright © 2011-2022 走看看