侧边栏壁纸
博主头像
背锅小王子博主等级

我从事运维工作有十年之久,主要从事云原生相关的工作,对k8s、devops、servicemesh、可观察性等较为熟悉!

  • 累计撰写 59 篇文章
  • 累计创建 64 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

prometheus应用实践(一)k8s部署

背锅小王子
2022-07-30 / 0 评论 / 0 点赞 / 251 阅读 / 541 字
温馨提示:
本文最后更新于 2022-11-14,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1、prometheus的3种部署方式对比

Prometheus Operator

Prometheus Operator 使用 Kubernetes自定义资源来简化 Prometheus、Alertmanager 和相关监控组件的部署和配置。

kube-prometheus

kube-prometheus提供了基于 Prometheus 和 Prometheus Operator 的完整集群监控堆栈的示例配置。这包括部署多个 Prometheus 和 Alertmanager 实例、指标导出器(例如用于收集节点指标的 node_exporter)、将 Prometheus 链接到各种指标端点的抓取目标配置,以及用于通知集群中潜在问题的示例警报规则。

community helm chart

prometheus-community/kube-prometheus-stack helm chart 提供了与 kube-prometheus 类似的功能集。此图表由 Prometheus 社区维护。

通过对比可以看出kube-prometheus功能更加强大,所以我们使用kube-prometheus

2、部署kube-prometheus

图片-1659193643841

kube-prometheus和k8s之间的版本对应关系,因为我使用的k8s版本为1.22.0,因此需要安装release-0.10版本

下载kube-prometheus

wget https://github.com/prometheus-operator/kube-prometheus/archive/refs/tags/v0.10.0.tar.gz
tar xf v0.10.0.tar.gz && mv kube-prometheus-0.10.0 kube-prometheus && cd kube-prometheus

为grafana创建pvc:grafana-pvc.yml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: grafana-pvc
  namespace: monitoring
spec:
  storageClassName:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi

修改grafana-deployment.yaml

volumes:
  #- emptyDir: {}
  #  name: grafana-storage
  - name: grafana-storage
    persistentVolumeClaim:
      claimName: grafana-pvc

因为告警规则都是英文,使用不方便,所以都统一删除,后期再添加中文告警模板

rm -rf *-prometheusRule.yaml

部署kube-prometheus

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

3、配置ingress访问

分别为grafana、prometheus、alertmanager配置ingress,方便访问,使用traefik的IngressRoute方式配置如下:

grafana-ing.yml

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: grafana
  namespace: monitoring
spec:
  entryPoints:
    - web
  routes:
    - kind: Rule
      match: Host(`grafana.bgxwz.com`)
      services:
        - name: grafana
          port: 3000

prometheus-ing.yml

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: prometheus
  namespace: monitoring
spec:
  entryPoints:
    - web
  routes:
    - kind: Rule
      match: Host(`prometheus.bgxwz.com`)
      services:
        - name: prometheus-k8s
          port: 9090

alertmanager-ing.yml

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: alertmanager
  namespace: monitoring
spec:
  entryPoints:
    - web
  routes:
    - kind: Rule
      match: Host(`alertmanager.bgxwz.com`)
      services:
        - name: alertmanager-main
          port: 9093
0

评论区