k8s集群监控(4)-部署node-exporter

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介: 部署node-export ,监控节点基础监控,比如内存,IO,磁盘,CPU等

环境准备


系统Centos 7.9

k8s集群:

版本:1.21.5

节点:

192.168.10.201  master

192.168.10.202  work




image.png


在k8s集群每个节点上,部署node-export



此案例,只在192.168.10.201  master 节点上,安装了node-export,进行改节点的监控


脚本配置:


deploy-node-exporter.sh

#!/bin/bashwgethttps://github.com/prometheus/node_exporter/releases/download/v1.4.0/node_exporter-1.4.0.linux-amd64.tar.gztarzxfnode_exporter-1.4.0.linux-amd64.tar.gzmvnode_exporter-1.4.0.linux-amd64/usr/local/node_exportercat<<EOF>/usr/lib/systemd/system/node_exporter.service[Unit]Descrption=https://prometheus.io[Service]Restart=on-failureExecStart=/usr/local/node_exporter/node_exporter--collector.systemd.unit-whitelist=(docker|kubelet|kube-proxy|flanneld).service[Install]WantedBy=multi-user.targetEOFsystemctldaemon-reloadsystemctlenablenode_exportersystemctlrestartnode_exporter



执行脚本部署node-export


shdeploy-node-exporter.sh



在prometheus 的configmap中,设置对node-exporter 的监控配置




有关prometheus 的部署,请查看 prometheus部署 这篇文章

在这篇文章的部署配置文件中,添加对部署的了node-export的节点

资源监控配置:


image.png


prometheus-configmap.yaml 完整配置:

apiVersion: v1
kind: ConfigMap
metadata:  name: prometheus-config
  namespace: kube-system
  labels:    kubernetes.io/cluster-service: "true"    addonmanager.kubernetes.io/mode: EnsureExists
data:  prometheus.yml: |    scrape_configs:    - job_name: prometheus      static_configs:      - targets:        - localhost:9090    - job_name: kubernetes-nodes      static_configs:      - targets: [192.168.10.201:9100]        labels:           node_name: k201    - job_name: kubernetes-apiservers      kubernetes_sd_configs:      - role: endpoints      relabel_configs:      - action: keep        regex: default;kubernetes;https        source_labels:        - __meta_kubernetes_namespace        - __meta_kubernetes_service_name        - __meta_kubernetes_endpoint_port_name      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    - job_name: kubernetes-nodes-kubelet
      kubernetes_sd_configs:      - role: node
      relabel_configs:      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
      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
    - job_name: kubernetes-nodes-cadvisor
      kubernetes_sd_configs:      - role: node
      relabel_configs:      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
      - target_label: __metrics_path__
        replacement: /metrics/cadvisor
      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
    - job_name: kubernetes-service-endpoints
      kubernetes_sd_configs:      - role: endpoints
      relabel_configs:      - action: keep
        regex: true        source_labels:        - __meta_kubernetes_service_annotation_prometheus_io_scrape
      - action: replace
        regex: (https?)
        source_labels:        - __meta_kubernetes_service_annotation_prometheus_io_scheme
        target_label: __scheme__
      - action: replace
        regex: (.+)
        source_labels:        - __meta_kubernetes_service_annotation_prometheus_io_path
        target_label: __metrics_path__
      - action: replace
        regex: ([^:]+)(?::\d+)?;(\d+)
        replacement: $1:$2
        source_labels:        - __address__
        - __meta_kubernetes_service_annotation_prometheus_io_port
        target_label: __address__
      - action: labelmap
        regex: __meta_kubernetes_service_label_(.+)
      - action: replace
        source_labels:        - __meta_kubernetes_namespace
        target_label: kubernetes_namespace
      - action: replace
        source_labels:        - __meta_kubernetes_service_name
        target_label: kubernetes_name
    - job_name: kubernetes-services
      kubernetes_sd_configs:      - role: service
      metrics_path: /probe
      params:        module:        - http_2xx
      relabel_configs:      - action: keep
        regex: true        source_labels:        - __meta_kubernetes_service_annotation_prometheus_io_probe
      - source_labels:        - __address__
        target_label: __param_target
      - replacement: blackbox
        target_label: __address__
      - source_labels:        - __param_target
        target_label: instance
      - action: labelmap
        regex: __meta_kubernetes_service_label_(.+)
      - source_labels:        - __meta_kubernetes_namespace
        target_label: kubernetes_namespace
      - source_labels:        - __meta_kubernetes_service_name
        target_label: kubernetes_name
    - job_name: kubernetes-pods
      kubernetes_sd_configs:      - role: pod
      relabel_configs:      - action: keep
        regex: true        source_labels:        - __meta_kubernetes_pod_annotation_prometheus_io_scrape
      - action: replace
        regex: (.+)
        source_labels:        - __meta_kubernetes_pod_annotation_prometheus_io_path
        target_label: __metrics_path__
      - action: replace
        regex: ([^:]+)(?::\d+)?;(\d+)
        replacement: $1:$2
        source_labels:        - __address__
        - __meta_kubernetes_pod_annotation_prometheus_io_port
        target_label: __address__
      - action: labelmap
        regex: __meta_kubernetes_pod_label_(.+)
      - action: replace
        source_labels:        - __meta_kubernetes_namespace
        target_label: kubernetes_namespace
      - action: replace
        source_labels:        - __meta_kubernetes_pod_name
        target_label: kubernetes_pod_name


重启prometheus 服务


执行一下命令进行prometheus服务重启:


kubectldelete-fprometheus-configmap.yamlkubectlapply-fprometheus-configmap.yaml



打开prometheus的控制台


image.png














相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
Kubernetes 持续交付 Docker
利用 Docker 和 Kubernetes 实现微服务部署
【10月更文挑战第2天】利用 Docker 和 Kubernetes 实现微服务部署
|
5天前
|
存储 Kubernetes 容器
K8S部署nexus
该配置文件定义了Nexus 3的Kubernetes部署,包括PersistentVolumeClaim、Deployment和服务。PVC请求20Gi存储,使用NFS存储类。Deployment配置了一个Nexus 3容器,内存限制为6G,CPU为1000m,并挂载数据卷。Service类型为NodePort,通过30520端口对外提供服务。所有资源位于`nexus`命名空间中。
|
2月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
138 60
|
2月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
270 62
|
28天前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
1月前
|
存储 Kubernetes Devops
Kubernetes集群管理和服务部署实战
Kubernetes集群管理和服务部署实战
54 0
|
2月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
93 3
|
2月前
|
NoSQL 关系型数据库 Redis
高可用和性能:基于ACK部署Dify的最佳实践
本文介绍了基于阿里云容器服务ACK,部署高可用、可伸缩且具备高SLA的生产可用的Dify服务的详细解决方案。
|
2月前
|
Kubernetes 网络协议 安全
[kubernetes]二进制方式部署单机k8s-v1.30.5
[kubernetes]二进制方式部署单机k8s-v1.30.5
|
2月前
|
Kubernetes Docker 微服务
微服务实践k8s&dapr开发部署实验(1)服务调用(二)
微服务实践k8s&dapr开发部署实验(1)服务调用(二)
65 0