温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在Kubernetes中手动方式部署Prometheus联邦

发布时间:2022-01-07 14:57:48 阅读:188 作者:iii 栏目:云计算
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章主要介绍“怎么在Kubernetes中手动方式部署Prometheus联邦”,在日常操作中,相信很多人在怎么在Kubernetes中手动方式部署Prometheus联邦问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在Kubernetes中手动方式部署Prometheus联邦”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!


怎么在Kubernetes中手动方式部署Prometheus联邦    

当我们有多个Kubernetes集群的时候,这个时候就需要需要指标汇总的需求了,如上图一样,我们假定在外部部署一个Prometheus的Federate,然后去采集当前k8s中的kube-system与default俩个 namespace。

 

环境

我的本地环境使用的 sealos 一键部署,主要是为了便于测试。

OSKubernetesHostNameIPService
Ubuntu 18.041.17.7sealos-k8s-m1192.168.1.151node-exporter prometheus-federate-0
Ubuntu 18.041.17.7sealos-k8s-m2192.168.1.152node-exporter grafana alertmanager-0
Ubuntu 18.041.17.7sealos-k8s-m3192.168.1.150node-exporter alertmanager-1
Ubuntu 18.041.17.7sealos-k8s-node1192.168.1.153node-exporter prometheus-0 kube-state-metrics
Ubuntu 18.041.17.7sealos-k8s-node2192.168.1.154node-exporter prometheus-1
Ubuntu 18.041.17.7sealos-k8s-node2192.168.1.155node-exporter prometheus-2
 

部署 Prometheus联邦集群

创建prometheus-federate数据目录

# 在m1上执行mkdir /data/prometheus-federate/chown -R 65534:65534 /data/prometheus-federate/
 

创建Prometheus联邦 StorageClass 配置文件

cd /data/manual-deploy/prometheus/cat prometheus-federate-storageclass.yamlapiVersion: storage.k8s.io/v1kind: StorageClassmetadata:  name: prometheus-federate-lpvprovisioner: kubernetes.io/no-provisionervolumeBindingMode: WaitForFirstConsumer
 

创建Prometheus联邦pv配置文件

apiVersion: v1kind: PersistentVolumemetadata:  name: prometheus-federate-lpv-0spec:  capacity:    storage: 10Gi  volumeMode: Filesystem  accessModes:  - ReadWriteOnce  persistentVolumeReclaimPolicy: Retain  storageClassName: prometheus-federate-lpv  local:    path: /data/prometheus-federate  nodeAffinity:    required:      nodeSelectorTerms:      - matchExpressions:        - key: kubernetes.io/hostname          operator: In          values:          - sealos-k8s-m1
 

创建Prometheus联邦configmap配置文件

cat prometheus-federate-configmap.yamlapiVersion: v1kind: ConfigMapmetadata:  name: prometheus-federate-config  namespace: kube-systemdata:  alertmanager_rules.yaml: |    groups:    - name: example      rules:      - alert: InstanceDown        expr: up == 0        for: 1m        labels:          severity: page        annotations:          summary: "Instance {{ $labels.instance }} down"          description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes."      - alert: NodeMemoryUsage        expr: (node_memory_MemTotal_bytes -(node_memory_MemFree_bytes+node_memory_Buffers_bytes+node_memory_Cached_bytes )) / node_memory_MemTotal_bytes * 100 > 80        for: 1m        labels:          team: ops        annotations:          summary: "cluster:{{ $labels.cluster }} {{ $labels.instance }}: High Memory usage detected"          description: "{{ $labels.instance }}: Memory usage is above 55% (current value is: {{ $value }}"  prometheus.yml: |    global:      scrape_interval:     30s      evaluation_interval: 30s    alerting:      alertmanagers:      - static_configs:        - targets:            - alertmanager-0.alertmanager-operated:9093            - alertmanager-1.alertmanager-operated:9093          rule_files:      - "/etc/prometheus/alertmanager_rules.yaml"    scrape_configs:      - job_name: 'federate'        scrape_interval: 30s        honor_labels: true        metrics_path: '/federate'        params:          'match[]':            - '{job=~"kubernetes.*"}'            - '{job="prometheus"}'        static_configs:          - targets:            - 'prometheus-0.prometheus:9090'            - 'prometheus-1.prometheus:9090'            - 'prometheus-2.prometheus:9090'
 

创建Prometheus联邦的statefulse文件

cat prometheus-federate-statefulset.yamlapiVersion: apps/v1kind: StatefulSetmetadata:  name: prometheus-federate  namespace: kube-system  labels:    k8s-app: prometheus-federate    kubernetes.io/cluster-service: "true"spec:  serviceName: "prometheus-federate"  podManagementPolicy: "Parallel"  replicas: 1  selector:    matchLabels:      k8s-app: prometheus-federate  template:    metadata:      labels:        k8s-app: prometheus-federate      annotations:        scheduler.alpha.kubernetes.io/critical-pod: ''    spec:      affinity:        podAntiAffinity:          requiredDuringSchedulingIgnoredDuringExecution:          - labelSelector:              matchExpressions:              - key: k8s-app                operator: In                values:                - prometheus-federate            topologyKey: "kubernetes.io/hostname"      priorityClassName: system-cluster-critical      hostNetwork: true      dnsPolicy: ClusterFirstWithHostNet      containers:      - name: prometheus-federate-configmap-reload        image: "jimmidyson/configmap-reload:v0.4.0"        imagePullPolicy: "IfNotPresent"        args:          - --volume-dir=/etc/config          - --webhook-url=http://localhost:9091/-/reload        volumeMounts:          - name: config-volume            mountPath: /etc/config            readOnly: true        resources:          limits:            cpu: 10m            memory: 10Mi          requests:            cpu: 10m            memory: 10Mi        securityContext:            runAsUser: 0            privileged: true      - image: prom/prometheus:v2.20.0        imagePullPolicy: IfNotPresent        name: prometheus        command:          - "/bin/prometheus"        args:          - "--web.listen-address=0.0.0.0:9091"          - "--config.file=/etc/prometheus/prometheus.yml"          - "--storage.tsdb.path=/prometheus"          - "--storage.tsdb.retention=24h"          - "--web.console.libraries=/etc/prometheus/console_libraries"          - "--web.console.templates=/etc/prometheus/consoles"          - "--web.enable-lifecycle"        ports:          - containerPort: 9091            protocol: TCP        volumeMounts:          - mountPath: "/prometheus"            name: prometheus-federate-data          - mountPath: "/etc/prometheus"            name: config-volume        readinessProbe:          httpGet:            path: /-/ready            port: 9091          initialDelaySeconds: 30          timeoutSeconds: 30        livenessProbe:          httpGet:            path: /-/healthy            port: 9091          initialDelaySeconds: 30          timeoutSeconds: 30        resources:          requests:            cpu: 100m            memory: 100Mi          limits:            cpu: 1000m            memory: 2500Mi        securityContext:            runAsUser: 0            privileged: true      serviceAccountName: prometheus      volumes:        - name: config-volume          configMap:            name: prometheus-federate-config  volumeClaimTemplates:    - metadata:        name: prometheus-federate-data      spec:        accessModes: [ "ReadWriteOnce" ]        storageClassName: "prometheus-federate-lpv"        resources:          requests:            storage: 5Gi       
 

创建Prometheus联邦的svc文件

cat prometheus-service-statefulset.yamlapiVersion: v1kind: Servicemetadata:  name: prometheus  namespace: kube-systemspec:  ports:    - name: prometheus      port: 9090      targetPort: 9090  selector:    k8s-app: prometheus  clusterIP: None
 

部署

cd /data/manual-deploy/prometheus/prometheus-federate-configmap.yamlprometheus-federate-pv.yamlprometheus-federate-service-statefulset.yamlprometheus-federate-statefulset.yamlprometheus-federate-storageclass.yamlkubectl apply -f prometheus-federate-storageclass.yamlkubectl apply -f prometheus-federate-pv.yamlkubectl apply -f prometheus-federate-configmap.yamlkubectl apply -f prometheus-federate-statefulset.yamlkubectl apply -f prometheus-federate-service-statefulset.yaml
 

验证

# pvkubectl -n kube-system get pvc |grep federateprometheus-federate-data-prometheus-federate-0   Bound    prometheus-federate-lpv-0   10Gi RWO   prometheus-federate-lpv 4hkubectl -n kube-system get pod |grep federateprometheus-federate-0                      2/2     Running   0          2d4h
 

对此,联邦的配置就完成了,可以在浏览器中访问192.168.1.151:9091查看相应的targets信息,以及配置的rules规则,触发下警报,看看Alertmanager集群已经部署成功了。

怎么在Kubernetes中手动方式部署Prometheus联邦

到此,关于“怎么在Kubernetes中手动方式部署Prometheus联邦”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/u/3475597/blog/4555639

AI

开发者交流群×