使用Prometheus操作符和数据库卷为k8s

问题描述 投票:15回答:4

我们正在尝试用Grafana和Prometheus Operator监控K8S 大多数指标都按预期工作,我能够看到具有正确值的仪表板,我们的系统包含10个节点,总共500个pod,现在当我重新启动Prometheus时,所有数据都被删除了(我希望它存储为两个我的问题是,如何定义Prometheus音量以保持数据两周或100GB DB。我找到了以下(我们用户Prometheus运营商)

https://github.com/coreos/prometheus-operator/blob/master/Documentation/user-guides/storage.md

这是Prometheus操作员的配置

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  labels:
    k8s-app: prometheus-operator
  name: prometheus-operator
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: prometheus-operator
  template:
    metadata:
      labels:
        k8s-app: prometheus-operator
    spec:
      containers:
      - args:
        - --kubelet-service=kube-system/kubelet
        - --logtostderr=true
        - --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1
        - --prometheus-config-reloader=quay.io/coreos/prometheus-config-reloader:v0.29.0
        image: quay.io/coreos/prometheus-operator:v0.29.0
        name: prometheus-operator
        ports:
        - containerPort: 8080
          name: http

这是普罗米修斯的配置

    apiVersion: monitoring.coreos.com/v1
    kind: Prometheus
    metadata:
      name: prometheus
      namespace: monitoring
      labels: 
        prometheus: prometheus
    spec:
      replica: 2
      serviceAccountName: prometheus
      serviceMonitorNamespaceSelector: {}
      serviceMonitorSelector:
        matchLabels:
          role: observeable
      tolerations:
      - key: "WorkGroup"
        operator: "Equal"
        value: "operator"
        effect: "NoSchedule"
      - key: "WorkGroup"
        operator: "Equal"
        value: "operator"
        effect: "NoExecute"
      resources:
        limits:
          cpu: 8000m
          memory: 24000Mi
        requests:
          cpu: 6000m
          memory: 6000Mi
     storage:
       volumeClaimTemplate:
         spec:
        selector:
          matchLabels:
            app: prometheus
        resources:
          requests:
            storage: 100Gi

https://github.com/coreos/prometheus-operator/blob/master/Documentation/user-guides/storage.md

我们有文件系统(nfs),上面的存储配置不起作用,我的问题是:

  1. 我在这里想念的是如何在volume部分下面配置serverpathnfs

我应该在哪里找到这个“/ path / to / prom / db”?我怎么能参考呢?我应该以某种方式创建它,或者只提供路径。我们在系统中配置了nfs

  1. 如何将它与普罗米修斯结合起来

由于我对qazxsw poi和qazxsw poi没有深入的了解,我创造了以下内容(不确定这些值,我的服务器是什么,我应该提供什么样的路径......

pvc

我应该把它放在那里以及我如何制作我的普罗米修斯(即我在问题中提供的配置)来使用它

pv

如果除了server: myServer path: "/path/to/prom/db" 之外还有其他任何持久性卷,我可以用于我的用例请咨询如何

amazon-web-services kubernetes google-cloud-platform prometheus prometheus-operator
4个回答
1
投票

您必须使用持久性卷和卷声明(PV和PVC)来保留持久数据。您可以参考“apiVersion: v1 kind: PersistentVolume metadata: name: prometheus namespace: monitoring labels: app: prometheus prometheus: prometheus spec: capacity: storage: 100Gi accessModes: - ReadWriteOnce # required nfs: server: myServer path: "/path/to/prom/db" ”必须仔细查看上面的网址中的配置,回收策略,访问模式,存储类型。


1
投票

要确定何时删除旧数据,请使用此开关nfs

例如https://kubernetes.io/docs/concepts/storage/persistent-volumes/(默认情况下,普罗米修斯保存数据15天)。

要完全删除数据,请使用此API调用:

--storage.tsdb.retention

编辑

Kubernetes片段样本

--storage.tsdb.retention='7d'

1
投票

请参考以下代码。将storage-retention定义为7d或configmap中所需的保留天数,并将其作为env变量加载到容器中,如下所示

$ curl -X POST -g 'http://<your_host>:9090/api/v1/admin/tsdb/<your_index>'

您可能需要在prometheus操作员文件中调整这些设置


0
投票

我最近开始使用操作员图表,

并设法在不定义pv和pvc的情况下添加持久性。

在新图表配置中,添加持久性比您描述的更容易,只需在prometheus.prometheusSpec下编辑文件/helm/vector-chart/prometheus-operator-chart/values.yaml:

...
 spec:
      containers:
      - name: prometheus
        image: docker.io/prom/prometheus:v2.0.0
        args:
          - '--config.file=/etc/prometheus/prometheus.yml'
          - '--storage.tsdb.retention=7d'
        ports:
        - name: web
containerPort: 9090
...

并添加此/helm/vector-chart/prometheus-operator-chart/templates/prometheus/storageClass.yaml:

      containers:
      - name: prometheus
        image: image: prom/prometheus:latest
        args:
          - '--storage.tsdb.path=/prometheus'
          - '--storage.tsdb.retention=$(STORAGE_RETENTION)'
          - '--web.enable-lifecycle'
          - '--storage.tsdb.no-lockfile'
          - '--config.file=/etc/prometheus/prometheus.yml'
        ports:
        - name: web
          containerPort: 9090
        env:
        - name: STORAGE_RETENTION
          valueFrom:
            configMapKeyRef:
              name: prometheus.cfg
              key: storage-retention

这将自动创建pv和pvc,它将在aws中创建一个ebs,它将存储您的所有数据。

© www.soinside.com 2019 - 2024. All rights reserved.