k8s学习(二十五) 使用prometheus监控集群节点

news/2024/5/19 1:19:40 标签: prometheus, prometheus监控集群节点

1、 获取node-exporter

已经打好在”用到的离线包/node-exporter.tar”
在有网机器下载镜像

docker pull prom/node-exporter:v0.16.0
docker save -o node-exporter.tar prom/node-exporter:v0.16.0

将tar包拷贝至有网的机器

2、 将node-exporter放入离线镜像服务器

docker load -i node-exporter.tar
docker tag prom/ node-exporter:v0.16.0 192.168.100.94:80/node-exporter:v0.16.0
docker push 192.168.100.94:80/node-exporter:v0.16.0

3、 使用DemonSet部署node-exporter

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: node-exporter
  namespace: kube-ops
  labels:
    name: node-exporter
spec:
  template:
    metadata:
      labels:
        name: node-exporter
    spec:
      hostPID: true
      hostIPC: true
      hostNetwork: true
      containers:
      - name: node-exporter
        image: 192.168.100.94:80/node-exporter:v0.16.0
        ports:
        - containerPort: 9100
        resources:
          requests:
            cpu: 0.15
        securityContext:
          privileged: true
        args:
        - --path.procfs
        - /host/proc
        - --path.sysfs
        - /host/sys
        - --collector.filesystem.ignored-mount-points
        - '"^/(sys|proc|dev|host|etc)($|/)"'
        volumeMounts:
        - name: dev
          mountPath: /host/dev
        - name: proc
          mountPath: /host/proc
        - name: sys
          mountPath: /host/sys
        - name: rootfs
          mountPath: /rootfs
      tolerations:
      - key: "node-role.kubernetes.io/master"
        operator: "Exists"
        effect: "NoSchedule"
      volumes:
        - name: proc
          hostPath:
            path: /proc
        - name: dev
          hostPath:
            path: /dev
        - name: sys
          hostPath:
            path: /sys
        - name: rootfs
          hostPath:
            path: /
kubectl apply -f prome-node-exporter.yaml
[root@master node-exporter]# kubectl get pods -n kube-ops -owide
NAME                          READY   STATUS    RESTARTS   AGE    IP               NODE     NOMINATED NODE   READINESS GATES
node-exporter-kg427           1/1     Running   0          17s    192.168.100.94   master   <none>           <none>
node-exporter-xk6vm           1/1     Running   0          17s    192.168.100.95   node2    <none>           <none>
node-exporter-z6bpr           1/1     Running   0          17s    192.168.100.96   node3    <none>           <none>
prometheus-5745dbdc87-rjnxj   1/1     Running   1          5d4h   10.244.2.30      node3    <none>           <none>
redis-55d48df69d-xzsvt        2/2     Running   2          5d3h   10.244.1.28      node2    <none>           <none>

4、 部署服务发现

修改prometheus-cm.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
  namespace: kube-ops
data:
  prometheus.yml: |
    global:
      scrape_interval: 15s
      scrape_timeout: 15s
    scrape_configs:
    - job_name: 'prometheus'
      static_configs:
      - targets: ['localhost:9090']
    - job_name: 'traefik'
      static_configs:
        - targets: ['traefik-service.kube-system.svc.cluster.local:8080']
    - job_name: 'redis'
      static_configs:
        - targets: ['redis:9121']
    - job_name: 'kubernetes-nodes'
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - source_labels: [__address__]
        regex: '(.*):10250'
        replacement: '${1}:9100'
        target_label: __address__
        action: replace
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
   # - job_name: 'kubernetes-kubelet'
    #  kubernetes_sd_configs:
     # - role: node
     # scheme: https
      #tls_config:
       # ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        #insecure_skip_verify: true
      #bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      #relabel_configs:
      #- action: labelmap
        #regex: __meta_kubernetes_node_label_(.+)
       #- target_label: __address__
        #replacement: kubernetes.default.svc:443
      #- source_labels: [__meta_kubernetes_node_name]
        #regex: (.+)
        #target_label: __metrics_path__
        #replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
kubectl delete -f prometheus-cm.yaml
kubectl apply –f Prometheus-cm.yaml
[root@master prometheus]# kubectl get services -n kube-ops
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
prometheus   NodePort    10.105.89.6     <none>        9090:30229/TCP      5d4h
redis        ClusterIP   10.100.232.96   <none>        6379/TCP,9121/TCP   5d4h
[root@master prometheus]# curl -X POST http://10.105.89.6:9090/-/reload

访问http://192.168.100.94:30229/targets

在这里插入图片描述
在这里插入图片描述
使用检索条件

sum by (pod_name)(rate(container_cpu_usage_seconds_total{image!="", pod_name!=""}[1m] ))

在这里插入图片描述


http://www.niftyadmin.cn/n/1302506.html

相关文章

谈谈系统认证 (Authentication) 和授权 (Authorization)

这是一个绝大多数人都会混淆的问题。 说简单点就是&#xff1a; 认证 (Authentication)&#xff1a; who&#xff0c;你是谁 授权 (Authorization)&#xff1a; what&#xff0c;你有权限干什么 稍微正式点的说法就是&#xff1a; Authentication&#xff08;认证&#xff09;…

k8s学习(二十六) 使用prometheus监控常用资源对象

1、监控apiserver apiserver 作为 Kubernetes 最核心的组件&#xff0c;当然他的监控也是非常有必要的&#xff0c;对于apiserver 的监控我们可以直接通过 kubernetes 的 Service 来获取&#xff1a; [rootmaster prometheus]# kubectl get services NAME TYPE …

k8s学习(二十七) k8s部署grafana

1、 准备镜像包 在有网络机器下载镜像&#xff1a; docker pull grafana/grafana:5.3.4 docker save -o grafana.tar grafana/grafana:5.3.4 docker pull busybox docker save -o busybox.tar busybox2、 创建PV mkdir -p /data/testgd vi /etc/exports添加 /data/testgd …

谈谈 RPC

RPC&#xff08;Remote Procedure Call&#xff09;&#xff0c;翻译过来就是远程过程调用 。RPC 协议假定某些传输协议的存在&#xff0c;如 TCP 或 UDP&#xff0c;为通信程序之间携带信息数据。在 OSI 网络通信模型中&#xff0c;RPC 跨越了传输层和应用层&#xff0c;RPC 使…

使用jdk原生方式实现一个简单的webservice

一、服务端 1、接口&#xff0c;注意使用注解 package com.zqw.webservice.demo;import javax.jws.WebMethod; import javax.jws.WebService;/*** //TODO** author zhuquanwen* vesion 1.0* date 2019/11/8 21:10* since jdk1.8*/ WebService public interface IHelloWorld {W…

springboot学习(二十三)springboot整合cxf jaxws 发布webservice并调用

例子github地址&#xff1a;https://github.com/zhuquanwen/webservice-demo 其中的cxf模块 1、依赖引入 我使用的是gradle&#xff0c;使用maven转为对应的pom.xml就好 plugins {id java }group com.zqw.test version 1.0-SNAPSHOTsourceCompatibility 1.8repositories {ma…

springboot学习(二十四) springboot整合cxf jaxrs发布webservice使用JSON并调用

例子github地址&#xff1a;https://github.com/zhuquanwen/webservice-demo 其中的cxf模块 1、依赖 我使用的是gradle&#xff0c;使用maven转为对应的pom.xml就好 plugins {id java }group com.zqw.test.clientsourceCompatibility 1.8repositories {maven {url http://ma…

k8s学习(二十八) k8s部署kuboard

1、获取kuboard.yaml 从网址https://kuboard.cn/install-script/kuboard.yaml下载 apiVersion: apps/v1 kind: Deployment metadata:name: kuboardnamespace: kube-systemannotations:k8s.eip.work/displayName: kuboardk8s.eip.work/ingress: "true"k8s.eip.work/s…