美文网首页
kubernetes集群一键部署prometheus+grafa

kubernetes集群一键部署prometheus+grafa

作者: Foghost | 来源:发表于2020-11-09 14:56 被阅读0次

    Prometheus是CNCF基金会继Kubernetes之后第二个正式项目,是一个开源的完整监控报警解决方案,无外部依赖,单机部署十分简单,可以用各种exporter进行扩展,支持自定义监控,并且grafana原生支持Prometheus数据源,可以做出非常好看的监控界面,定制化程度非常高。

    Prometheus可以与kubernetes无缝集成,社区维护了一个prometheus-operator来帮助Prometheus在k8s中

    自动化部署,简化配置流程,提供自动发现服务并加入监控的能力。

    prometheus-operator的使用方法对小白并不友好,用户需要理解kubernetes的CRD及了解prometheus-operator提供的CRD的作用和使用方法。这里比较推荐使用kube-prometheus,对于想一键部署整套监控组件的小伙伴非常有用。

    1. 用kube-prometheus部署prometheus

    首先下载kube-prometheus项目的源码到集群的物理机上,解压后进入文件夹执行

    kubectl create -f manifests/setup
    until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done
    kubectl create -f manifests/
    

    如果镜像都能成功拉取下来的话,部署到这里就结束了,非常简单,并且已经自动配置好了集群基础组件的监控报警和grafana监控图表,对于不能访问外网的同学可以将yaml中用到的镜像推送到私有仓库中并替换掉yaml中对应的镜像地址再执行以上的命令。

    kube-prometheus是一个组件集合,它包括了prometheus-operator、alertmanager、node-exporter、

    k8s-prometheus-adapter、kube-state-metrics、grafana,并且包含了他们的常用配置且将他们有机结合起来组织成一套监控报警系统,如果我们自己去一个个部署配置这些组件的话会将会花费很大的精力和时间。

    需要注意的一点是如果我们的集群apiserver是物理机部署的话需要在kube-state-metrics-deployment.yaml加入hostNetwork: true否则apiserver部分监控不到。

    部署成功后可以在集群中看到以下组件:

    image.png

    如果你了解k8s的CRD的话也可以在manifests文件夹里的yaml上直接定制一些配置,比如修改prometheus的数据保留时间:

    apiVersion: monitoring.coreos.com/v1
    kind: Prometheus # prometheus-operator 定义的 CRD
    metadata:
      labels:
        prometheus: k8s
      name: k8s
      namespace: monitoring
    spec:
      retention: 10d # 数据保留时间 10天,默认24小时
      alerting:
        alertmanagers:
        - name: alertmanager-main
          namespace: monitoring
          port: web
      baseImage: harbor.58corp.com/wcs/prom/prometheus
      nodeSelector:
        beta.kubernetes.io/os: linux
      replicas: 2
      resources:
        requests:
          memory: 400Mi
      ruleSelector:
        matchLabels:
          prometheus: k8s
          role: alert-rules
      securityContext:
        fsGroup: 2000
        runAsNonRoot: true
        runAsUser: 1000
      serviceAccountName: prometheus-k8s
      serviceMonitorNamespaceSelector: {}
      serviceMonitorSelector: {}
      version: v2.21.0
    
    

    更多选项可以参考 https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md

    相关文章

      网友评论

          本文标题:kubernetes集群一键部署prometheus+grafa

          本文链接:https://www.haomeiwen.com/subject/zljlbktx.html